Переместить раздел ext4

У меня есть раздел ext4 в конце жесткого диска, и я хочу изменить его размер до полного размера диска (остальная часть диска пуста). Это не корневой раздел, а просто раздел данных, так что нет проблем с размонтированием раздела. На машине запущен сервер Ubuntu, и к нему не подключены ни экран, ни клавиатура, ни мышь, ни оптический дисковод, поэтому при запуске в режиме реального времени такой подход будет немного хлопотным, и я бы хотел этого избежать. .

Кто-нибудь знает простой способ сделать это? Для меня это оказалось гораздо более сложной задачей, чем я ожидал, но позвольте мне уточнить:

Конечно, все разделы дисков были размонтированы во время следующих операций. Сначала я попробовал через parted: я удалил первый раздел, который больше не был нужен, затем захотел изменить размер или переместить раздел ext4. Но parted сказал мне, что не может этого сделать из-за некоторых возможностей файловой системы ext4 (со странным сообщением об ошибке: «Ошибка: в файловой системе включена несовместимая функция. Совместимые функции - has_journal, dir_index, filetype, sparse_super и large_file» . Используйте tune2fs или debugfs для удаления функций. "- так что же это за несовместимые функции?); что я получил от этого, и как ответ на комментарии к другому вопросу , parted почему-то не может изменить начало раздела ext4.

Почему gparted, однако, похоже, делает свое дело (см. Первый связанный вопрос), но не расстается?

Ну, так как у меня было достаточно места в начале диска слева (больше, чем размер раздел для перемещения) Я подумал, что я бы попробовал другой подход: создать второй раздел спереди, скопировать содержимое из одного сзади в этот, затем удалить старый раздел и изменить размер нового до полного размера. Однако это также оказалось невозможным: после создания раздела и копирования содержимого (через dd if=/dev/sdb2 of=/dev/sdb1) раздел не может быть смонтирован («отсутствует журнал суперблока»).

Так что на данный момент у меня нет идей. Я, вероятно, скопирую все необходимое на другой диск, снова удалю все разделы и создам один большой. Мне интересно, что это такая проблема - или я упускаю из виду очевидное?

4
задан 13 April 2017 в 15:25

5 ответов

Это является немного трудоемким, но это может быть сделано если:

Принятие/dev/sdb1, и что освобожденное пространство больше, чем объем данных от/dev/sdb1:

Прежде чем мы запустим, давайте создадим некоторые каталоги точки монтирования в /mnt/:

mkdir /mnt/old && mkdir /mnt/new

Диск теперь похож на это:

[(.......UNALLOCATED.........)(xxxx /dev/sdb1 xxxxxx)]
  • e2fsck -f -y -v /dev/sdb1 #just, чтобы быть уверенным, что это безошибочно.
  • fdisk /dev/sdb
  • Пресса: n p 2 wq
  • mkfs.ext4 /dev/sdb2
    Теперь диск похож на это:
[(xxxxxx /dev/sdb2 xxxxxxxxxx)(xxxx /dev/sdb1 xxxxxx)]
  • mount /dev/sdb2 /mnt/new && mount /dev/sdb1 /mnt/old
  • mv /mnt/old/* /mnt/new/ (Вы получите ошибку о lost+found, можно проигнорировать его),
  • cd / && umount /mnt/old && umount /mnt/new
  • cfdisk /dev/sdb
  • Удалить sdb1
  • Выберите запись
  • Удалить sdb2
  • Выберите запись
  • Создайте новый, выберите целый доступный размер.
  • Запишите и выйдите.
  • e2fsck -f /dev/sdb1
  • resize2fs /dev/sdb1 Теперь диск похож на это:
[(xxxxxxxxxxxxxxxxxxx /dev/sdb1 xxxxxxxxxxxxxxxxxxx)]
  • mount /dev/sdb1 /your/mount/point

ЗАКОНЧЕННЫЙ!

2
ответ дан 13 April 2017 в 15:25

Вот как я это сделал на безголовых машинах только с доступом по SSH: используйте VNC и получите gparted, чтобы сделать это . Используйте openbox для минимальной среды и удалите все это один раз, если это только один раз.

sudo apt-get install vnc4server openbox gparted
vnc4server       #set a password, create initial config
vnc4server -kill :1
sed -i -e 's/x-window-manager/openbox-session/g' ~/.vnc/xstartup
vnc4server

Открыть входящий порт 5901 и получить доступ с помощью клиента VNC. Щелкните правой кнопкой мыши, чтобы запустить терминал в openbox, и вы сможете запускать любые приложения GTK +, включая gparted. apt-get remove и autoremove, если хотите, когда закончите.

0
ответ дан 13 April 2017 в 15:25

Во-первых, я сделал бы то же самое, что и Frantique, за исключением того, что я перешел бы с rsync, так как он предназначен для копирования с сохранением всех атрибутов. Команда mv не сделала бы этого.

Но если бы я действительно хотел сделать серьезную работу, так как я все равно переместил бы что-то, я бы переместил данные на том LVM2, так как это упрощает управление томами, дисками и разделами в будущем.

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

0
ответ дан 13 April 2017 в 15:25

Я вошел в направление GUI:

1) Запустите живой Linux CD (Монетный двор в моем случае)

2) Соединитесь с Интернетом

3) Получите gparted

sudo apt-get install gparted

4) После выполнения всего изменения размеров в аккуратном gparted GUI выполнял восстановление начальной загрузки.

5) https://help.ubuntu.com/community/Boot-Repair В основном сводится к получению его и причинению беспокойства ему:

sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update

sudo apt-get install -y boot-repair && boot-repair

6) Выберите фиксацию общих опций и выберите НЕ, если она спрашивает Вас, если Ваш диск является съемным (хорошо, если это не).

Решенный моя проблема.

1
ответ дан 13 April 2017 в 15:25

В первую очередь, СКОПИРУЙТЕ СВОИ ДАННЫЕ, для предотвращения потери данных.

Поскольку parted не поддерживает ext4, необходимо использовать resize2fs.

cfdisk /dev/sdx
  • Удалите раздел. ДА, УДАЛИТЕ ЕГО! (Я знаю, это звучит странным, но доверяйте мне, данные останутся там, просто не ИСПОЛЬЗУЙТЕ mkfs.ext4!)
  • И воссоздайте его с размером, который Вы хотите. Необходимо запустить его в той же самой точке, как это был оригинал. Конечная точка может переместиться. При пропавших без вести этого Вы освободите данные!
resize2fs /dev/sdxY

Не давая никакие другие параметры resize2fs, файловая система будет расширена на размер раздела.


О несовместимых функциях: это extents который используется ext4.

0
ответ дан 13 April 2017 в 15:25

Другие вопросы по тегам:

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