Библиотека сайта rus-linux.net
Создание и настройка файловой системы Btrfs в Linux
Оригинал: How to Create and Manage Btrfs File System in LinuxАвтор: Babin Lonston,
Дата публикации: 10.02.2015.
Перевод: А.Кривошей
Дата перевода: сентябрь 2015 г.
Примечание переводчика: поскольку манипуляции с файловыми системами - это достаточно опасные операции, чреватые потерей данных, в процессе перевода этой статьи я собственноручно проделал все описанные здесь операции в системе Lubuntu 15.04, установленной в виртуальной машине VMware. У меня все прошло гладко, никаких проблем не возникло, но, тем не менее, хочу предупредить, что все приводимые ниже действия вы делаете на свой страх и риск. Скриншоты в статье мои.
Btrfs или B-tree file system - это файловая система под лицензией GPL, разработанная несколькими компаниями, в числе которых Oracle, Redhat, Fujitsu, Intel, Facebook, Linux Foundation, Suse и так далее. Размер файловой системы Brtfs может составлять до 16 экзабайт, а максимальный размер файла - до 8 экзабайт в связи с ограничениями ядра.
В именах файлов могут использоваться любые символы, кроме "/" и NULL. Btrfs имеет функции самовосстановления и может работать с несколькими томами. В Btrfs мы можем изменять размер файловой системы, добавлять или удалять блочные устройства "на лету".
Она также поддерживает подразделы, которые не являются отдельными блочными устройствами. Мы можем создавать моментальные снимки этих подразделов, и восстанавливать их из этих снимков. Мы можем использовать btrfs вместо LVM. Файловая система btrfs все еще находится в режиме тестирования и не рекомендуется для применения на производстве при работе с важными данными.
Мое окружение
Hostname : alex-virtual-machine.tecmintlocal.com
IP addrress : 172.16.60.128
Disk Size Used : 8GB [/dev/sdb]
Этап 1: Установка и создание файловой системы Btrfs
1. В большинстве современных дистрибутивов Linux пакет btrfs установлен по умолчанию. Если нет, установите его с помощью одной из следующих команд:
# yum install btrfs-progs -y [В дистрибутивах на базе RedHat] $ sudo apt-get install btrfs-tools -y [В дистрибутивах на базе Debian]
2. После установки пакета btrfs необходимо активировать модуль ядра для btrfs с помощью команды:
$ sudo modprobe btrfs
3. Здесь мы используем только один диск (то есть /dev/sdb) и мы собираемся установить логические тома и создать файловую систему btrfs. Сначала посмотрим, какие диски смонтированы в системе.
$ ls -l /dev | grep sd
4. Убедившись, что диск правильно подключен к системе, можно создавать раздел с LVM. Мы будем использовать для этого команду 'fdisk' для диска /dev/sdb. Следуйте приведенным ниже инструкциям.
$ sudo fdisk -c /dev/sdb
- нажмите 'n' для создания нового раздела; - затем выберите 'P' для первичного (Primary) раздела; - далее выберите номер раздела 1; - задайте значение по умолчанию, нажав два раза Enter; - далее нажмите 'P', чтобы вывести заданный раздел; - нажмите 'L' для вывода списка всех доступных типов; - нажмите 't' для выбора разделов; - выберите '8e' для Linux LVM и нажмите Enter; - затем снова нажмите 'p', чтобы вывести сделанные изменения; - нажмите 'w', чтобы записать изменения.
5. После успешного создания раздела необходимо обновить информацию об изменениях таблицы разделов для ядра с помощью команды partprobe, после чего выведем список разделов, как показано ниже.
$ sudo partprobe -s $ ls -l /dev | grep sd
Настройка логического тома
6. Создадим физический том и группу томов на диске /dev/sdb1 с помощью команд pvcreate и vgcreate.
$ sudo pvcreate /dev/sdb1 $ sudo vgcreate tecmint_vg /dev/sdb1
7. Создадим в группе томов логический том. Здесь я создаю два логических тома.
$ sudo lvcreate -L +2G -n tecmint_lv1 tecmint_vg $ sudo lvcreate -L +2G -n tecmint_lv2 tecmint_vg
8. Выведем созданные физический и логические тома, а также группу томов.
$ sudo pvs
$ sudo vgs
$ sudo lvs
Создание файловой системы Btrfs
9. Теперь создадим файловую систему для наших логических томов.
$ sudo mkfs.btrfs /dev/tecmint_vg/tecmint_lv1
10. Далее, создадим точку монтирования и смонтируем файловую систему.
$ sudo mkdir /mnt/tecmint_btrfs1 $ sudo mount /dev/tecmint_vg/tecmint_lv1 /mnt/tecmint_btrfs1/
11. Верифицируем точку монтирования с помощью команды df.
$ df -h
Здесь доступный размер был 2 Гб
Этап 2: Добавление устройств в файловую систему Btrfs
12. Теперь мы хотим увеличить размер файловой системы на точке монтирования /mnt/tecmint_btrfs1/, для этого нам не нужно увеличивать размер логического тома, вместо этого мы можем добавить устройство к точке монтирования, в результате чего размер файловой системы увеличится.
$ sudo btrfs device add /dev/tecmint_vg/tecmint_lv2 /mnt/tecmint_btrfs1/
13. После добавления устройства к файловой системе btrfs проверьте размер файловой системы с помощью команды 'df -h'.
$ df -h
14. Теперь проверьте статус добавленного устройства.
$ sudo btrfs device stats /mnt/tecmint_btrfs1/
Если же вы захотите удалить логический том tecmint_lv2 из точки монтирования, это можно сделать с помощью следующих команд:
$ sudo btrfs device delete /dev/tecmint_vg/tecmint_lv2 /mnt/tecmint_btrfs1/ $ df -h
Полезные возможности Btrfs
a. Проверка использования диска на точке монтирования:
$ sudo btrfs filesystem df /mnt/tecmint_btrfs1/
b. Вывод подробной информации о файловой системе:
$ sudo btrfs filesystem show --mounted
Если нужна информация о всех устройствах, а не только о смонтированных, используется опция -all-devices.
c. Принудительная синхронизация файловой системы с идентификацией по пути {/mnt/tecmint_btrfs1/}.
$ sudo btrfs filesystem sync /mnt/tecmint_btrfs1/
d. Дефрагментация метаданных файлов и директорий.
$ sudo btrfs filesystem defragment -v -r /mnt/tecmint_btrfs1/
-r = рекурсивная дефрагментация.
-v = вывод подробной информации.
-c = сжатие содержимого файлов при дефрагментации.
c. Проверка файловой системы с помощью команды btrfsck.
$ sudo btrfsck /dev/tecmint_vg/tecmint_lv1
Этап 3: Создание подтомов Btrfs
Подтома Btrfs не являются блочными устройствами, хотя ведут себя аналогично, в отличие от томов LVM или ZFS. Подтома считаются находящимися в пространстве имен файлов POSIX. Доступ к ним возможен через подтом верхнего уровня структуры файловой системы.
Можно создать несколько подтомов внутри каждого из подтомов, и мы можем монтировать подтом, используя его ID, без монтирования его родительского подтома. Мы можем создавать и удалять подтома с помощью простых команд.
Снимки системы: возможно создание перезаписываемых снимков, либо только для чтения. Снимки системы создаются в режиме копирования при записи, но здесь не делается копий файлов, вместо этого берутся метаданные и данные оригинальных подтомов.
15. Перед созданием подтома выведем список всех существующих подтомов.
$ sudo btrfs subvolume list /mnt/tecmint_btrfs1/
16. Для создания подтома мы можем использовать приведенные ниже команды. Здесь я создаю два подтома.
$ sudo btrfs subvolume create /mnt/tecmint_btrfs1/subvol1 $ sudo btrfs subvolume create /mnt/tecmint_btrfs1/subvol2
17. Теперь проверьте, появились ли созданные подтома.
$ sudo btrfs subvolume list /mnt/tecmint_btrfs1/
18. Теперь перейдите в точку монтирования /mnt/tecmint_btrfs1/ и просмотрите созданные подтома.
$ cd /mnt/tecmint_btrfs1/subvol1/
Скопируйте какие-нибудь файлы из /etc/ в subvol1.
$ sudo cp /etc/[abcde]* .
Монтирование субтома Btrfs
19. Сначала узнаем ID субтомов с помощью следующей команды:
$ sudo btrfs subvolume list /mnt/tecmint_btrfs1/
20. Затем, чтобы смонтировать субтома, мы должны размонтировать родительский том /mnt/tecmint_btrfs1/.
$ sudo umount /mnt/tecmint_btrfs1/
21. Теперь смонтируем субтом, используя его ID:
$ sudo mount -o subvolid=272 /dev/tecmint_vg/tecmint_lv1 /mnt/tecmint_btrfs1/
Эта команда смонтирует subvol1 в /mnt/tecmint_btrfs1/.
Если нам нужно назначить наш субтом умолчательным, это можно сделать с помощью следующей команды:
$ sudo btrfs subvolume set-default 272 /mnt/tecmint_btrfs1/
22. Узнать, какой субтом является умолчательным, можно с помощью команды:
$ sudo btrfs subvolume get-default /mnt/tecmint_btrfs1/
Создание мгновенных снимков файловой системы
23. Для создания мгновенного снимка используется команда вида:
$ sudo btrfs subvolume snapshot /source /destination
Допустим, мне нужно сделать мгновенный снимок /mnt/tecmint_btrfs1/ и сохранить его здесь же:
$ sudo btrfs subvolume snapshot /mnt/tecmint_btrfs1/ /mnt/tecmint_btrfs1/
С помощью команды ls можно увидеть, что мгновенный снимок готов:
24. Выше мы не задавали имя снимка, и по умолчанию оно соответствовало имени каталога, чей снимок мы делали. Теперь давайте попробуем назвать снимок snap_tec и сохранить его в /mnt/tecmint_btrfs1/.
$ sudo btrfs subvolume snapshot /mnt/tecmint_btrfs1/ /mnt/tecmint_btrfs1/snap_tec/ $ ls -l /mnt/tecmint_btrfs1/snap_tec/tecmint_btrfs1/
25. В созданных ранее снимках мы можем читать и записывать любой контент. Если мы хотим создать снимок только для чтения, необходимо использовать опцию -r:
$ sudo btrfs subvolume snapshot -r /mnt/tecmint_btrfs1/ /mnt/tecmint_btrfs1/snap_readonly
Постоянное монтирование Btrfs
26. Постоянное монтирование осуществляется с помощью записей в файле fstab. Откройте fstab в текстовом редакторе.
$ sudo vi /etc/fstab
Далее, добавьте в него приведенную ниже строку. Сохраните файл и закройте текстовый редактор.
/dev/tecmint_vg/tecmint_lv1 /mnt/tecmint_btrfs1/ btrfs defaults 0 0
27. После выхода из fstab проверьте, что файловая система смонтирована.
$ sudo mount -a
Заключение
Btrfs - одна из лучших файловых систем для Linux. Надеемся, что эта статья помогла вам узнать что-то новое об этой файловой системе.