Каков наилучший способ клонирования раздела Linux на меньший раздел?

6146
thecoop

В настоящее время у меня есть 80 ГБ RAID 0 (да, я знаю, именно поэтому я меняю его). Устройство ext3 Linux, которое свободно примерно на 80%, и я хочу изменить его на раздел ext4 40 ГБ, используя один предыдущих разделов RAID 0. У меня есть достаточно свободного места на другом большом разделе для всех файлов, и лучший способ, который я подумал сделать, это переключение:

  1. cp -a все файлы в файловой системе в каталог под большим разделом
  2. перераспределение
  3. cp -a все файлы обратно в новый раздел

Дело в том, что я беспокоюсь о специальных свойствах файлов (это корневое устройство Linux); будет cp -aдержать все необходимые свойства файла, чтобы новый раздел загрузочный позже? Я пропускаю другой способ сделать это?

2

2 ответа на вопрос

6
David Spillett

Я мог бы:

  1. измените размер файловой системы на месте с помощью чего-то подобного. resize2fs -p /dev/<device_name_fs_is_on> 20G
    Он, несомненно, откажется запускаться в первый раз, что предполагает, что вы запустите fsckсначала. Вы можете заставить его работать, но fsckоперация настоятельно рекомендуется, так как попытка изменить размер файловой системы с ошибками (даже незначительными) может привести к катастрофе. Повторите команду resize после завершения проверки.
  2. скопируйте его на другой диск с помощью dd if=/dev/<device_name_fs_is_on> of=/path/to/other/location/filesystem.img bs=1048576 count=20480
  3. переформатировать диски по мере необходимости
  4. скопировать файловую систему обратно с dd if=/path/to/other/location/filesystem.img of=/dev/<new_device_name>
  5. изменить размер, чтобы заполнить новый раздел resize2fs -p /dev/<new_device_name>
  6. смонтировать недавно измененную файловую систему и отредактировать любую соответствующую конфигурацию, например, / etc / fstab
  7. вам также нужно будет проверить конфигурацию grub, чтобы убедиться, что она ссылается на имя нового корневого раздела, и вам, возможно, придется пересобрать свой initrd (хотя, вероятно, не так, как вы переходите с RAID на нормальный режим, а не наоборот, что вызывает проблемы, если initrd не поддерживает RAID)
  8. скрестите пальцы и перезагрузите компьютер ...

Поскольку это ваша корневая файловая система, вам нужно будет сделать это с live CD, так как вы не сможете изменить размер файловой системы (шаг 2), пока она смонтирована.

Если вы измените 20G, переданный на resize2fsшаге 1, убедитесь, что вы изменили 1048576x20480, переданный на ddшаге 2, соответственно.

Очевидно, что это не безрисковая операция, поэтому вам может потребоваться выполнить отдельное резервное копирование важных данных + конфигурации в файловой системе другими способами до шага 3.
Для еще большей безопасности: если у вас есть время и запасной диск, восстановите сжатую файловую систему в дополнительный диск, перенастройте его в соответствии с шагами 6 и 7 и убедитесь, что вы можете загрузиться с него перед переходом к шагу 3. Таким образом, вы знаете, что у вас есть полностью рабочая копия файловой системы в другом месте, прежде чем стереть ее из старого расположения, и может легко вернуться к старой настройке и прервать / повторить попытку, если вы обнаружите проблемы на этом этапе.

Таким образом, вы не потеряете какие-либо свойства файла / каталога / устройства при копировании данных, поскольку вы работаете с файловой системой оптом, а не с отдельными файлами, каталогами и узлами устройств.

Использование pv вместо dd может дать прогресс в клонировании диска. Как и в случае с dd, пользователь не увидит прогресс до конца процесса или ошибку. pbies 10 лет назад 0
@pbies вы можете увидеть прогресс с дд. Этот метод открывает новую оболочку и находит pd dd: `pgrep -l '^ dd $'`, затем запускает наблюдение и уничтожает pid `watch -n 10 kill -USR1 8789` Это будет выводить прогресс dd каждые 10 секунд. Verdi Erel Ergün 10 лет назад 0
Я обычно использую `pv` для индикатора прогресса, но я придерживаюсь` dd` и `cat`, когда публично даю примеры, так как они встречаются почти везде, а `vv`, хотя он по-прежнему доступен по умолчанию в дистрибутивах Linux, гораздо меньше часто используется при установке из коробки. David Spillett 10 лет назад 0
1
Neal

Я никогда не использовал его, но есть программа для создания образов разделов, partimageкоторая доступна на компакт-диске System Rescue .

Я не уверен, что произойдет, если вы используете partimage, но если вы используете cp (будьте осторожны, не пытайтесь копировать каталог, в который вы копируете, когда вы делаете свою копию, которая может понадобиться cp -ax), вам придется переустановить Grub, так как жесткие коды физических жестких дисков, которые будут меняться во время копирования.

Оба раза я использовал компакт-диск System Rescue и часть образа, это работало хорошо. Но часть изображения может быть восстановлена ​​только в раздел того же размера или больше. Rodney Schuler 14 лет назад 0
Уменьшить его перед съемкой? Но тогда я думаю, что придется перезарядить, что займет целую вечность, теряя преимущество (partimage не копирует пустые блоки - 80% вашего диска), которое partimage имеет над dd. Neal 14 лет назад 0

Похожие вопросы