Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
wiki:использование_btrfs [2012/09/09 22:35] [balance] + закончил |
— (текущий) | ||
|---|---|---|---|
| Строка 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 | ||
| - | |||
| - | <note> | ||
| - | FIXME статья требует исправления, поправок и дополнения, если вы можете чем либо помочь "Прошу к столу" | ||
| - | //Нужно проверить инструкцию (Да я уже ставил и мучался пока не дошло что я не поправил UUID, после этого всё заработало и до сих пор работает как швейцарские часы), дописать команды, при желании поправить мои инструкции к действиям с "->" // | ||
| - | </note> | ||
| - | --- [[user>nefelim4ag]] //2012/09/07 22:42// | ||
| - | ===== Ссылки ===== | ||
| - | |||
| - | * [[FIXME]] | ||
| - | |||
| - | {{tag>btrfs ext2 ext3 ext4 compression lzo gzip fstab}} | ||