Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Последняя версия Следующая версия справа и слева | ||
wiki:ext_to_btrfs [2016/03/02 23:59] [Из ext* в btrfs] |
wiki:ext_to_btrfs [2016/11/09 12:01] [Инструкция преобразование ext4 в btrfs] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Ext-btrfs ====== | ====== Ext-btrfs ====== | ||
- | ======Глоссарий====== | ||
- | chunk - кусок файловой системы, btrfs размечает не диск, а chunk'и внутри раздела. | ||
- | leaf - леана, ветка метаданных, inode, в её пишутся метаданные описывающие содержание chunk'ов и мелкие файлы. | ||
- | лист - кусок чанка или сам чанк, туда пишутся данные. | ||
=====Из ext* в btrfs===== | =====Из ext* в btrfs===== | ||
- | <note> | + | [[wiki:btrfs|Btrfs]] содержит очень мало метаданных, которые имеют фиксированное положение, что делает относительно лёгкой разработку утилит преобразования в неё из других файловых систем. Алгоритм Copy on write позволяют btrfs сохранять неизмененную копию исходной файловой системы, а администратору позволяют отменить преобразование, даже после выполнения изменений в итоговой файловой системе btrfs (откат происходит без учета изменений в btrfs, т.е. к тому моменту когда было запущено преобразование). |
- | Эта статья помечена как незаконченная. | + | |
- | </note> | + | |
- | Btrfs содержит очень мало метаданных, которые имеют фиксированное положение, что делает относительно лёгкой разработку утилит преобразования в неё из других файловых систем. Алгоритм Copy on write позволяют btrfs сохранять неизмененную копию исходной файловой системы, а администратору позволяют отменить преобразование, даже после выполнения изменений в итоговой файловой системе btrfs (откат происходит без учета изменений в btrfs, т.е. к тому моменту когда было запущено преобразование). | + | |
Программа преобразования btrfs-convert использует libe2fs для чтения метаданных ext2-3-4 (далее для простоты ext*), и использует свободные блоки файловой системы для помещения в них метаданных новой файловой системы btrfs. Алгоритм преобразования работает так: | Программа преобразования btrfs-convert использует libe2fs для чтения метаданных ext2-3-4 (далее для простоты ext*), и использует свободные блоки файловой системы для помещения в них метаданных новой файловой системы btrfs. Алгоритм преобразования работает так: | ||
- | - дублируется первый 1 Мбайт устройства на свободное место; | + | - дублируется первый 1 Мбайт устройства на свободное место; |
- | - создает копии каталогов и inodes в структуре метаданных btrfs (также в свободных областях старой файловой системы); | + | - создает копии каталогов и inodes в структуре метаданных btrfs (также в свободных областях старой файловой системы); |
- | - в новых inode создаются ссылки на блоки данных файлов ext*. | + | - в новых inode создаются ссылки на блоки данных файлов ext*. |
Таким образом создается новая структура метаданных btrfs, которая дублирует метаданные ext*, но данные файлов не дублируются на них ссылаются обе структуры метаданных. Это разделяет большую часть блоков между этими двумя файловыми системами. Поскольку btrfs использует Copy on write для всех модификаций файлов, оригинальная версии блоков данных файлов ext* сохраняются без изменений. | Таким образом создается новая структура метаданных btrfs, которая дублирует метаданные ext*, но данные файлов не дублируются на них ссылаются обе структуры метаданных. Это разделяет большую часть блоков между этими двумя файловыми системами. Поскольку btrfs использует Copy on write для всех модификаций файлов, оригинальная версии блоков данных файлов ext* сохраняются без изменений. | ||
Строка 49: | Строка 42: | ||
{{ :wiki:converter-post.png|}} В приведённом выше примере файлы в /ext3 и в /btrfs будут идентичны. Любые модификации, выполненные в /btrfs, не будут видны в /ext3. Обратное преобразование делается так: | {{ :wiki:converter-post.png|}} В приведённом выше примере файлы в /ext3 и в /btrfs будут идентичны. Любые модификации, выполненные в /btrfs, не будут видны в /ext3. Обратное преобразование делается так: | ||
- | # Полное отмонтирование файловой системы btrfs\\ | + | # Отмонтируем все элементы файловой системы смонтированные ранее\\ |
unmount /ext3\\ | unmount /ext3\\ | ||
unmount /ext2_saved\\ | unmount /ext2_saved\\ | ||
Строка 63: | Строка 56: | ||
После удаления файла образа диск будет выглядеть примерно так -> | После удаления файла образа диск будет выглядеть примерно так -> | ||
=====Инструкция преобразование ext4 в btrfs===== | =====Инструкция преобразование ext4 в btrfs===== | ||
- | Делаем аналогично, я буду вести вас за руку, делаю на примере моего опыта преобразования раздела /home и прикручивания его на месте. | + | Делаем на примере преобразования вынесенного в отдельный раздел /home. Для этого мы перезагружаемся с LiveCD/USB и монтируем нашу корневую систему (она нам поребуется для редактирования fstab). |
- | Общий план действий, мы установили ubuntu 12.10, корень изначально отформатирован в btrfs, вот fstab: | + | Запись о /home в установленной системы 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 | # /home was on /dev/sda5 during installation | ||
UUID=34a5d56c-f6b3-46bb-b5f6-8b6cc15e4da3 /home ext4 defaults 0 2 | 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,autodefrag 0 0 | ||
- | Перезагружаем, смотрим что вышло. Запустилась? отлично, значит всё хорошо. Загружаемся с любого LiveCD образа. | ||
- | //Инструкция составлена для преобразования раздела /home при схеме разметки как выше, в вашем случае может понадобиться изменить имена разделов// | ||
- | Сначала запустить fsck #Проверим диск на наличие ошибок | + | Для начала проверим файловую систему /home на наличие ошибок: |
- | fsck.ext4 -f /dev/sda5 #ext4 т.к. раздел home выше отформатирован в её. | + | |
+ | fsck.ext4 -f /dev/sda5 # ext4 т.к. раздел home выше отформатирован в её. | ||
| | ||
- | #Преобразование из Ext* в Btrfs | + | Преобразование из ext4 в btrfs |
- | btrfs-convert /dev/sda5 #Он долго и упорно будет сканировать метадаты, у меня процесс конвертации длился больше получаса (300GB/500GB). | + | btrfs-convert /dev/sda5 # Он долго и упорно будет сканировать метаданные и копировать их, процесс конвертации может длиться очень долго. |
- | #Не трогаем не выдергиваем ждём завершения. | + | # Не трогаем не выдергиваем ждём завершения. |
| | ||
- | #Новоиспеченную btrfs можно смонтировать через наутилус и проверить наличие папок ext2_saved и папку пользователя(вашу) | + | Новоиспеченную btrfs можно смонтировать и проверить наличие папок ext2_saved и папку пользователя (вашу). |
- | #Узнаем новый адресс раздела с home | + | |
+ | Теперь нужно внести правки в fstab, но сначала нужно узнать новый идентификатор раздела с home: | ||
sudo blkid | sudo blkid | ||
- | #ищем строку с нашим разделом, вот и она: | + | # ищем строку с нашим разделом, вот и она: |
/dev/sda5: UUID="baa5d56c-f6b3-46bb-b5f6-8b6cc15e4da3" UUID_SUB="eaebe91a-5797-44d9-bc74-312316e7dbe6" TYPE="btrfs" | /dev/sda5: UUID="baa5d56c-f6b3-46bb-b5f6-8b6cc15e4da3" UUID_SUB="eaebe91a-5797-44d9-bc74-312316e7dbe6" TYPE="btrfs" | ||
- | Теперь надо исправить неправильный адрес home в fstab. Открываем наутилус, примонтируем раздел с корнем. | + | Теперь надо исправить тип файловой системы и UUID home раздела в fstab. Для этого откройте fstab в любом редакторе с правами root пользователя. |
- | sudo gedit | + | Находим строку с нашим разделом home: |
- | открываем корень, затем run -> media -> ищем среди подключенных дисков корневой раздел, открываем там будет папка "@", переходим etc -> fstab \\ | + | |
- | Отлично, находим строку с нашим разделом home: | + | |
| | ||
#/home was on /dev/sda5 during installation | #/home was on /dev/sda5 during installation | ||
UUID=34a5d56c-f6b3-46bb-b5f6-8b6cc15e4da3 /home ext4 defaults 0 2 | UUID=34a5d56c-f6b3-46bb-b5f6-8b6cc15e4da3 /home ext4 defaults 0 2 | ||
- | Теперь правим его, по аналогии с корнем, заменяем старый UUID "34a5d56c-f6b3-46bb-b5f6-8b6cc15e4da3", на новый "baa5d56c-f6b3-46bb-b5f6-8b6cc15e4da3", прописываем параметры, получаем(не забудьте исправить ext4 на btrfs): | + | |
+ | Теперь заменяем старый UUID "34a5d56c-f6b3-46bb-b5f6-8b6cc15e4da3", на новый "baa5d56c-f6b3-46bb-b5f6-8b6cc15e4da3", меняем тип файловой системы с ext4 на btrfs, должна получиться примерно такая строка : | ||
#/home was on /dev/sda5 during installation | #/home was on /dev/sda5 during installation | ||
- | UUID=baa5d56c-f6b3-46bb-b5f6-8b6cc15e4da3 /home btrfs defaults,compress,autodefrag 0 0 | + | UUID=baa5d56c-f6b3-46bb-b5f6-8b6cc15e4da3 /home btrfs defaults 0 2 |
- | Перезагружаемая, если всё сделано правильно, оно загрузиться. В крайнем случае [который не должен наступить] по вышестоящей инструкции можно вернуть ext* на место. | + | |
+ | Перегружаемся в основную систему, если всё сделано правильно, то вы не заметите никаких изменений. В крайнем случае [который не должен наступить] можно вернуть ext4 на место (выполнив обратное преобразование и вернув стрый UUID и тип файловой системы в строке монтирования /home в fstab). | ||
=====Подчистка за конвертером===== | =====Подчистка за конвертером===== | ||
- | Если переход на btrfs состоялся окончательно - то не забудьте подчистить за конвертером: | + | Если переход на btrfs состоялся окончательно и вы уже не планируете возвращать старую фс - то не забудьте подчистить за конвертером: |
- | - Удалите подраздел со снимком EXT: btrfs subvolume delete ext2_saved | + | - Удалите подраздел со снимком ext*: btrfs subvolume delete ext2_saved |
- | - Удалите системный каталог ext2-4 lost+found (он вам больше не нужен) | + | - Удалите системный каталог ext* **lost+found** (он вам больше не нужен) |
- Проведите дефрагментацию: btrfs filesystem defragment / | - Проведите дефрагментацию: btrfs filesystem defragment / | ||
- Выполните балансировку: btrfs balance start / | - Выполните балансировку: btrfs balance start / |