У меня есть раздел 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
) раздел не может быть смонтирован («отсутствует журнал суперблока»).
Так что на данный момент у меня нет идей. Я, вероятно, скопирую все необходимое на другой диск, снова удалю все разделы и создам один большой. Мне интересно, что это такая проблема - или я упускаю из виду очевидное?
Это является немного трудоемким, но это может быть сделано если:
Принятие/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
ЗАКОНЧЕННЫЙ!
Вот как я это сделал на безголовых машинах только с доступом по 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
, если хотите, когда закончите.
Во-первых, я сделал бы то же самое, что и Frantique, за исключением того, что я перешел бы с rsync
, так как он предназначен для копирования с сохранением всех атрибутов. Команда mv
не сделала бы этого.
Но если бы я действительно хотел сделать серьезную работу, так как я все равно переместил бы что-то, я бы переместил данные на том LVM2, так как это упрощает управление томами, дисками и разделами в будущем.
Как будто вы хотите добавить больше места, просто добавьте диск в группу томов. Добавьте, удалите или измените размер разделов, просто сделайте это на логическом томе. Не нужно думать о физической раскладке. Чтобы удалить данные с диска, который начинает сообщать о множестве ошибок, просто добавьте новый диск, затем переместите данные с неисправного и затем удалите диск из тома. Все данные перемещаются с одного диска на другой.
Я вошел в направление 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) Выберите фиксацию общих опций и выберите НЕ, если она спрашивает Вас, если Ваш диск является съемным (хорошо, если это не).
Решенный моя проблема.
В первую очередь, СКОПИРУЙТЕ СВОИ ДАННЫЕ, для предотвращения потери данных.
Поскольку parted
не поддерживает ext4, необходимо использовать resize2fs
.
cfdisk /dev/sdx
mkfs.ext4
!)resize2fs /dev/sdxY
Не давая никакие другие параметры resize2fs
, файловая система будет расширена на размер раздела.
О несовместимых функциях: это extents
который используется ext4.