У меня есть диск на 400 ГБ с разделом ext4 на 320 ГБ. Я хотел бы увеличить раздел ext4, чтобы использовать оставшееся пространство (80 ГБ свободного места).
+--------------------------------+--------+
| ext4 | Free |
+--------------------------------+--------+
Как я мог это сделать?
Я видел людей, использующих resize2fs
но я не понимаю, изменяет ли он размер раздела.
Другое решение - использовать fdisk
но я не хочу удалять свой раздел и терять данные. Как я мог просто увеличить раздел, не теряя ни одного файла?
Примечание. Я говорю о несмонтированном разделе данных без LVM, и у меня есть резервные копии, но я бы не хотел тратить некоторое время на восстановление.
Вы должны начать с размонтированного раздела. Если вы не можете его размонтировать (например, это ваш корневой раздел или что-то еще, что нужно запустить системе), используйте что-то вроде Компакт-диск аварийного восстановления системы вместо.
Бегать parted
, или gparted
если вы предпочитаете графический интерфейс, измените размер раздела, чтобы использовать дополнительное пространство. я предпочитаю gparted
поскольку он дает вам красивое графическое представление, очень похожее на то, которое вы нарисовали в своем вопросе.
resize2fs /dev/whatever
e2fsck /dev/whatever
(просто чтобы узнать, в безопасности ли вы)
Перемонтируйте свой раздел.
Хотя я никогда не видел такой ошибки, сначала сделайте резервную копию своих данных!
Да, вы можете вырастить EXT4 fs онлайн, если у вас уже есть отсортированный раздел. Вы отсортировали разделы? У тебя есть LVM?
sudo resize2fs /dev/drive_to_grow
fdisk
изменит размер вашего раздела, правда, но если это корневой раздел (или, если на самом деле, любой смонтированный раздел), его сначала нужно будет размонтировать. Так что скорее всего оффлайн!
Как и во всем, что связано с операциями с диском / файловой системой, я настоятельно рекомендую иметь резервную копию и протестированный, хорошо понятый процесс восстановления.
Обратите внимание: на некоторых серверах VDS у вас может быть неосновной корневой раздел, и сначала потребуется изменить размер контейнера расширенных разделов.
Например, вы только что обновили свой тарифный план и получили что-то вроде:
Disk /dev/vda: 83886080s
Number Start End Size Type File system Flags
1 2048s 194559s 192512s primary ext2 boot
2 196606s 51197951s 51001346s extended
5 196608s 51197951s 51001344s logical ext4
Здесь / dev / vda2 - ваш расширенный контейнер. И / dev / vda5 - основной раздел, размер которого нам нужно изменить до полного доступного пространства.
Самый простой способ:
apt-get -y install parted
parted /dev/vda unit s print all # print current data for a case
parted /dev/vda resizepart 2 yes -- -1s # resize /dev/vda2 first
parted /dev/vda resizepart 5 yes -- -1s # resize /dev/vda5
partprobe /dev/vda # re-read partition table
resize2fs /dev/vda5 # get your space
parted
жестяная банка resize
разделы и их файловые системы.
Parted не работает на ext4 на Centos. Мне пришлось использовать fdisk для удаления и воссоздания раздела, который (я подтвердил) работает без потери данных. Я пошел по шагам в http://geekpeek.net/resize-filesystem-fdisk-resize2fs/. Вот они, вкратце:
$ sudo fdisk /dev/sdx
> c
> u
> p
> d
> p
> w
$ sudo fdisk /dev/sdx
> c
> u
> p
> n
> p
> 1
> (default)
> (default)
> p
> w
Ты можешь использовать fdisk
или cfdisk
чтобы изменить (или воссоздать) раздел (только убедитесь, что вы не измените его начальную границу), затем перезагрузитесь и resize2fs
. Но в целом предпочтительнее использовать LVM-2 вместо MBR / GPT, так как это позволяет вносить эти изменения без перезагрузки ядра.
Просто чтобы прояснить, как я это делаю для тех, кто все еще читает эту ветку.
Если вы хотите изменить размер загрузочного раздела, вы должны загрузиться с «аварийного» диска bootcd или bootusb, который представляет собой просто Live Linux. Это позволяет вам запускать Linux на машине, отличной от диска, на котором вы хотите внести изменения.
Я думаю, что лучшим "спасательным" cd или usb в этом случае будет загрузочный gparted USB или CD.
Случаи, в которых нужен спасательный образ
1. Расширяемый раздел - это последний раздел, но вы загрузились с него и не можете его размонтировать.
sda1 = загрузка (или свопинг)
sda2 = своп (или загрузка)
sda3 = /
Неиспользуемое пространство
Если вы хотите изменить смонтированный раздел, который не является «корневым» разделом (/), например / home, который является другим разделом, то нет необходимости использовать аварийный образ. Это особенно актуально, если это последний раздел.
sda1 = загрузка
sda2 = /
sda3 = / home
неиспользуемое пространство
-или-
sda1 = /
sda2 = / home
неиспользуемое пространство
Это ситуация, когда я беру образ с меньшего диска или SSD и перемещаю его на больший SSD.
В этом случае вам просто нужно размонтировать / home, пока вы его расширяете. Но чтобы размонтировать / home, вам нужно убедиться, что вы не вошли в какую-либо учетную запись пользователя, домашний каталог которой находится внутри нее. Поскольку домашний каталог пользователя "root" находится непосредственно под системным root /, как в / root, если вы можете войти в систему root, вы можете отключить / home
Я выхожу из сеанса GUI (KDE / Gnome / etc) и использую [CTRL] + [ALT] + [F1], чтобы открыть сеанс оболочки.
Если вы только что вышли из системы, чтобы закрыть все файлы, Linux может потребоваться 20-30 секунд, поэтому вы можете получить ошибки при попытке umount / home.
1. umount / home (я повторяю эту команду, если она не работает в течение 30 секунд, затем просматриваю другие сеансы, чтобы узнать, не нахожусь ли я где-нибудь "cd / home / xxx".)
2. разделен / dev / sda
а. изменить размер x (x = раздел, размер которого вы хотите изменить, используйте "p", чтобы получить список разделов)
б. Введите последний сектор resize = "-1" (минус 1 означает 1 сектор от конца диска)
c. q (уходит расстаться)
3 resize2fs / dev / sda "x" (x = раздел, размер которого нужно изменить. Это также перемонтирует файловую систему)
4. df -m (проверяю / home, чтобы убедиться, что размер изменился)
Я никогда не терял файлы и не повредил диск с помощью этого метода.
Удачи
Принятый ответ несколько устарел: лучше изменить размер файловой системы ext4 онлайн а не в автономном режиме, поскольку путь кода расширения онлайн используется гораздо чаще, чем автономный.
Вероятно, более сложным является расширение базового раздела, если вы не используете LVM и у вас есть свободное место в группе томов. Чтобы расширить раздел онлайн, вы можете использовать fdisk
или parted
; тогда вам пришлось бежать kpartx <device>
чтобы сообщить ядру об изменении. Если вы используете LVM, вам необходимо pvresize
раздел с измененным размером до lvresize
громкость.
Наконец, вы можете выдать resize2fs
ваша файловая система.
Меня попросили увеличить диск, смонтированный как / scratch на сервере Dell под управлением CentOS 7, не отвлекая текущих пользователей. Это был раздел XFS на диске RAID 0 с обычной меткой GPT. Это будет работать для раздела ext4 почти таким же образом - см. Ниже.
Вот как я сделал это, не отключаясь, не перезагружая и не прерывая работу системы. Я просто использовал команды Linux (и инструменты Dell RAID):
/sys/block/sdb/size
все еще было на более низком уровне. Это было исправлено с помощью команды:
echo 1 > /sys/block/sdb/device/rescan
parted
, чтобы отредактировать метку диска и переместить ее копию в конце диска на новый конец диска. К счастью, он без поддержки угадал, чем я хочу заниматься, и подсказал мне. Сначала копия метки диска:
Error: The backup GPT table is not at the end of the disk, as it should be. This might mean that another operating system believes the disk is smaller. Fix, by moving the backup to the
end (and removing the old backup)?
Fix/Ignore/Cancel? F
Warning: Not all of the space available to /dev/sdb appears to be used, you can fix the GPT to use all of the space (an extra 7811891200 blocks) or continue with the current setting?
Fix/Ignore? F
parted
не позволил мне сделать это, пока диск был смонтирован, поэтому я использовал fdisk
вместо:
fdisk /dev/sdb
d 1
n 1 (defaults were correct for full size of disk)
t 1
11 (That's Microsoft basic data - which is the same as xfs).
w
parted
на этом этапе присвоить разделу то же имя, что и раньше. fdisk
не поддерживает именование разделов. Мелкая деталь.partprobe /dev/sdb
(и partprobe /dev/sdb1
на всякий случай), чтобы ОС снова прочитала таблицу разделов. Я думаю, что только первая команда действительно изменила ситуацию.xfs_growfs -d /scratch
которому потребовалось всего 1,6 секунды, чтобы увеличить раздел до окончательного размера, заполнив только что выросший диск.Это также будет работать с томами ext4: единственная разница будет в использовании resize2fs /dev/sdb1
вместо того xfs_growfs -d /scratch
- и используя правильный номер типа раздела для ext4 вместо xfs. Команда fdisk может отображать номера типов для обычных дисковых систем, включая ext4.
С помощью growpart
и resize2fs
пример:
$ growpart /dev/sda 1
CHANGED: partition=1 start=2048 old: size=39999455 end=40001503 new: size=80000991,end=80003039
$ resize2fs /dev/sda1
resize2fs 1.45.4 (23-Sep-2019)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 5
The filesystem on /dev/sda1 is now 10000123 (4k) blocks long.