
У меня есть портативный жесткий диск на 1 ТБ, который я использую для резервного копирования. Весь диск ( /dev/sdb
) отформатирован как ext4
файловая система.
Я читал о преимуществах btrfs
резервного копирования (контрольные суммы, самовосстановление и т. д.) и подумываю о конвертации этого диска из ext4
формата btrfs
.
Я почти уверен, что я все еще могу изменить размер диска ( e2fsck -f /dev/sdb && resize2fs /dev/sdb 500G && fdisk /dev/sdb
или около того). Однако я не уверен, как "ввести" разделы на устройство, на котором изначально не было разделов.
Можно ли это сделать, и если да, то как?
(Обратите внимание, что сами файловые системы — ext4
, btrfs
, и т. д. — по сути не имеют значения — вопрос заключается исключительно в разбиении устройства, которое изначально было создано без раздела, и в том, чтобы сделать это без потери существующей файловой системы.)
решение1
Таблицы разделов (по крайней мере, в стиле MBR или GPT) располагаются в начале и/или в конце дисков, поэтому вы можете добавить их, если сможете освободить необходимое место.
Работая с терабайтным диском, я бы действовал следующим образом.
- Измените размер файловой системы ext4 до 499G (ошибаясь на всякий случай). Это гарантирует, что все данные, структура файловой системы и т. д. поместятся в первые 499G блоков на диске. В идеале вам следует уменьшить файловую систему настолько, насколько это возможно, что уменьшит объем данных, которые вам нужно будет копировать на последующих этапах.
- Скопируйте блоки на вторую половину диска, используя
dd
или аналогичный инструмент. - Разбейте диск на разделы, создав один раздел, который немного больше файловой системы (500G). Используйте для этого GPT; вы перезапишете блоки в начале и конце диска, поэтому копия файловой системы в начале диска теперь будет уничтожена.
- Скопируйте необработанные блоки со второй половины диска на вновь созданный раздел, снова используя
dd
или что-то подобное. Вам нужно будет рассчитать смещения и размеры на основе того, что вы сделали в шаге 2, но цель проста (/dev/sdX1
). - Измените размер файловой системы еще раз, чтобы она заняла весь раздел.
С помощью такого инструмента, какddrescue
который может копировать в обратном порядке, вы можете немного упростить это:
- Измените размер исходной файловой системы настолько, насколько это возможно.
- Рассчитайте, где будет начинаться первый раздел (фактически не создавая таблицу разделов).
- Переместите блоки, составляющие исходную файловую систему, так, чтобы они начинались там, где начинался бы первый раздел. (Именно с этого конца вам нужно начать копирование.)
- Разбейте диск на разделы.
- Измените размер файловой системы.
Учитывая объем копирования, было бы проще сделать резервную копию данных в другом месте и восстановить их! Вы можете ограничить объем копирования, сохранив начало файловой системы 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.