Как можно «разбить» диск без разделов, не теряя данные?

Как можно «разбить» диск без разделов, не теряя данные?

У меня есть портативный жесткий диск на 1 ТБ, который я использую для резервного копирования. Весь диск ( /dev/sdb) отформатирован как ext4файловая система.

Я читал о преимуществах btrfsрезервного копирования (контрольные суммы, самовосстановление и т. д.) и подумываю о конвертации этого диска из ext4формата btrfs.

Я почти уверен, что я все еще могу изменить размер диска ( e2fsck -f /dev/sdb && resize2fs /dev/sdb 500G && fdisk /dev/sdbили около того). Однако я не уверен, как "ввести" разделы на устройство, на котором изначально не было разделов.

Можно ли это сделать, и если да, то как?

(Обратите внимание, что сами файловые системы — ext4, btrfs, и т. д. — по сути не имеют значения — вопрос заключается исключительно в разбиении устройства, которое изначально было создано без раздела, и в том, чтобы сделать это без потери существующей файловой системы.)

решение1

Таблицы разделов (по крайней мере, в стиле MBR или GPT) располагаются в начале и/или в конце дисков, поэтому вы можете добавить их, если сможете освободить необходимое место.

Работая с терабайтным диском, я бы действовал следующим образом.

  1. Измените размер файловой системы ext4 до 499G (ошибаясь на всякий случай). Это гарантирует, что все данные, структура файловой системы и т. д. поместятся в первые 499G блоков на диске. В идеале вам следует уменьшить файловую систему настолько, насколько это возможно, что уменьшит объем данных, которые вам нужно будет копировать на последующих этапах.
  2. Скопируйте блоки на вторую половину диска, используя ddили аналогичный инструмент.
  3. Разбейте диск на разделы, создав один раздел, который немного больше файловой системы (500G). Используйте для этого GPT; вы перезапишете блоки в начале и конце диска, поэтому копия файловой системы в начале диска теперь будет уничтожена.
  4. Скопируйте необработанные блоки со второй половины диска на вновь созданный раздел, снова используя ddили что-то подобное. Вам нужно будет рассчитать смещения и размеры на основе того, что вы сделали в шаге 2, но цель проста ( /dev/sdX1).
  5. Измените размер файловой системы еще раз, чтобы она заняла весь раздел.

С помощью такого инструмента, какddrescueкоторый может копировать в обратном порядке, вы можете немного упростить это:

  1. Измените размер исходной файловой системы настолько, насколько это возможно.
  2. Рассчитайте, где будет начинаться первый раздел (фактически не создавая таблицу разделов).
  3. Переместите блоки, составляющие исходную файловую систему, так, чтобы они начинались там, где начинался бы первый раздел. (Именно с этого конца вам нужно начать копирование.)
  4. Разбейте диск на разделы.
  5. Измените размер файловой системы.

Учитывая объем копирования, было бы проще сделать резервную копию данных в другом месте и восстановить их! Вы можете ограничить объем копирования, сохранив начало файловой системы ext4 и восстановив его, а затем остальные данные, но это требует более тщательного учета.

решение2

Я успешно переразметил диск на 2 ТБ без потери данных. Я хотел выполнить резервное копирование с GNU/Linux box и Windows box, поэтому я уменьшил раздел EXT4 до 1 ТБ и создал новый раздел на 1 ТБ, который я отформатировал как файловую систему NTFS.

Все, что мне нужно было сделать, это использовать приложение GUI Disks в Ubuntu. В других дистрибутивах должно быть похожее приложение GUI для управления разделами. Я думаю, что использование BTRFS вместо NTFS будет работать так же хорошо.

Конечно, вы также сможете выполнить переразметку из терминала.

решение3

Я в замешательстве.

Вы сказали, что диск отформатирован как ext4, поэтому выдействительно естьраздел. Возможно, fdisk не показывает его, потому что таблица разделов диска — gpt, а ваш fdisk ее не поддерживает. В этом случае вы можете использовать parted

sudo parted -l /dev/sdb

Кроме этого, вы можете конвертировать ext4 в btrfsкак сказано в этом руководстве по Arch Linux.

Связанный контент