У меня есть виртуальная машина с виртуальным диском (видимым как /dev/sdb
) размером 10G
Администратор увеличил размер виртуального диска до 60ГБ.
Я перезагрузил машину и теперь вижу, что диск стал больше.
root@DMZMHLX3:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
...
sdb 8:16 0 60G 0 disk
└─sdb1 8:17 0 10G 0 part /app
...
Теперь я хотел бы добавить еще один раздел:
gdisk сообщает мне, что размер диска составляет 60 ГБ, но последний используемый сектор — это сектор, соответствующий размеру старого образа диска 10 ГБ:
root@DMZMHLX3:~# gdisk -l /dev/sdb
GPT fdisk (gdisk) version 1.0.1
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sdb: 125829120 sectors, 60.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): FCE659D1-3690-4C3C-93EC-79B51EE8556D
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 20971486
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 20969471 10.0 GiB 8300
последний используемый сектор должен иметь номер 125829120, а не 20971486.
Поэтому, хотя размер образа диска увеличился и виртуальная машина видит изменения, я не знаю, как использовать освободившееся пространство.
fdisk показывает мне:
root@DMZMHLX3:~# fdisk -l /dev/sdb
GPT PMBR size mismatch (20971519 != 125829119) will be corrected by w(rite).
Disk /dev/sdb: 60 GiB, 64424509440 bytes, 125829120 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: FCE659D1-3690-4C3C-93EC-79B51EE8556D
Device Start End Sectors Size Type
/dev/sdb1 2048 20969471 20967424 10G Linux filesystem
Он распознает несоответствие:
Несоответствие размера GPT PMBR (20971519 != 125829119) будет исправлено w(rite). Но при попытке записи fdisk терпит неудачу:
Command (m for help): w
GPT PMBR size mismatch (20971519 != 125829119) will be corrected by w(rite).
fdisk: failed to write disklabel: Invalid argument
root@xxx:~#
Как можно решить эту проблему?
Конечной целью является увеличение размера существующего раздела, но даже если я смогу просто добавить новые разделы, я уже буду счастлив.
решение1
СогласноИзменение размера раздела fdisk завершается ошибкой из-за недопустимого аргументапост, похоже, что вы используетерасстались(например sudo parted -l
) и пусть это "исправить"проблема с таблицей разделов, не покрывающей весь диск или что-то в этом роде.
Как только исправление будет применено с помощью этого инструмента, чтобы обойти эту проблему, вы просто продолжите выполнение команды sudo fdisk /dev/sdb1
и, по-видимому, запустите ее sudo resize2fs /dev/sdb1
после этого, чтобы изменения вступили в силу.
Важный: Не забудьте сделать полную резервную копию системы перед внесением любых изменений в разделы диска.
Мне удалось решить эту проблему довольно просто. Я установил parted, и когда я его запустил, он сообщил мне, что таблица разделов не покрывает весь диск (ну и что), поэтому он попросил меня исправить/отменить, на что я ответил Fix.
Видимо, это сработало, так как мне удалось изменить раздел до полного размера с помощью
sudo fdisk /dev/vda
, но после этого мне пришлось запустить ,sudo resize2fs /dev/vda3
чтобы изменения вступили в силу.
Кроме того, есть советы от других поИзменение размера раздела fdisk завершается ошибкой из-за недопустимого аргументаразмещайте в форме ответов и комментариев, которые также могут оказаться вам полезными и выгодными.
Поддерживающие ресурсы
решение2
Пост Расширение раздела на диске VMware в Linux имеет следующую процедуру:
- Исправьте таблицу GPT с помощью parted:
sudo parted -l
Остановите все службы, которые обращаются к этим дискам, и отмонтируйте диск, например:
sudo systemctl stop jenkins.service sudo systemctl stop apache2.service sudo umount /dev/sdb1
Этот шаг можно обойти, загрузившись с диска GParted, как описано ниже.
Расширить раздел с помощью fdisk:
sudo fdisk /dev/sdb
Поскольку для увеличения диска изнутри виртуальной машины требуется остановить все службы, которые могут использовать диск, этого можно избежать, загрузив виртуальную машину с помощью GParted.
Статья Используйте GParted для увеличения размера раздела на диске Linux подробно описывает всю процедуру.
решение3
Причина в том, что GPT имеет резервную копию таблицы разделов, размещенную в конце диска, поэтому даже если у диска есть «новый конец», резервная копия не переходит к нему автоматически и ограничивает используемые блоки старой «областью».
Вы можете просто «стереть» (очистить) GPT ( x
а затем z
в gdisk
), а затем создать новый с теми же записями раздела (введя то же начало и, при желании, тот же конец).
Если вы используете загрузку UEFI, то вполне можно удалить и защитную MBR, поскольку в ней не должно быть загрузочного кода, который нужно сохранять.
EDIT: На самом деле кажется, что можно просто x
и затем e
в gdisk
.