Страницы

Сохранить статью у себя в соцсети:

понедельник, 4 февраля 2013 г.

§ Btrfs: Basic training.

BTRFS. Курс молодого бойца.

Статья по сути является заметкой в которой описаны базовые операции по работе с файловой системой Btrfs. Статья помогает быстро ознакомиться с основными возможностями файловой системы:
  • создание файловой системы на нескольких устройствах;
  • добавление/удаление устройств на лету;
  • создание RAID конфигураций;
  • онлайн-дефрагментация;
  • сжатие данных;
  • создание отдельных томов внутри файловой системы;
  • использование снимков. 
Для работы нам понадобится виртуальная машина с четырьмя блочными устройствами. Это могут быть как обычные физические разделы, так и LVM тома размещенные на одном физическом устройстве.
1. Создаем файловую систему с меткой тома bvol01
# mkfs.btrfs -L bvol01 /dev/vdb

2. Создаем файловую систему из двух дисков
# mkfs.btrfs -L bvol02 /dev/vdb /dev/vdc

3. При создании можно определить способ размещения данных и метаданных. Способ хранения метаданных может быть обычным -m raid0 и избыточным -m raid1. Также есть возможность использования raid10, для чего нужно как минимум, 4 блочных устройства.
Создадим файловую систему на двух дисках с избыточным хранением данных и метаданных (RAID1).
# mkfs.btrfs -L bvol03 -d raid1 -m raid1 /dev/vdb /dev/vdc

4. Просмотр информации об имеющихся файловых системах.
# btrfs filesystem show

5. Просмотр информации о конкретной файловой системе, например bvol02.
# btrfs filesystem show bvol02

6. Монтирование файловой системы осуществляется через монтирование любого блочного устройства которое принадлежит файловой системе.
# mount /dev/vdd /data

7. Просмотр информации о смонтированной файловой системе.
# btrfs filesystem df /data

8. Использование компрессии. Доступно использование сжатия средствами LZO и Zlib (по умолчанию)
# mount -o compress=lzo /dev/vdd /data
или без явного указания.
# mount -o compress /dev/vdd /data

9. Выполнение дефрагментации файловой системы или конкретного файла.
# btrfs filesystem defragment /data
# btrfs filesystem defragment /data/iso/centos.iso

10. Проверка консистентности данных в файловой системе.
# btrfs scrub start /data/
scrub started on /data/, fsid cc282eed-2e0b-4514-9342-8baedb137774 (pid=2070)
# btrfs scrub status /data/
scrub status for cc282eed-2e0b-4514-9342-8baedb137774
scrub started at Sun Feb  3 17:46:48 2013 and finished after 1 seconds
total bytes scrubbed: 444.63MB with 0 errors

11. Проверка файловой системы

# btrfsck /dev/vdc

12. В случае повреждения файловой системы можно попытаться смонтировать её в режиме восстановления
# mount -o recovery /dev/vdd /data

13. Увеличение размера файловой системы. Необходимо в случае увеличения низлежащих блочных устройств. Операция проводится на смонтированной фс.
# btrfs filesystem resize +30G /data
Вместо числового значения можно использовать аргумент 'max' при использовании которого произойдет увеличение до максимально возможного размера.

14. Уменьшение размера файловой системы. Необходимо в случае последующего уменьшения низлежащих блочных устройств. Тоже online операция.
# btrfs filesystem resize -10G /data
В данном случае, аргумента 'min' к сожалению нет.

15. Добавление диска к файловой системе. После добавления устройства, запускаем процесс частичного переноса данных и метаданных на новое устройство.
# btrfs device add /dev/vde /data
# btrfs balance start /data

16. Удаление неповрежденного устройства из файловой системы. Перенос данных на оставшиеся устройства будет автоматически запущен перед удалением устройства.
# btrfs device del /dev/vdc /data 

17. Удаление поврежденного или отсутствующего диска. Суть операции в перемонтировании тома в degraded режиме и подмене сбойного диска на новый, с последующим удалением сбойного диска. После замены автоматически запустится перебалансировка после которой необходимо перемонтировать файловую систему с обычными параметрами.
# umount /data
# mount -o degraded /dev/vde /data
# btrfs device add /dev/vde /data
# btrfs device delete missing /data
# umount /data && mount /dev/vdd /data

Тут стоит отметить что попытка выполнить '-o remount,degraded' также приводит к должному эффекту, но после удаления сбойного диска, автоматическая перебалансировка не запускается и для дальнейшего продолжения приходится полностью демонтировать том через umount, монтировать его в degraded режиме и снова выполнять процедуру удаления диска.

18. Конвертация в файловой системы в RAID1. В случае если в файловую систему был добавлен диск, есть возможность организовать файловую систему в RAID1 уровень
# btrfs device add /dev/vdd /data
# btrfs balance start -dconvert=raid1 -mconvert=raid1 /data &
# btrfs balance status /data
Balance on '/data' is running
4 out of about 8 chunks balanced (5 considered),  50% left

19. Обратная конвертация в RAID0 (например для последующего удаления одного из дисков)
# btrfs balance start -dconvert=raid0 -mconvert=raid0 --force /data
# btrfs device del /dev/vdd /data

Subvolumes - это сущность подобная директории, у нее есть имя и она может содержать в себе другие директории и файлы. В любой файловой системе btrfs, есть как минимум один такой том - том верхнего уровня. 

20. Создание подтома.
# btrfs subvolume create /data/backup

21. Монтирование подтома. Монтирование осуществляется по ID тома или по его имени. И то и другое можно узнать через списка томов файловой системы
# btrfs subvolume list /data
ID 272 top level 5 path backup
# mount -o subvolid=272 /srv/backup
или
# mount -o subvol=backup /dev/vdc /srv/backup

22. Удаление тома
# umount /srv/backup/
# btrfs subvolume delete /data/backup/

23. Создание снимка тома. Снимок можно сделать для любого тома, включая и том верхнего уровня.
# btrfs subvolume snapshot /data /data/self_snaphost

24. Создание снимка отдeльного файла. Пока содержимое исходного файла не меняется, снимок не будет занимать места. Как только оригинальный файл изменится, содержимое исходного файла будет скопировано в снимок.
# cp --reflink /data/nginx.conf /data/nginx.conf.backup

25. Возврат состояния файловой системы на момент создания снимка (в случае если что-то пошло не так).
# btrfs subvolume list /data
ID 275 top level 5 path backup
# btrfs subvolume set-default 275 /data
# umount /data && mount /dev/vdc/data

25. Конвертирование существующей файловой системы ext3/ext4 в btrfs. Конвертирование в случае btrfs не является конвертирование в полном смысле слова. В процессе конвертирования, создается файловая система btrfs с дополнительным подтомом ext2_saved. Содержимое исходной файловой системы помещается в файл-образ внутри этого подтома. Таким образом чтобы перенести данные обратно, нужно дополнительно смонтировать этот образ и вручную перенести данные.
# umount /var
# fsck -f /dev/storage/var
# btrfs-convert /dev/storage/var 
creating btrfs metadata.
creating ext2fs image file.
cleaning up system chunk.
conversion complete.
# mount /dev/storage/var /var
# mount /var/ext2_saved/image /mnt/var_ext2
# rsync -av /mnt/var_ext2/ /var/

26. Обратное конвертирование из btrfs в ext3/ext4. 
# umount /var
# btrfs-convert -r /dev/storage/var
# mount /dev/storage/var /var

На главную "Virtualizing Linux"

2 комментария:

Популярные сообщения

Профиль в Google+ Яндекс цитирования Яндекс.Метрика