LINUX.ORG.RU

Избранные сообщения ronkajitsu

Gentoo на ZFS

Галерея — Скриншоты

Не спрашивайте - зачем. Просто так, потому что можно. Ну и к тому же можно ссылаться на этот топик в ответ на вбросы бздунов насчёт «а этот ваш Линукс умеет ZFS?». Умеет, как видите.

Краткий мануал по красноглазию:

1) Создаём раздел для ZFS. После этого потребуется создать пул. Пул - это что-то вроде виртуального устройства.

zpool create zero /dev/sda2

«zero» - это моё название пула. У вас оно может быть любым другим. Просто создать пул как-то неинтересно, поэтому повключаем всякие разные плюшки ZFS. Включаем дедупликацию:

zfs set dedup=on zero

и сжатие:

zfs set compress=lzjb zero

и отключаем обновление временных меток:

zfs set atime=off zero

ну и отключаем монтирование средствами самой ZFS дабы избежать неудобств на стадии сборки системы в chroot:

zfs set mountpoint=legacy zero

2) Теперь у нас есть чистый пул, но пул - это ещё не ФС. Чтобы установить туда систему, нужно создать файловые системы на этом пуле. Прелесть ZFS в том, что на одном пуле можно создать кучу ФС, каждой из которых можно задать свои опции. Например, я создал ФС для корня (и уже при создании говорим zfs, что монтировать создаваемые ФС мы будем вручную через mount):

zfs create -o mountpoint=legacy zfs/system

Эта ФС унаследовала все опции (дедупликация, сжатие) от пула, потому что для корня такие опции, в общем-то, неплохи. Далее я создал ФС специально для дерева portage, оверлеев и каталога с исходниками ядра:

zfs create -o mountpoint=legacy zfs/src

Так как на этой ФС будет куча текстовых файлов, обращаться к которым придётся сравнительно редко, здесь имеет смысл задействовать несколько иные опции. Например, усилить сжатие (после дефиса указана степень сжатия, диапазон - от 1 до 9, по умолчанию 6):

zfs set compress=gzip-9 zero/src

и отключить дедупликацию (мне подумалось, что дедупликация на ФС с тоннами мелких файлов будет сильно отжирать ресурсы, да и сильное сжатие вполне экономит место):

zfs set dedup=off zfs/src

Отдельная ФС для /home:

zfs create -o mountpoint=legacy zero/home

Опции пусть будут унаследованы от пула. Далее я перестраховался и создал отдельную ФС для /var, потому что в какой-то там рассылке видел упоминание каких-то багов при дедупликации на /var. Посты были датированы ещё прошлым годом, с тех пор утекло много воды, но бережёного случай бережёт:

zfs create -o mountpoint=legacy zero/var
zfs set dedup=off zero/var

3) Далее у нас стандартная сборка Gentoo. Монтируем будущий корень:

mount -t zfs zero/system /mnt/system

и остальные ФС:

mount -t zfs zero/src /mnt/system/src
mount -t zfs zero/home /mnt/system/home
mount -t zfs zero/var /mnt/system/var
mount /dev/sda1 /mnt/system/boot

После чего монтируем нужные виртуальные ФС (proc, dev, sys), монтируем хранилище архивов с исходниками пакетов, в общем, всё по хэнбуку, поэтому не стану заострять на этом внимания. Внимание требуется на этапе установки и сборки ядра. Устанавливать нужно это милое ядрышко (перед этим нужно будет включить флаг zfs, я думаю, разберётесь сами):

layman -a init6
emerge geek-sources

На этапе сборки ядра нужно учесть некоторые детали. Например, в мануалах написано, что нужно включить опцию CONFIG_KALLSYMS и отключить CONFIG_PREEMPT (т.е. установить её в значение «Server») Первую-то я включил, а отключать вторую меня жаба задавила (эта опция влияет на отзывчивость ядра), тем более что на Гитхабе я читал, что в последних версиях zfsonlinux проблемы с этой опцией ядра устранены. После этого, конечно, включаем SPL и ZFS. Первая опция находится прямо в корне конфигуратора, а вторая - в секции «File systems». А вот далее важно не пойти на поводу мануалов Гитхаба, ибо это чревато феерическим ментальным трахом. В мануалах тех написано, что нужно добавить указанный там оверлей и установить оттуда особые версии dracut и genkernel для сборки initramfs с поддержкой ZFS, ибо даже жёсткое включение ZFS в ядро не позволяет загрузить систему с корня ZFS (нужны утилиты для работы с ZFS, которые должны находиться в initramfs). Собственно, я так и сделал. После чего на протяжении дня сношался с кривоглючным dracut, упорно не желавшим включать утилиты ZFS в initramfs. Я даже вытягивал какие-то древние версии dracut и устанавливал их через make install, потом уже добавлял нужные файлы в initramfs вручную - чего я только ни делал! А оказалось, что нужно было тупо забить на эти горе-мануалы и установить самый стандартный genkernel из официального дерева. И всё правильно собирается следующей командой:

genkernel all --no-clean --makeopts=-j16 --zfs --bootloader=grub2

вот и вся недолга. Если перед этим вы успели собрать и установить Grub2, то genkernel сам добавит в grub.cfg нужные опции (укажет ФС, с которой грузить систему, в моём случае это zero/system).

На стадии формирования списка загружаемых демонов нужно сделать следующее:

rc-update add zfs boot
rc-update add zfs-shutdown shutdown

4) Монтирование файловых систем ZFS. Вообще, монтировать их можно двумя способами: посредством утилиты zfs через задание точки монтирования:

zfs set mountpoint=$DIR $FS

или через fstab с предварительным отключением автомонтирования:

zfs set mountpoint=legacy $FS

Запись в fstab для, например, корня, не содержит ничего сверхъестественного:

zero/system        /        zfs        noatime        0 0

Способ монтирования выбирать вам. Следует лишь иметь в виду, что при монтировании через fstab zfs-shutdown будет ругаться при выключении.

5) Вообще это нужно делать раньше, но, в принципе, пофиг:

hostid > /etc/hostid (это в chroot)
cp /etc/zfs/zpool.cache /mnt/system/etc/zfs

6) Если у вас меньше 2 Гб оперативки, то ZFS своим кэшем может сожрать всю раму и завесить систему. Поэтому имеет смысл ограничить её аппетиты:

echo "options zfs zfs_arc_max=512M" > /etc/modprobe.d/zfs.conf

Я выставил 1 Гб.

7) Отмонтируем все ФС, делаем

zpool export zero

и перезагружаемся в свежую систему. Не знаю, как получится у вас, а лично у меня initramfs не может импортировать пул и потому вываливается в busybox. Не проблема, входим в его шелл и импортируем пул вручную:

zpool import zero
exit

и система далее нормально загружается.

Какие профиты? Ну, она явно быстрее ранее используемой мной Btrfs. Опять же, на Btrfs нет дедупликации, и сжатие можно применить/отключить только на весь раздел. Сжатие lzjb не так заметно экономит место (это просто быстрый алгоритм), а вот gzip-9 сжал дерево portage с 350 Мб до 256 Мб, а каталог исходников ядра - так вообще в 2 раза, с 800 с лишним Мб до 400 с лишним. Причём на скорости сборки ядра это практически не отразилось (замерял через time). А ещё в ZFS есть контрольные суммы, так что о целостности системы можно вообще не беспокоиться. Но самое главное, конечно - это снапшоты. Я, попробовав раз снапшоты ещё в Btrfs, так и не смог от них отказаться.

Маленькое дополнение: почитав преисполненные страха комментарии про снижение скорости из-за дедупликации я её таки отключил на всех ФС. И ещё: возможно, я что-то не так делал, но монтирование ZFS посредством утилиты zfs я так и не осилил нормально. В итоге я просто выставил legacy на все ФС, внёс их в fstab и выкинул zfs-shutdown из скриптов выключения.

 , , , ,

Kindly_Cat
()

Still pimping awesome

Галерея — Скриншоты

С прошлого раза изменилось немного. Проще по пунктам:

  • дневной/ночной режимы. По известному алгоритму высчитываю для текущего дня и заданых координат время восхода/заката, и в это время тема меняется. Меняются также gtk темы. Единственное, что не осилил - чтобы переключались темы огнелиса, ну тут уже хз что делать. Скрин ночного режима: http://i.imgur.com/za9sR.png
  • календарь (который парсит org-mode файлы) теперь интегрирован с Google Calendar. Пока только в одну сторону - события подкачиваются с гугла и преобразовываются в org.
  • с щелчком по виджету процессов открывается меню, с которого процессы можно убивать. Удобно наказывать зарвавшийся plugin-container.
  • треугольные часы для ночной темы. На**я? Не знаю.

Положения виджетов не особо хорошо подогнаны, все еще экспериментирую с обоями. С шрифтами тоже, надо наверное пересадить логи на моноширинный шрифт (правда тогда мало текста помещается).

ШГ и «двое часов» можно не писать, и так осведомлен.

 

unlog1c
()

Pimp my awesome

Галерея — Скриншоты

Решил показать то недоразумение, которое выполняет у меня роль рабочего стола. Итак, lo and behold. На скрине Arch Linux, последний собранный из репозитория awesome, cairo-compmgr. Всё на экране сделано через Awesome, никаких коньков.

Еще скрины:
[2] http://i.imgur.com/O9KTh.png
[3] http://i.imgur.com/J2HsF.png
[4] http://i.imgur.com/F1xfm.jpg - на десерт

Ниже будет описание скринов и из чего это всё сделано, можете дальше не читать.

Скрин 1
По центру обычные отрисованные cairo часы, под ними погода. Можно задать одно напоминание, и оно отобразится на часах голубой стрелкой, а так же в тексте под ними (и высветится сообщением, когда придет время).
Справа сверху календарь и agenda, составленная по org-mode файлу. Об этом я уже когда-то писал, но на всякий ссылка: http://awesome.naquadah.org/wiki/Orglendar_widget
Слева внизу виджет для просмотра логов. Между логами можна переключаться, а также скроллить текущий. Сделано через inotify и dbus.
Справа внизу простой виджет для просмотра наиболее ресурсопоглощающих процессов. Переключается между CPU и RAM.

Скрин 2
Строка сверху (под статусной панелью) - аналог dmenu для awesome. Парсит /usr/share/applications/ на предмет *.desktop файлов, раскидывает их по категориям и выводит в виде строки. Естественно, можно перемещаться между пунктами стрелками, заходить внутрь категории и набирать текст для фильтрации видимых приложений.
Линк: http://awesome.naquadah.org/wiki/Menubar

Скрин 3
Поскольку мне не удалось отложить из завтраков денег на SublimeText, пришлось учить Emacs новым трюкам.[/sarcasm] Нет, серьезно, за это кто-то платит деньги?
В правом верхнем углу оповещение от Awesompd, который дорос до версии 1.1. Из новых фич: обложки теперь показываются и для локальных треков (раньше было только для Jamendo-стримов), можно из меню открыть в браузере страницу исполнителя текущей песни на Jamendo, появилась поддержка клавиатурных хоткеев.
Линк: http://awesome.naquadah.org/wiki/Awesompd_widget

Скрин 4
Lightdm и unity-greeter, обернутые в скрипт, который при каждом запуске ставит фоном случайное изображение из папки.

 , ,

unlog1c
()

Завершён перевод книги «Pro Git»

Новости — Документация
Группа Документация

Что может быть лучшим подарком на день знаний для линуксоида? Конечно, полезная книга ;) Поэтому команда переводчиков «Pro Git» поднапряглась и доделала перевод книги на русский язык.

«Pro Git» — это довольно обширная обучающая книга о Git от Скотта Шакона — активного участника разработки проектов Git и GitHub. Автор рассматривает в тексте всевозможные аспекты работы с Git'ом, начиная с установки программы и базовых принципов работы децентрализованных систем контроля версий, и заканчивая рассмотрением внутреннего устройства Git'а и созданием валидных объектов в базе Git'а собственными руками. Несмотря на довольно обширный материал и затрагивание довольно специфических тем, книга написана довольно простым языком, содержит массу примеров и иллюстраций, и поэтому должна быть понятна и новичкам, только начинающим знакомиться с системами контроля версий.

Последняя версия перевода книги доступна в форматах pdf, epub, mobi и fb2.
Также доступна онлайн-версия перевода, но она, к сожалению, не обновлялась с мая.

И немного о грустном. Книга «Pro Git» выложена на GitHub под лицензией CC-BY-NC-SA, которая запрещает любое коммерческое использование оригинальной версии книги, а также любой производной работы. Поэтому издать версию книги на русском языке невозможно, как и продавать электронные версии в онлайн-магазинах. Поэтому команда переводчиков с благодарностью примет финансовую поддержку от читателей.

Наши реквизиты:

  • webmoney: R773517907660 (rub); Z477720561250 (usd)
  • яндекс.деньги: 410011547461467
  • paypal: koptev.oleg@gmail.com

Приятного чтения!

 , pro git, ,

GArik
()