2

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

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

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

2 ответа2

6

Я мог бы:

  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. Таким образом, вы знаете, что у вас есть полностью рабочая копия файловой системы в другом месте, прежде чем стирать ее со старого места, и можете легко вернуться к старой настройке и прервать / повторить попытку, если вы обнаружите проблемы на этом этапе.

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

1

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .