CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
29.06.2016

Последние комментарии

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Заметки

Преобразование ext3fs в btrfs

Оригинал

Btrfs содержит очень мало метаданных, которые имеют фиксированное положение, что делает относительно лёгкой разработку утилит преобразования в неё из других файловых систем. Алгоритмы Copy on write позволяют Btrfs сохранять неизмененную копию исходной файловой системы, а администратору позволяют отменить преобразование, даже после выполнения изменений в итоговой файловой системе Btrfs.

Программа преобразования использует libe2fs для чтения метаданных Ext3, и использует свободные блоки в ней для помещения в них новую файловую систему Btrfs. Основной алгоритм преобразования работает так:

  • дублирует первый 1 Мбайт устройства;
  • дублирует каталоги и inodes, создавая их копии в Btrfs;
  • делает ссылки на блоки данных файла Ext3 в файлах Btrfs.

Таким образом создаются копии всех метаданных Ext3, но файлы Btrfs являются просто указателями на те же самые блоки, которые заняты файлами Ext3. Это разделяет большую часть блоков между этими двумя файловыми системами. Поскольку Btrfs использует Copy on write для всех модификаций файла, оригинальная версия блоков данных файла Ext3 сохраняется.

Первый 1 МБ устройства копируется в альтернативную область для того, чтобы в него могли быть записаны метаданные Btrfs. Отмена преобразования заключается просто в восстановлении этих блоков.

Результат преобразования выглядит примерно так:

Конверсионная программа создает в Btrfs снапшот со ссылками на все блоки, используемые Ext3, позволяя администратору определять время, в течение которого будет сохраняться оригинальная файловая система Ext3. Если администратор захочет освободить место, занимаемое реликтами Ext3, снапошот можно удалить, после чего преобразование станет необратимым.

Пока снапшот не удален, для хранения новых модификаций Btrfs могут использоваться только те блоки, которые были помечены в Ext3 как свободные. Это означает, что преобразование может быть отменено когда угодно в любое время, с восстановлением исходной файловой системы Ext3. Конвертер создает отдельный файл, содержащий все ссылки на исходную файловую систему Ext3, и смещения в этом файле соответствуют смещениям на блочном устройстве. Это позволяет администратору монтировать этот файл как loopback-устройство в режиме read only и видеть исходную файловую систему Ext3 и преобразованную файловую систему Btrfs одновременно.

Пример использования:

# Сначала запустить 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

В приведённом выше примере файлы в /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. После удаления файла образа диск будет выглядеть примерно так:





Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds