Самый быстрый способ конвертировать отформатированный ext4 диск в LVM с ext4 на нем?

12

В настоящее время я делаю, cp -aRчтобы скопировать данные с моего (заполненного на 99%) 1TB ext4 отформатированного диска на новый диск LVM-with-ext4-on-it. Это займет вечность.

Есть ли способ попытаться «конвертировать» диск на место? Я на EC2, поэтому резервное копирование занимает минуты.

Или, в качестве альтернативы, есть ли способ быстрее, чем cpнапрямую копировать файловую систему ext4 на диск LVM?

Максимум
источник

Ответы:

22

Я написал блоки (née lvmify), которые делают это преобразование на месте. Он работает, немного сжимая файловую систему, перемещая начало файловой системы в конец раздела и копируя суперблок LVM (предварительно настроенный с нужным PV / LV / VG) на его место.

Габриель
источник
это звучит действительно интересно! Я подумываю о резервном копировании 500 ГБ в другой раздел (это уже lvm), чтобы попробовать!
Водолей Сила
1
@ Габриэль, это будет работать на живых фс? Я имею в виду, нужно ли размонтировать ФС, а затем она сделает это на месте, или она будет работать даже на монтированной в ar / w корневой ФС?
Гавриил
1
@AmrMostafa: "Довольно" твердый? У меня есть эта вещь о моих файловых системах, мне нужно , чтобы они были рок твердый ... :-)
TJ Crowder
3
Пользователям Ubuntu Trusty + будет сложно установить необходимый питон 3.3 .. доступно только 3.4, а блоки не обновлялись с декабря 2014 года: /
bksunday
1
Несмотря на то, что он был обновлен 5 ушами назад, он сталелитейный. Подтверждено на NVMe SSD, схема разбиения GPT. Примечание: лучше использовать Python 3.6.
Тош
2

Я не уверен, как конвертировать диск в реальном времени, но я думаю, что rsync будет лучшим и более безопасным способом копирования ваших данных. Это позволит вам возобновить и сохранить данные без изменений в случае остановки передачи.

Я нашел аналогичный процесс, когда кто-то добавил внешний диск в свою локальную систему в качестве LVM. Не так много информации, но я думаю, что этого будет достаточно, чтобы начать:

«Итак, сегодня я обнаружил, что это потрясающий LVM. Устанавливая Debian, я выбрал« LVM - Использовать весь диск ». Но основным диском был медленный и маленький 5200rpm ноутбук». Сегодня я вставил свой запасной диск 1,5 ТБ и загрузился. Требуется. вместо этого система на этом более быстром диске.

Подход LVM: добавьте / dev / sdc в группу томов, затем запустите «pvmove / dev / sda». Это перемещает все данные из sda на другие диски (доступен только sdc). Не нужно перезагружать, не нужно размонтировать. Пока я пишу это, данные перемещаются.

Позже выполните «vgreduce megatron / dev / sda», чтобы удалить медленный диск из группы томов и вуаля. Данные перемещены. (Мегатрон - это имя группы томов и моего компьютера). Для многих это может быть старой новостью, но я просто подумал, что это действительно круто :) »

Конечно, это было сделано на месте, но я думаю, что с дополнительными исследованиями, вы, возможно, сможете это сделать.

источник

bmurtagh
источник
2

Не существует способа сделать такое преобразование LVM «на лету».

LVM фактически находится в вашей файловой системе, чтобы распространять его на несколько физических устройств, или разделять, или отражать, и т. Д. Последний шаг в создании логического тома - это положить файловую систему поверх него. Вот примеры из RHEL6.

Что вам нужно сделать, это создать резервную копию или архивировать данные на этом устройстве, а затем уничтожить существующую файловую систему, создать логический том и переместить файловую систему поверх. Если это корневая файловая система на ОС Linux, рассмотрите возможность переустановки. Это может быть быстрее.

Мне нравятся более быстрые копии, ddно я не пользуюсь ими часто. Ошибиться с ddопасно. Одна вещь, которую вы можете попробовать - tar czv <source fs> | (cd <destination fs>; tar x)это передать сжатый tar-файл на лету.

Удачи!

Давит
источник
1
Использование сжатия в операции tar не имеет никакого смысла. Единственное место, где данные будут сжаты, - это оперативная память, так как она передана по каналу; затем он сразу же снова распаковывается, прежде чем записывается на диск. Только теперь операция генерирует многократно большую нагрузку на процессор, поскольку она сжимает и распаковывает, бесполезно, на лету. Кроме того, для любой операции, подобной этой, которая затрагивает целые файловые системы, вы захотите по крайней мере tar cSf - | tar xvpf - обрабатывать редкие файлы и разрешения. Возможно, --selinuxтоже (если конечный том впоследствии заменит источник).
февраля
Это хороший момент, если ваши исходное и целевое устройства находятся на одном хосте или если у вас нет свободных циклов ЦП. Это пункты для рассмотрения в каждом конкретном случае. Мне нравятся переключатели "S" и "p" и аргумент "--selinux".
dafydd
Ммм, ну, если кто-то клонирует файловую систему, отправляя операцию tar на лету через сетевую ссылку, то (а) они храбрее, чем я, но (б) вы, возможно, НЕ захотите, -pесли хосты не используют общие имена пользователей / UID (хотя man-страница напоминает мне, что -pэто GNU tar по умолчанию при запуске от имени root), и --selinuxэто чревато еще большей опасностью - вероятно, лучше просто сделать restorecon -Rv(или -Rp) над всем этим, как только он будет смонтирован в правильном (окончательном) ) место расположения.
февраля
dd - подходящий инструмент для этой операции, так как вы копируете раздел. dd сделает точную копию на новом разделе, затем вы измените fstab для загрузки с нового раздела вместо старого. После того, как вы закончили перемещение всех разделов со старого диска, вы можете уничтожить файловую систему и добавить диск в группу физических дисков LVM, а затем использовать пространство для расширения разделов по своему усмотрению.
Ксалори