wiki:использование_btrfs Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:использование_btrfs [2012/11/21 17:22]
[Возможные проблемы]
— (текущий)
Строка 1: Строка 1:
-====== Использование btrfs ====== 
-======Описание====== 
-<note warning>​При установки системы и для совместимости с lzo сжатием,​ не в коем случае не ставьте /boot на раздел с btrfs который будете сжимать (в общем вынесите его на отдельный /boot раздел)</​note>​ 
-Основные возможности btrfs: 
  
-  * Проверка целостности без размонтирования;​ 
-  * Записываемые снимки (writeable snapshots); 
-  * Динамическое выделение индексных дескрипторов (динамические иноды, dynamic inodes); 
-  * Контрольные суммы данных и метаданных;​ 
-  * Интеграция с device-mapper;​ 
-  * Поддержка RAID-массивов (одна файловая система на нескольких томах);​ 
-  * Сжатие;​ 
-  * Подтома (subvolumes);​ 
-  * Эффективное клонирование файловой системы и создание инкрементальных архивов;​ 
-  * Дефрагментация смонтированной файловой системы. 
-  * Поддержка сложных многодисковых конфигураций --- RAID уровней 0, 1, 5, 6 и 10, а также реализация различных политик избыточности на уровне объектов ФС --- то есть возможно назначить,​ к примеру,​ зеркалирование для какого-либо каталога или файла. 
-  * Copy-on-write (CoW) журналирование. 
-  * Контроль целостности блоков данных и метаданных с помощью контрольных сумм. 
-  * Зеркалирование метаданных даже в однодисковой конфигурации. 
-  * Полностью распределенное блокирование. 
-  * Поддержка ACL. 
-  * Защита от потери данных. 
-  * Выбор хэш-алгоритма. 
-  * Поддержка NFS. 
-  * Флаги совместимости,​ необходимые для изменения дискового формата в новых версиях btrfs с сохранением совместимости со старыми. 
-  * Резервные копии суперблока,​ по крайней мере --- по одной на устройство. 
-  * Скоростные приоритеты для дисков. 
-  * Гибридные пулы. btrfs старается перемещать наиболее используемые данные на самое быстрое устройство,​ вытесняя с него "​залежавшиеся"​ блоки. Эта политика хорошо согласуется с появившейся недавно моделью использования SSD (Solid State Drive). 
-  * Балансировка данных между устройствами в btrfs возможна сразу после добавления диска к пулу, отдельной командой --- а не только постепенно,​ в процессе использования (как это реализовано в ZFS). 
-  * Диски для горячей замены,​ поддержка которых появилась и в ZFS. 
- 
-//​Немного слов от себя, я выбрал её так как ей уже большe 3-х лет и большая часть информации уже устарела(о проблемах и о том что она медленная),​ в придачу она обладает прозрачным сжатием которое дает хороший прирост к скорости чтения и записи вот [[https://​btrfs.wiki.kernel.org/​index.php/​Main_Page#​Benchmarking|Benchmarking]]. Конечно уточню то что все плюсы её именно в дополнительных параметрах монтирования (и снапшотах,​ которые при умелом использовании спасают систему) и что на default настройках она уступает ext4 //  
-=====Из ext* в btrfs===== 
-<​note>​ 
-Эта статья помечена как незаконченная. 
-</​note>​ 
-Btrfs содержит очень мало метаданных,​ которые имеют фиксированное положение,​ что делает относительно лёгкой разработку утилит преобразования в неё из других файловых систем. Алгоритмы Copy on write позволяют Btrfs сохранять неизмененную копию исходной файловой системы,​ а администратору позволяют отменить преобразование,​ даже после выполнения изменений в итоговой файловой системе Btrfs. 
- 
-Программа преобразования использует libe2fs для чтения метаданных Ext3, и использует свободные блоки в ней для помещения в них новую файловую систему Btrfs. Основной алгоритм преобразования работает так: 
- 
-дублирует первый 1 Мбайт устройства;​ 
-дублирует каталоги и inodes, создавая их копии в Btrfs; 
-делает ссылки на блоки данных файла Ext3 в файлах Btrfs. 
-Таким образом создаются копии всех метаданных Ext3, но файлы Btrfs являются просто указателями на те же самые блоки, которые заняты файлами Ext3. Это разделяет большую часть блоков между этими двумя файловыми системами. Поскольку Btrfs использует Copy on write для всех модификаций файла, оригинальная версия блоков данных файла Ext3 сохраняется. 
- 
-Первый 1 МБ устройства копируется в альтернативную область для того, чтобы в него могли быть записаны метаданные Btrfs. Отмена преобразования заключается просто в восстановлении этих блоков. 
- 
-Результат преобразования выглядит примерно так: 
- 
-{{:​wiki:​converter-description.png |}} 
- 
-Конверсионная программа создает в Btrfs снапшот со ссылками на все блоки, используемые Ext3, позволяя администратору определять время, в течение которого будет сохраняться оригинальная файловая система Ext3. Если администратор захочет освободить место, занимаемое реликтами Ext3, снапошот можно удалить,​ после чего преобразование станет необратимым. 
- 
-Пока снапшот не удален,​ для хранения новых модификаций Btrfs могут использоваться только те блоки, которые были помечены в Ext3 как свободные. Это означает,​ что преобразование может быть отменено когда угодно в любое время, с восстановлением исходной файловой системы Ext3. Конвертер создает отдельный файл, содержащий все ссылки на исходную файловую систему Ext3, и смещения в этом файле соответствуют смещениям на блочном устройстве. Это позволяет администратору монтировать этот файл как loopback-устройство в режиме read only и видеть исходную файловую систему Ext3 и преобразованную файловую систему Btrfs одновременно. 
-(Если раздел не системный,​ если системный то грузимся с LiveCD и это будет описано ниже). ххх заменить на необходимый раздел 
-Пример использования:​ 
- 
-# Сначала запустить fsck\\ 
-fsck.ext3 -f /dev/xxx\\ 
- 
-# Преобразование из Ext3 в Btrfs\\ 
-btrfs-convert /dev/xxx\\ 
- 
-# Монтирование новообразованной файловой системы Btrfs\\ 
-mount -t btrfs /dev/xxx /btrfs\\ 
- 
-# Монтирование снапшота ext3\\ 
-mount -t btrfs -o subvol=ext2_saved /dev/xxx /​ext2_saved\\ 
- 
-# Монтирование файла образа как loopback-устройства\\ 
-mount -t ext3 -o loop,ro /​ext2_saved/​image /ext3\\ 
-{{ :​wiki:​converter-post.png|}} В приведённом выше примере файлы в /ext3 и в /btrfs будут идентичны. Любые модификации,​ выполненные в /btrfs, не будут видны в /ext3. Обратное преобразование делается так: 
- 
-# Полное отмонтирование файловой системы Btrfs\\ ​ 
-unmount /ext3\\ 
-unmount /​ext2_saved\\ 
-unmount /btrfs\\ 
- 
-# Обратное преобразование\\ ​ 
-btrfs-convert -r /dev/xxx\\ 
- 
-# Монтирование исходной файловой системы\\ 
-mount -t ext3 /dev/xxx /ext3\\ 
-Если вы хотите освободить место, занятое исходной файловой системой Ext3 и сделать преобразование постоянным,​ просто удалите файл /​ext2_saved/​image. 
-После удаления файла образа диск будет выглядеть примерно так -> 
-=====Инструкция преобразование ext4 в btrfs===== 
-Делаем аналогично,​ я буду вести вас за руку, делаю на примере моего опыта преобразования раздела /home и прикручивания его на месте. 
-Общий план действий,​ мы установили ubuntu 12.10, корень изначально отформатирован в btrfs, вот fstab: 
-   # ​       <file system> ​                 <mount point> ​   <​type> ​  <​options> ​         <​dump> ​ <​pass> ​ 
-   # / was on /dev/sda3 during installation ​ 
-   ​UUID=d094dfa1-3114-41d0-86da-5e3d91a75a35 /               ​btrfs ​  ​defaults,​subvol=@ ​ 0       ​1 ​ #​корень /  
-   # 
-   # /boot was on /dev/sda2 during installation ​ 
-   ​UUID=d9e3ccbf-9281-4322-ab39-f3b590b41c1a /boot           ​ext4 ​   defaults ​          ​0 ​      2 #​раздел /boot обязательно отдельно и не btrfs 
-   # 
-   # /boot/efi was on /dev/sda1 during installation 
-   ​UUID=EECD-EEE1 ​                           /​boot/​efi ​      ​vfat ​   defaults ​          ​0 ​      ​1 ​   
-   #Efi потому что - [[wiki:​установка_дистрибутива_на_компьютер_с_efi|Установка дистрибутива на компьютер с efi]] 
-   # 
-   # /home was on /dev/sda5 during installation 
-   ​UUID=34a5d56c-f6b3-46bb-b5f6-8b6cc15e4da3 /home           ​ext4 ​  ​defaults ​           0       2 
-   # 
-   # swap was on /dev/sda4 during installation ​ 
-   ​UUID=eec9a7be-672b-4720-acef-70f5bd6df0c4 none            swap    sw                 ​0 ​      0 
-Вот отличненько,​ первое это приводим в порядок корневой раздел,​ переделываем его вот в это(инфа о параметрах [[wiki:​fstab?&#​btrfs|тут]]):​ 
-   # / was on /dev/sda3 during installation 
-   ​UUID=d094dfa1-3114-41d0-86da-5e3d91a75a35 /               ​btrfs ​  ​defaults,​subvol=@,​compress-force=lzo,​autodefrag,​space_cache ​ 0       1 
-Перезагружаем,​ смотрим что вышло. Запустилась?​ отлично,​ значит всё хорошо. Загружаемся с любого LiveCD образа. 
-//​Инструкция составлена для преобразования раздела /home при схеме разметки как выше, в вашем случае может понадобиться изменить имена разделов//​ 
- 
-  Сначала запустить fsck #​Проверим диск на наличие ошибок 
-  fsck.ext4 -f /dev/sda5 #ext4 т.к. раздел home выше отформатирован в её. 
-  ​ 
-  #​Преобразование из Ext* в Btrfs 
-  btrfs-convert /dev/sda5 #Он долго и упорно будет сканировать метадаты,​ у меня процесс конвертации длился больше получаса (300GB/​500GB). 
-                          #Не трогаем не выдергиваем ждём завершения. 
-                          ​ 
-  #​Новоиспеченную btrfs можно смонтировать через наутилус и проверить наличие папок ext2_saved и папку пользователя(вашу) 
-  #​Узнаем новый адресс раздела с home 
-  sudo blkid 
-  #ищем строку с нашим разделом,​ вот и она: 
-  /dev/sda5: UUID="​baa5d56c-f6b3-46bb-b5f6-8b6cc15e4da3"​ UUID_SUB="​eaebe91a-5797-44d9-bc74-312316e7dbe6"​ TYPE="​btrfs"​ 
-Теперь надо исправить неправильный адрес home в fstab. Открываем наутилус,​ примонтируем раздел с корнем. 
-  sudo gedit 
-открываем корень,​ затем run -> media -> ищем среди подключенных дисков корневой раздел,​ открываем там будет папка "​@",​ переходим etc -> fstab \\ 
-Отлично,​ находим строку с нашим разделом home: 
-  ​ 
-  #/home was on /dev/sda5 during installation 
-   ​UUID=34a5d56c-f6b3-46bb-b5f6-8b6cc15e4da3 /home           ​ext4 ​  ​defaults ​           0       2 
-Теперь правим его, по аналогии с корнем,​ заменяем ​ старый UUID "​34a5d56c-f6b3-46bb-b5f6-8b6cc15e4da3",​ на новый "​baa5d56c-f6b3-46bb-b5f6-8b6cc15e4da3",​ прописываем параметры,​ получаем(не забудьте исправить ext4 на btrfs): 
-  #/home was on /dev/sda5 during installation 
-  UUID=baa5d56c-f6b3-46bb-b5f6-8b6cc15e4da3 /home           ​btrfs ​  ​defaults,​compress-force=lzo,​autodefrag,​space_cache ​       0       2 
-Перезагружаемая,​ если всё сделано правильно,​ оно загрузиться. В крайнем случае [который не должен наступить] по вышестоящей инструкции можно вернуть ext* на место. 
-=====Дополнительные команды===== 
-====информация о ФС==== 
-для пути: 
-   btrfs filesystem df /home #​выполняются отдельно для каждого раздела,​ т.е. если просмотреть корень,​ он покажет совершенно другое 
-Покажет информацию о /home\\ 
-вывод: 
-   ​timofey@Timofey-Lenovo-B570:​~$ btrfs filesystem df /home 
-   Data: total=272.64GB,​ used=146.61GB 
-   ​System:​ total=32.00MB,​ used=28.00KB 
-   ​Metadata:​ total=136.00GB,​ used=71.46GB ​                     ​ 
-====balance==== 
-Как мы видим метаданные занимают большой объём, исправим это: 
-   sudo btrfs fi balance /home   #​ждём,​ процесс долог и не обратим 
-Когда закончиться,​ вбиваем и сравниваем:​ 
-   ​timofey@Timofey-Lenovo-B570:​~$ btrfs filesystem df /home 
-   Data: total=251.00GB,​ used=200.30GB 
-   ​System:​ total=32.00MB,​ used=32.00KB 
-   ​Metadata:​ total=24.00GB,​ used=17.75GB 
-====snapshot==== 
-===создание=== 
-Ситуация простая,​ обновляюсь до следующего дистра 12.10, хочу иметь возможность легко откатиться,​ как это сделать?​ Правильно,​ организовать снапшот фс. 
-Поскольку обновлять будем только рут, то и снимок будем делать только его. 
-Для начала нужно подмонтировать раздел с рутом куданибудь. 
-У меня на этот случай в /mnt создана спец папка tmpfs, если у вас такого нет, то делаем следующим образом(всё указываю относительно имени tmpfs) 
-   sudo su 
-   mkdir /mnt/tmpfs 
-Затем подмонтируем раздел с корнем в созданную ​ нами папку. 
-   mount /dev/sda3/ /mnt/tmpfs/ #sd* зависит от того куда и как вы ставили систему,​ если всё так как выше в статье,​ этот способ подойдёт. 
-теперь самое интересное делаем снимок:​ #​первый путь, путь к папке исходнику, ​ второй к папке в которой сохранится снимок. 
-   btrfs subvolume snapshot /​mnt/​tmpfs/​@/​ /​mnt/​tmpfs/​oldroot/​ #​Собака потому что используются саб разделы. 
-После завершения появится надпись:​ 
-   ​Create a snapshot of '/​mnt/​tmpfs/​@/'​ in '/​mnt/​tmpfs/​oldroot'​ 
-Теперь лезем в mnt и любуемся результатом. 
- 
-===удаление=== 
-Снапшоты удалять как файлы не комильфо (Не удаляться "​Правильно"​) 
-Удалим старый снимок:​ 
-   btrfs subvolume delete '/​mnt/​tmpfs/​oldroot'​ 
-получим сообщение:​ 
-   ​Delete subvolume '/​mnt/​tmpfs/​oldroot'​ #Ждём завершения 
-=====Возможные проблемы===== 
-btrfs хороша но не идеальна,​ файлы она у меня до сих пор не съела (и вообще нужно с ней держаться более новых ядер, так как там обычно есть новые заплатки) 
-Например после под монтирования с livedvd раздела с /home и правки директорий,​ у меня при загрузке ubuntu выбивается ошибка и нужно нажать i чтобы подключить без проверки,​ не смертельно но мешает,​ решение довольно радикальное - открываем fstab: 
-   sudo gedit /etc/fstab 
-видим: <​code>​ 
-# <file system> <mount point> ​  <​type> ​ <​options> ​      <​dump> ​ <​pass>​ 
-proc            /proc           ​proc ​   nodev,​noexec,​nosuid 0       0 
- 
-# / was on /dev/sda3 during installation 
-UUID=98463b8f-048a-4693-aad7-7d6db40dea51 /               ​btrfs ​  ​defaults,​subvol=@,​compress-force=lzo,​space_cache,​inode_cache 0       ​1 ​ 
-#1 меняем её на 0. 
- 
-# /boot was on /dev/sda2 during installation 
-UUID=a186246f-c972-4cfc-ae99-a881776b4303 /boot           ​ext4 ​   defaults ​       0       2 
- 
-# /boot/efi was on /dev/sda1 during installation 
-UUID=4AE0-FDEE ​ /​boot/​efi ​      ​vfat ​   defaults ​       0       1 
- 
-# /home was on /dev/sda5 during installation 
-UUID=baa5d56c-f6b3-46bb-b5f6-8b6cc15e4da3 /home           ​btrfs ​  ​defaults,​subvol=@home,​compress-force=lzo,​space_cache,​inode_cache 0       ​2 ​ 
-#2 меняем тоже на 0. 
- 
-# swap was on /dev/sda4 during installation 
-UUID=eec9a7be-672b-4720-acef-70f5bd6df0c4 none            swap    sw              0       0 
-</​code>​ 
-для справки,​ это не рекомендуемое действие т.к. потенциально отключает поиск ошибок в фс, что может вылиться в потерю данных,​ потому делаете всё на свой страх и риск. (Точно,​ забыл сказать:​ "​Это несколько ускоряет загрузку"​) 
- 
-В 3.5 ядре, т.е. на 12.10 btrfs<​del>​ научилась править ошибки(вроде)</​del>​ и если у вас система при загрузке пишет "​Ошибка при монтировании *** нажмите s чтобы пропустить"​ значит что-то нахимичили с параметрами. 
----- 
-<​note>​ 
-FIXME статья требует исправления,​ поправок и дополнения,​ если вы можете чем либо помочь "​Прошу к столу"​ 
-Обсуждение,​ вопросы и прочие тут: [[http://​forum.ubuntu.ru/​index.php?​topic=207432.0|btrfs]] 
-</​note>​ 
- --- [[user>​nefelim4ag]] //​2012/​09/​07 22:42// 
- ​Вообще обращайтесь если будут вопросы,​ по возможности помогу с этой фс nefelim4ag@gmail.com 
-===== Ссылки ===== 
- 
-[[https://​btrfs.wiki.kernel.org/​index.php/​Main_Page|Официальная вики]]\\ 
-[[https://​btrfs.wiki.kernel.org/​index.php/​Mount_options|Параметры монтирования агл.]] 
-[[http://​help.ubuntu.ru/​wiki/​fstab#​btrfs|Перевод параметров]] 
- 
-{{tag>​btrfs ext2 ext3 ext4 compression lzo gzip fstab}}