Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия | |||
| 
                    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> | 
| ===== Ссылки ===== | ===== Ссылки ===== | ||