Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия | |||
wiki:ext_to_btrfs [2016/11/09 12:01] [Инструкция преобразование ext4 в btrfs] |
wiki:ext_to_btrfs [2016/11/09 13:25] (текущий) |
||
---|---|---|---|
Строка 21: | Строка 21: | ||
Пока снапшот ext* не удален, для хранения новых и сохранения модифицированных файлов/каталогов btrfs использует только те блоки, которые были помечены в ext* как свободные. Это означает, что преобразование может быть отменено когда угодно в любое время, с восстановлением исходной файловой системы ext*. Конвертер создает отдельный файл, содержащий все ссылки на исходную файловую систему ext*, и смещения в этом файле соответствуют смещениям на блочном устройстве. Это позволяет монтировать этот файл как loopback-устройство в режиме read only и видеть исходную файловую систему ext* одновременно с работой в файловой системой btrfs. | Пока снапшот ext* не удален, для хранения новых и сохранения модифицированных файлов/каталогов btrfs использует только те блоки, которые были помечены в ext* как свободные. Это означает, что преобразование может быть отменено когда угодно в любое время, с восстановлением исходной файловой системы ext*. Конвертер создает отдельный файл, содержащий все ссылки на исходную файловую систему ext*, и смещения в этом файле соответствуют смещениям на блочном устройстве. Это позволяет монтировать этот файл как loopback-устройство в режиме read only и видеть исходную файловую систему ext* одновременно с работой в файловой системой btrfs. | ||
+ | <note important>Обратите внимание: при конвертировании для размещения файлов из старой ext* системы используется корневой подтом (о подтомах можно узнать в статье про [[wiki:btrfs|Btrfs]]). Тогда как инсталятор обычно размещает корень в подтоме @ и домашний каталог /home в подтоме @home.</note> | ||
- | =====Пример конвертирования ext3===== | + | |
- | <note important>В примере предполагается, что вы работаете с несмонтированным разделом, если нужно преобразовать корневую файловую систему, то загрузитесь с LiveCd/USB для выполнения этих действий.</note> | + | =====Пример конвертирования ext*===== |
- | <note important>/dev/sdX в командах нужно заменить на реальное имя устройства с которым вы выполняете операции): | + | В примере предполагается, что вы работаете с несмонтированным разделом, если нужно преобразовать корневую файловую систему, то загрузитесь с LiveCd/USB для выполнения этих действий. В примере мы преобразуем ext4 в btrfs, преобразование ext2 и ext3 ничем принципиально не отличается. |
+ | <note important>/dev/sdX в командах нужно заменить на реальное имя устройства с которым вы выполняете операции. | ||
</note> | </note> | ||
- | # Сначала проверьте целостность файловой системы ext3\\ | + | # Сначала проверьте целостность файловой системы ext4 |
- | fsck.ext3 -f /dev/sdX\\ | + | fsck.ext4 -f /dev/sdX |
- | # Преобразование ext3 в btrfs\\ | + | # Преобразование ext4 в btrfs |
- | btrfs-convert /dev/sdX\\ | + | btrfs-convert /dev/sdX |
- | # Монтирование новообразованной файловой системы btrfs\\ | + | # Монтирование новой файловой системы btrfs |
- | mount -t btrfs /dev/sdX /btrfs\\ | + | mount -t btrfs /dev/sdX /btrfs |
- | # Монтирование снапшота ext3\\ | + | # Монтирование снапшота ext4 |
- | mount -t btrfs -o subvol=ext2_saved /dev/sdX /ext2_saved\\ | + | mount -t btrfs -o subvol=ext2_saved /dev/sdX /ext2_saved |
- | # Монтирование файла образа как loopback-устройства\\ | + | # Монтирование файла образа как loopback-устройства |
- | mount -t ext3 -o loop,ro /ext2_saved/image /ext3\\ | + | mount -t ext4 -o loop,ro /ext2_saved/image /ext3\\ |
- | {{ :wiki:converter-post.png|}} В приведённом выше примере файлы в /ext3 и в /btrfs будут идентичны. Любые модификации, выполненные в /btrfs, не будут видны в /ext3. Обратное преобразование делается так: | + | |
- | # Отмонтируем все элементы файловой системы смонтированные ранее\\ | + | {{ :wiki:converter-post.png|}} В приведённом выше примере файлы в /ext4 и в /btrfs будут идентичны. Любые модификации, выполненные в /btrfs, не будут видны в /ext4. Обратное преобразование делается так: |
- | unmount /ext3\\ | + | |
- | unmount /ext2_saved\\ | + | |
- | unmount /btrfs\\ | + | |
- | # Обратное преобразование\\ | + | # Отмонтируем все элементы файловой системы смонтированные ранее |
- | btrfs-convert -r /dev/sdX\\ | + | unmount /ext4 |
+ | unmount /ext2_saved | ||
+ | unmount /btrfs | ||
- | # Монтирование исходной файловой системы\\ | + | # Обратное преобразование |
- | mount -t ext3 /dev/sdX /ext3\\ | + | btrfs-convert -r /dev/sdX |
+ | |||
+ | # Монтирование исходной файловой системы | ||
+ | mount -t ext4 /dev/sdX /ext4 | ||
- | Если вы хотите освободить место, занятое снимком исходной файловой системой ext3 (т.е. вы решили, что уже не нужно обратное преобразование), просто удалите файл /ext2_saved/image. | ||
После удаления файла образа диск будет выглядеть примерно так -> | После удаления файла образа диск будет выглядеть примерно так -> | ||
- | =====Инструкция преобразование ext4 в btrfs===== | ||
- | Делаем на примере преобразования вынесенного в отдельный раздел /home. Для этого мы перезагружаемся с LiveCD/USB и монтируем нашу корневую систему (она нам поребуется для редактирования fstab). | ||
- | Запись о /home в установленной системы fstab выглядит примерно так так: | ||
- | |||
- | # /home was on /dev/sda5 during installation | ||
- | UUID=34a5d56c-f6b3-46bb-b5f6-8b6cc15e4da3 /home ext4 defaults 0 2 | ||
- | |||
- | Для начала проверим файловую систему /home на наличие ошибок: | ||
- | |||
- | fsck.ext4 -f /dev/sda5 # ext4 т.к. раздел home выше отформатирован в её. | ||
- | | ||
- | Преобразование из ext4 в btrfs | ||
- | btrfs-convert /dev/sda5 # Он долго и упорно будет сканировать метаданные и копировать их, процесс конвертации может длиться очень долго. | ||
- | # Не трогаем не выдергиваем ждём завершения. | ||
- | | ||
- | Новоиспеченную btrfs можно смонтировать и проверить наличие папок ext2_saved и папку пользователя (вашу). | ||
- | |||
- | Теперь нужно внести правки в fstab, но сначала нужно узнать новый идентификатор раздела с home: | ||
- | sudo blkid | ||
- | # ищем строку с нашим разделом, вот и она: | ||
- | /dev/sda5: UUID="baa5d56c-f6b3-46bb-b5f6-8b6cc15e4da3" UUID_SUB="eaebe91a-5797-44d9-bc74-312316e7dbe6" TYPE="btrfs" | ||
- | Теперь надо исправить тип файловой системы и UUID home раздела в fstab. Для этого откройте fstab в любом редакторе с правами root пользователя. | ||
- | Находим строку с нашим разделом 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 0 2 | ||
- | |||
- | Перегружаемся в основную систему, если всё сделано правильно, то вы не заметите никаких изменений. В крайнем случае [который не должен наступить] можно вернуть ext4 на место (выполнив обратное преобразование и вернув стрый UUID и тип файловой системы в строке монтирования /home в fstab). | ||
=====Подчистка за конвертером===== | =====Подчистка за конвертером===== | ||
Строка 93: | Строка 63: | ||
- Удалите подраздел со снимком ext*: btrfs subvolume delete ext2_saved | - Удалите подраздел со снимком ext*: btrfs subvolume delete ext2_saved | ||
- Удалите системный каталог ext* **lost+found** (он вам больше не нужен) | - Удалите системный каталог ext* **lost+found** (он вам больше не нужен) | ||
- | - Проведите дефрагментацию: btrfs filesystem defragment / | + | - Проведите дефрагментацию: btrfs filesystem defragment <точка монтирования btrfs> |
- | - Выполните балансировку: btrfs balance start / | + | - Выполните балансировку: btrfs balance start <точка монтирования btrfs> |
===== Ссылки ===== | ===== Ссылки ===== | ||