Высокая скорость;
Динамическое выделение индексных дескрипторов (динамические иноды, dynamic inodes ). Иначе говоря, в этой ФС нет максимального количества обслуживаемых файлов;
Снимки файловой системы (snapshots), а также возможности делать снимки снимков и записываемые снимки (writeable snapshots);
Для продвинутого контроля целостности, применяются хеши на все данные и метаданные (тут нужно сразу заметить, так как от сравнения Btrfs и ZFS никак не уйти, что на данный момент в Btrfs применяется CRC-32C, что существенно скромнее, чем в ZFS);
Очень полезная возможность миграции с традиционных файловых систем ext3/ext4, что дает возможность очень прозрачного перехода на эту новую ФС;
Завершаются работы над поддержкой автоматического распознавания и объединения дубликатов (дедупликация);
Прозрачные возможности избирательного сжатия файлов;
Поддержка режима работы как RAID-массива (одна файловая система на нескольких томах);
Подтома (subvolumes) и эффективное клонирование файловой системы, быстрое создание инкрементальных архивов;
Прямая поддержка Device-mapper — важного компонента ядра Linux, с помощью которого организуется расширенное управление логическими томами;
Из недостатков:
Из-за механизма copy-on-write, возможна фрагментация данных. Данную проблему можно решить опцией монтирования autodefrag.
Отсутствует механизм online-проверки файловой системы на ошибки (то есть при смонтированной ФС). Точнее, этот механизм сейчас в разработке.
Не поддерживает фоновое шифрование.
С 2012 года считается стабильной, однако активная разработка продолжается. Вследствие этого, иногда могут возникать проблемы, потому для ценных и особо ценных данных, лучше использовать файловые системы ext4 или XFS (о ней поговорим в отдельной статье), а Btrfs только для раздела "/"
Установка Ubuntu на Btrfs, не вызывает сложностей (в отличии от Debian, где придётся дополнительно повозиться http://www.linuxim.ru/viewtopic.php?f=27&t=250), после установки нужно лишь прописать нужные опции монтирования в файл /etc/fstab. Но обо всём по порядку.
Файловая система Btrfs, представляет собой дерево (структура B-tree's). Ствол этого дерева - это корень ФС (не путать с корнем операционной системы, "/"). Ветви это дерева - это подтома (subvolumes), которые представлены пользователю в виде обычных директорий, но монтирующихся как разделы диска. В частности, разделам "/" и "/home", соответствуют подтома "@'' и "@home". При этом в отличии от реальных разделов, подтома Btrfs не являются блочными устройствами. Благодаря этому, можно с лёгкостью сделать снимок состояния (снапшот) нужного подтома, и в случае проблем - сделать откат. Но как я упомянул выше, для важных данных, предпочтительнее будет использовать ext4 или XFS, на отдельном разделе для /home. В частности, в дистрибутиве OpenSUSE, по умолчанию для "/" используется Btrfs, а для "/home" - XFS. Впрочем, это не отменяет создание резервных копий важных данных.
Приступим к установке. Собственно, тут ничего особенного нет. В случае использования Btrfs и для "/" и для "/home" весь диск размечается в Btrfs. И делается отдельный раздел подкачки (swap), так как он не может располагаться на Btrfs. Вот так:
[album]136[/album]
При использовании Btrfs только для корня, и создании отдельного /home
[album]137[/album]
После этого ставим систему как обычно.
Настройка после установки.
Всё, что теперь нужно сделать - это отредактировать файл /etc/fstab, добавив в него нужные опции. Приведу в пример свой fstab
Код: Выделить всё
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda3 during installation
UUID=8ed24bfc-0010-42a2-a605-5bc09aba8934 / btrfs compress=lzo,space_cache,autodefrag,relatime,subvol=@ 0 1
# /home was on /dev/sda3 during installation
UUID=8ed24bfc-0010-42a2-a605-5bc09aba8934 /home btrfs compress=lzo,space_cache,autodefrag,relatime,subvol=@home 0 2
# swap was on /dev/sda2 during installation
UUID=f7fbadf4-a7d8-41bb-94dd-4f653eaf9499 none swap sw 0 0space_cache - включает кэширование данных о свободных блоках в памяти. Без этой опции в процессе поиска свободного пространства перед записью Btrfs будет всякий раз сканировать все дерево. По результатам большинства тестов Phoronix включение опции space_cache дает выигрыш в скорости работы с диском, хотя и не столь существенный, как опция compress.
autodefrag - дефрагментация файлов на лету (актуально для HDD).
relatime - Операции чтения файлов также могут создавать большую нагрузку на диск, так как при каждом обращении записывается время доступа к файлу или директории (atime). Запись на диск происходит даже при чтении из кеша.
Избежать этого можно добавив опции noatime, nodiratime, которые отключают запись меток времени соответственно для файлов и для директорий (по некоторым источникам noatime включает в себя nodiratime).
Отключение atime не только продлевает жизнь жесткого диска, но и как отмечается в этой статье https://lonesysadmin.net/2013/12/08/gai ... -relatime/, на 30% увеличивает скорость системы. Однако не все приложения смогут правильно работать с отключенными временными метками.
Альтернативой им может быть более демократичная опция relatime. При ее использовании метки времени обновляются, но не при каждом обращении к файлу, а только в том случае, если файл был изменен с момента последней записи atime.
Сохраняем файл и перезагружаемся.
При установке системы на SSD, в fstab нужно указать опцию монтирования ssd. Для старых SSD накопителей, желательно прописать в fstab опцию ssd_spread.
Как сделать снимок состояния системы (snapshot).
Монтируем наш диск в директорию /mnt
Код: Выделить всё
sudo mount /dev/sdX# /mntКод: Выделить всё
sudo btrfs subvol list /mnt
ID 258 gen 525 top level 5 path @home
ID 262 gen 523 top level 5 path @
Код: Выделить всё
sudo btrfs subvolume snapshot /mnt/@ /mnt/@_snapshotКод: Выделить всё
sudo mv /mnt/@ /mnt/@_badroot
sudo mv /mnt/@_snapshot /mnt/@Код: Выделить всё
sunderland93@sunderland93-VirtualBox:~$ sudo apt-btrfs-snapshot list
Available snapshots:
sunderland93@sunderland93-VirtualBox:~$Код: Выделить всё
sunderland93@sunderland93-VirtualBox:~$ sudo apt-btrfs-snapshot list
Available snapshots:
@apt-snapshot-2015-04-06_10:02:14
sunderland93@sunderland93-VirtualBox:~$
Код: Выделить всё
sudo apt-btrfs-snapshot set-default @apt-snapshot-2015-04-06_10:02:14Помните - нельзя, а точнее программа не даст вам удалить активный снапшот, т.е. до перезагрузки в предыдущем шаге мы не могли удалить этот снапшот - он был активен.
Вот собственно и все. Если есть какие-либо пожелания или дополнения - пишите в комментариях.