http://blog.kourim.net/installing-debia ... -subvolume
Захотел я поэкспериментировать со стареньким Asus EeePC 1015, ssd диском на 128 гб, btrfs, субразделами (subvolume) и снапшотами. Русскоязычной документации я не нашел, поэтому ниже краткая инструкция:
0. Устанавливаем в EeePc ssd диск, лишаясь гарантии.
Мне не страшно, т. к. я уже разобрал и собрал его много раз.
1. Запускаемся с livecd или флешки и делаем разметку с помощью gparted.
Размечал не штатным установщиком, т. к. начитался ужастиков по выравниванию разделов. Все сводится к тому, что первый раздел должен начинаться с 2048, а второй и следующие c сектора, кратного 8. Так же с помощью gparted удобно оставить для swap ровно столько гигабайт, сколько нужно. Подкачку многие не советуют хранить в файле на btrfs, поэтому я решил пожертвовать 4 гб и выделить отдельный раздел.
Моя разметка:
Корень на brtfs. (Home позже сделаем с помощью subvolume)
/dev/sda1 сектора 2048 — 226052095, 108 гб
Swap
/dev/sda2 сектора 226052096 — 234440703, 4 гб
2. Устанавливаем систему с помощью штатного установщика.
Там всё как обычно и по умолчанию.
3. После установки проверяем, что система работает и снова запускаемся с livecd. Время создавать субразделы (subvolume)
Открываем консоль и переходим с помощью su в root. Создаем в mnt папку, например btrfs:
Код: Выделить всё
mkdir /mnt/btrfs/
Код: Выделить всё
mount /dev/sda1 /mnt/btrfs/
Код: Выделить всё
btrfs subvol create /mnt/btrfs/@
btrfs subvol create /mnt/btrfs/@home
Команда для посмотра subvolume:
Код: Выделить всё
btrfs subvolume list /mnt/btrfs/
ID 281 gen 1229 top level 5 path @
ID 285 gen 1227 top level 5 path @home
Внимание! Не переносите @ и @home в @. Но в @ должна быть пустая папка home (/mnt/btrfs/@/home)
Перенос может занять некоторе время, т. к. subvolume не просто папка, а совсем другой раздел и получается, как будто вы переносите данные с одного диска на другой.
Т.к. мы только что «грохнули» корневой раздел, то нам надо явно указать, что теперь нам надо загружатья не с корня, а с subvolume @. Вместо 281 подставьте свой ID субраздела @, скорей всего он будет другим.
Код: Выделить всё
btrfs subvolume set-default 281 /mnt/btrfs/
Код: Выделить всё
/dev/sda1 /home btrfs discard,defaults,relatime,nodiratime,ssd,noatime,subvol=@home 0 0
Код: Выделить всё
tmpfs /tmp tmpfs defaults 0 0
tmpfs /var/tmp tmpfs defaults 0 0
tmpfs /var/log tmpfs defaults 0 0
tmpfs /var/spool tmpfs defaults 0 0
4. Перезагружаемся в нашу систему. Если всё сделано правильно, то всё загрузится и заработает. Но это еще не всё. Надо переустановить grub и отказаться от default subvolume. Это не моя идея, так советуют умные люди ради того, чтобы при обновлениях и прочих действиях, когда выполнится команда grub2-update, ничего не поломалось. Grub2 умеет определять субразделы относительно корня, поэтому он найдет boot не в /boot, а в /@/boot. Это может показаться сложным для понимания, но на самом деле так надо для работы со снапшотами и воизбежание путаниц с путями к файлам.
Создаем папку для монтирования:
Код: Выделить всё
mkdir /mnt/btrtfs/
Код: Выделить всё
mount -o subvolid=5 /dev/sda1 /mnt/btrfs/
Код: Выделить всё
btrfs subvolume set-default 5 /mnt/btrfs/
Код: Выделить всё
update-grub2 #переписывем конфиги
grub2-install /dev/sda #устанавливаем в загрузочный сектор
Код: Выделить всё
UUID=3942ea88-3677-42e5-9b65-38f74137b050 / btrfs discard,defaults,relatime,nodiratime,ssd,subvol=@ 1 1
6. Теперь можно делать снапшоты на живой системе!!!
Желательно это делать не насилуя в данный момент файловую систему, например не устанавливая обновления. Из под root пишем:
Код: Выделить всё
mount /dev/sda1 /mnt/btrfs/
cd /mnt/btrfs/
btrfs subvolume snapshot @ @_backup
Теперь загрузим систему со снапшота @_backup. Для наглядности можно что-то удалить или установить. Подменим @ на @_backup:
На живой системе переименовываем subvolume @ в @_old:
Код: Выделить всё
mv @ @_old
Код: Выделить всё
mv @_backup @
Чтоб вернуться обратно делаем все наоборот и перезагружаем систему.
Надо учесть, что снапшоты съедают место на диске и нам иногда придется удалять некоторые снапшоты. Просто удалять их нельзя, для этого есть специальная команда:
Код: Выделить всё
btrfs subvolume delete @_backup
Я не тестировал создание 100000000 файлов с одновременным копированием одного файла в 1000000 гб, но если судить по времени загрузки и отзывчивости интерфейса, то система работает намного быстрее чем на ext4 (и чем на hdd) и наверно чуть медленнее, чем на XFS. Система с LXDE загружается очень шустро!!! Если отключить запрос пароля в DM и 5 секунд загрузчика, то получается, что загрузка BIOS отнимает столько же, сколько и система. C KDE совсем другая ситуация. Очень много времени проходит со времени ввода пароля до загрузки рабочего стола. Пробовал множество настроек, но побороть не получилось. НО!!! Зато восстановление из гибернации происходит в считанные секунды. Я вынужден использовать KDE, т.к очень нужен Okular и быстрое подключение к внешним мониторам и проекторам
По сравнению с обычным диском работа от батареи несколько возросла, особенно, когда занимаешься чтением pdf или просмотром Интернета с большим содержанием текста.
Дополнительно для ssd:
Хорошая идея установить порог использования swap как можно меньше. Вставим строку vm.swappiness=5 в /etc/sysctl.conf (значения от 0 до 100) Это заставит систему использовать swap при крайней необходимости и меньше писать на диск.
Также я на рабочем столе сделал два sh скрипта с командами swapon и swapoff. Суть в том, что один включает раздел swap, другой выключает. Не уверен в особой нужде, это больше эксперименты с sudo.
Многие предлагают настраивать браузеры таким образом, чтобы они не хранили кеш и историю на диске, а только в оперативной памяти. Я без истории жить не могу, а вот отсутствие кеша я особо не заметил, хотя часто пользуюсь 2g/3g. Также я выключил flash и другие надстройки, чем уменьшил трафик и увеличил работу от АКБ, когда надо долго работать текстом на сайтах.
Спасибо за внимание.