VPS: Как я могу обновить доступное пространство на жестком диске после обновления?
Я сделал обновление VPS, размещенного на OVH, особенно с VPS CLOUD 1
в VPS CLOUD 2
которые имеют на 25 ГБ больше предыдущего решения (всего 50 ГБ).
На этом VPS установлен CentOS 7.2.1511
Есть результат df -HT
[root@srv ~]# df -HT
File system Tipo Dim. Usati Dispon. Uso% Montato su
/dev/vda1 xfs 27G 12G 16G 42% /
devtmpfs devtmpfs 2,1G 0 2,1G 0% /dev
tmpfs tmpfs 2,1G 0 2,1G 0% /dev/shm
tmpfs tmpfs 2,1G 18M 2,1G 1% /run
tmpfs tmpfs 2,1G 0 2,1G 0% /sys/fs/cgroup
tmpfs tmpfs 405M 0 405M 0% /run/user/0
Есть результат fdisk -l | grep Disk
[root@srv ~]# fdisk -l | grep Disk
Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Disk label type: dos
Другая информация о диске:
[root@srv ~]# fdisk -l /dev/vda
Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 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
Disk label type: dos
Identificativo disco: 0x000af71d
Dispositivo Boot Start End Blocks Id System
/dev/vda1 * 2048 52428799 26213376 83 Linux
Я пробовал это:
[root@srv ~]# xfs_growfs /dev/vda1 -D 53.7G
meta-data=/dev/vda1 isize=256 agcount=13, agsize=524224 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=6553344, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data size 53 too small, old size is 6553344
И это:
[root@srv ~]# xfs_growfs -d /dev/vda1
meta-data=/dev/vda1 isize=256 agcount=13, agsize=524224 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0 spinodes=0
data = bsize=4096 blocks=6553344, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data size unchanged, skipping
Очевидно, без успеха.
[ОБНОВИТЬ]
Выход с pr
команда на разделение:
Modello: Устройство блока Virtio (virtblk) Дискотека /dev/vda: 53,7 ГБ Размер хранилища (логика / физика): 512B/512B Tabella delle partizioni: msdos Флаг дискотеки: Numero Inizio Fine Dimensione Типо Файловая система Флаг 1 1049kB 26,8 ГБ 26,8 ГБ основной xfs avvio 2 26,8 ГБ 53,7 ГБ 26,8 ГБ основной xfs
Как я могу расширить доступное дисковое пространство без уничтожения данных? Перезагрузка сервера не проблема.
7 ответов
xfs_growfs -d /dev/vda1
Капитал -D
увеличивается до указанного размера в блоках файловой системы и не понимает 'G'. Таким образом, он предполагал, что вы хотели 53 блока файловой системы, что не удалось.
Нижний регистр -d
растет до максимального размера.
Если вам нужен конкретный размер, вы должны рассчитать его в блоках, например, из вывода fdisk максимальный размер равен 26213376. Затем -D 26213376 также увеличит его до максимального значения из 6553344 блоков, которые у вас есть сейчас.
Вот пошаговое рабочее решение, которое я только что протестировал при обновлении с OVH VPS 2016 SSD 1 (10 ГБ) до OVH VPS 2016 SSD 2 (20 ГБ) с расширением раздела до максимального нового размера.
Среда с CentOS 7 с файловой системой XFS по умолчанию.
После изменения размера новый раздел загрузочный со всеми данными на месте.
Шаг 0. Обновление до более высокого плана VPS
Выполните обновление на панели инструментов OVH.
Не может быть в режиме восстановления при выполнении обновления.
Шаг 1. Загрузитесь в режиме восстановления
root@rescue-pro:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 254:0 0 10G 0 disk
└─vda1 254:1 0 10G 0 part /
vdb 254:16 0 20G 0 disk
└─vdb1 254:17 0 10G 0 part /mnt/vdb1
Выше показано, что vdb
имеет 20 ГБ после обновления и оригинальный раздел vdb1
имеет 10 ГБ, установленный на /mnt/vdb1
Шаг 2. Установите инструменты для использования
root@rescue-pro:/# apt-get update
root@rescue-pro:/# apt-get install xfsprogs
root@rescue-pro:/# apt-get install parted
Режим спасения не идет с инструментами, xfs_growfs
вырастить файловую систему XFS.
Буду использовать parted
изменить размер основного раздела до нового размера, прежде чем мы сможем увеличить файловую систему.
Шаг 3. Изменение размера основного раздела
root@rescue-pro:~# umount /mnt/vdb1
Необходимо будет размонтировать раздел, прежде чем мы сможем применить изменения.
root@rescue-pro:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 254:0 0 10G 0 disk
└─vda1 254:1 0 10G 0 part /
vdb 254:16 0 20G 0 disk
└─vdb1 254:17 0 10G 0 part
Убедитесь, что он был отключен.
root@rescue-pro:~# parted
На данный момент спасательное устройство vda
выбран, нам нужно переключиться на устройство, над которым мы будем работать.
(parted) select /dev/vdb
Using /dev/vdb
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 10.7GB 10.7GB primary xfs boot
(parted) unit s
Переключите дисплей на sector
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 41943040s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 2048s 20971519s 20969472s primary xfs boot
(parted) rm 1
Выше будет удалить существующий раздел.
Это та часть, которую я больше всего колебался исполнять.
После долгих исследований и подтверждения того, что это не уничтожит данные, мы вернем все обратно.
(parted) mkpart
Partition type? primary
File system type? xfs
Start? 2048s
End? 100%
Выше будет воссоздать раздел с максимальным размером выделения дискового пространства.
Ответьте на вопросы соответственно из print
результат выше.
2048s
это начальный сектор, поэтому мы переключаем блок на sector
убедитесь, что это так же, как print
результат выше.
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 41943040s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 2048s 41943039s 41940992s primary xfs
Проверьте новую таблицу разделов.
Обратите внимание, что boot
флаг отсутствует.
(parted) set 1 boot on
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 41943040s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 2048s 41943039s 41940992s primary xfs boot
Установить boot
Отметьте и распечатайте таблицу разделов еще раз, чтобы проверить.
(parted) quit
Выйдите и примените все изменения.
Вы увидите следующее примечание, которое можно игнорировать, так как после изменения размера номер раздела остается тем же.
Information: You may need to update /etc/fstab.
Шаг 4. Проверьте измененный размер раздела
root@rescue-pro:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 254:0 0 10G 0 disk
└─vda1 254:1 0 10G 0 part /
vdb 254:16 0 20G 0 disk
└─vdb1 254:17 0 20G 0 part
Теперь мы можем видеть vdb1
в полном размере 20GB
Смонтируйте раздел обратно и проверьте место на диске.
root@rescue-pro:~# mount /dev/vdb1 /mnt/vdb1
root@rescue-pro:~# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 9.9G 608M 8.8G 7% /
udev 10M 0 10M 0% /dev
tmpfs 388M 144K 388M 1% /run
/dev/vda1 9.9G 608M 8.8G 7% /
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 775M 0 775M 0% /run/shm
/dev/vdb1 10G 2.1G 8.0G 21% /mnt/vdb1
Мы видим, что смонтированный раздел вернулся, все данные на месте, но размер все еще 10GB
Шаг 5. СОСТАВЬТЕ РАЗДЕЛ XFS
root@rescue-pro:~# xfs_growfs -d /mnt/vdb1
meta-data=/dev/vdb1 isize=256 agcount=6, agsize=524224 blks
= sectsz=512 attr=2
data = bsize=4096 blocks=2621184, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 2621184 to 5242624
Приведенная выше команда вырастить /mnt/vdb1
до максимального доступного размера.
Используйте точку монтирования вместо блочного устройства.
root@rescue-pro:~# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 9.9G 608M 8.8G 7% /
udev 10M 0 10M 0% /dev
tmpfs 388M 144K 388M 1% /run
/dev/vda1 9.9G 608M 8.8G 7% /
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 775M 0 775M 0% /run/shm
/dev/vdb1 20G 2.1G 18G 11% /mnt/vdb1
Проверьте место на диске еще раз, и мы можем видеть сейчас /mnt/vdb1
успешно вырос до 20GB
Шаг 6. Последний шаг - перезагрузка и выход из режима восстановления
shutdown -h now
Вернитесь к панели инструментов OVH и используйте Reboot VPS
выйти из режима спасения.
После загрузки обратно в нормальную среду VPS.
[root@vps]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 2.1G 18G 11% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 17M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
tmpfs 386M 0 386M 0% /run/user/0
[root@vps]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 20G 0 disk
└─vda1 253:1 0 20G 0 part /
Проверьте выше, показывая, что размер корневого раздела был успешно изменен до полного 20GB
Я считаю, что нет полной документации о том, как выполнить изменение размера корневого раздела после обновления VPS OVH.
Файловая система XFS - вот что делает ее сложной.
Надеюсь, что эти пошаговые заметки помогут всем, кто сталкивается с той же проблемой.
Изменить размер файловой системы XFS в OVH действительно легко. Вам не обязательно использовать режим восстановления. Просто используйте команды Growpart и xfs_grow.
Посмотрите, как я изменил размер корневого раздела с 10 ГБ до 20 ГБ.
Я использую Debian, но используемые инструменты действительно распространены в большинстве дистрибутивов Linux, поэтому должны работать точно так же в CentOS.
Я обновил OVH VPS SSD 1 (10 ГБ) до OVH VPS SSD 2 (20 ГБ) с корневой файловой системой, использующей ext3. Обновление может быть сделано онлайн, безопасно и в считанные секунды.
Как только вы приобрели обновление, VPS перезагрузится. В файловой системе пока нет изменений.
user@vps2:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 387M 5.3M 381M 2% /run
/dev/vda1 9.9G 7.5G 2.0G 80% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
tmpfs 387M 0 387M 0% /run/user/1001
Но parted
покажет вам, что базовый диск действительно обновлен.
user@vps2:~$ sudo parted /dev/vda
GNU Parted 3.2
Using /dev/vda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) pr
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 10.7GB 10.7GB primary ext3 boot
Я перехожу на секторные единицы и выполняю изменение размера раздела.
(parted) unit s
(parted) resizepart
Partition number? 1
Warning: Partition /dev/vda1 is being used. Are you sure you want to continue?
Yes/No? Yes
End? [20971519s]? -1s
(parted) pr
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 41943040s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 2048s 41943039s 41940992s primary ext3 boot
(parted) quit
Information: You may need to update /etc/fstab.
Размер раздела теперь изменен. Далее мне нужно изменить размер файловой системы.
user@vps2:~$ sudo resize2fs -p /dev/vda1
resize2fs 1.43.4 (31-Jan-2017)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/vda1 is now 5242624 (4k) blocks long.
В случае файловой системы XFS команда resize будет выглядеть так:
sudo xfs_growfs /
И вуаля!, Работа выполнена.
user@vps2:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 387M 5.3M 381M 2% /run
/dev/vda1 20G 7.5G 12G 40% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
tmpfs 387M 0 387M 0% /run/user/1001
После поиска и с помощью ваших ответов, наконец, я нахожу путь (более или менее).
1. Создайте новый раздел
Дайте фдиск на виртуальный диск
~$ fdisk /dev/vda Добро пожаловать на fdisk (util-linux 2.23.2). Изменения останутся только в памяти, пока вы не решите их записать. Будьте осторожны перед использованием команды записи. Командо (м на ричьямаре ла гуйда): n
Теперь дайте n
команда
Тип раздела: p основной (1 основной, 0 расширенный, 3 бесплатных) продлен Выберите (по умолчанию p): p
Теперь выбирай p
создать новый основной раздел.
Numero della partizione (2-4, по умолчанию 2):Первичный сектор (52428800-104857599, предопределенный 52428800): Utilizzo del valore predefinito 52428800 Последний сектор, + секторы или + размер {K,M,G} (52428800-104857599, предопределенный 104857599):
Проверьте информацию перед попаданием enter
и проверьте, что первый сектор является следующим из последнего сектора первого раздела. В моем случае последний сектор vda1
это 52428799, поэтому следующим является 52428800.
Командо (м на ричьямаре ла гуйда): ш La tabella delle partizioni è stata alterata! Chiamata di ioctl () в соответствии с правилами табелла делле партизиони. ПРЕДУПРЕЖДЕНИЕ: перечитывание таблицы разделов завершилось ошибкой 16: Dispositivo o risorsa занятия. Ядро все еще использует старую таблицу. Новая таблица будет использоваться в следующая перезагрузка или после запуска partprobe(8) или kpartx(8) Sincronizzazione dei dischi in Corso.
Тип w
записать свои разделы на диск. Перезагрузка не требуется, так как вы также можете выполнить повторное сканирование для этих разделов, используя partprobe. Запустите следующее, чтобы найти только что созданный раздел.
~ $ partprobe -s
После этого мы должны увеличить раздел, но xfs_growfs все равно не работает.:(
Самый простой способ обновить HD с помощью сервера OVH (перед тем, как сделать это, рекомендуется создать резервную копию вашего сервера).
Здесь HD был 20G и был обновлен до 40GB, но я проделал эту процедуру с 10G > 20G без потери данных или простоев
ниже пошагово все команды с их выводом
Проверьте свой путь HD
[root@ovh ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 16G 2,8G 86% /
tmpfs 3,8G 0 3,8G 0% /dev/shm
Запустите fdisk с этим путем
[root@ovh ~]# sudo fdisk /dev/vda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help):
Смотрите разделы с p
Команда и ПРИМЕЧАНИЕ ВНИЗ стартового цилиндра (здесь 3
)
p
Disk /dev/vda: 42.9 GB, 42949672960 bytes
16 heads, 63 sectors/track, 83220 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000574cf
Device Boot Start End Blocks Id System
/dev/vda1 * 3 41611 20970496 83 Linux
Command (m for help):
Удалить раздел с d
команда и создать раздел с n
а затем выберите p
а также 1
и положить в цилиндры, указанные выше 3
d
Selected partition 1
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-83220, default 1): 3
Last cylinder, +cylinders or +size{K,M,G} (1-83220, default 83220):
Using default value 83220
Теперь вы можете записать на диск с w
или же q
(выйти без сохранения)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
Попросите перезагрузку и выйдите из машины
[root@ovh ~]# reboot && exit
Через 1-2 минуты ssh в машине и проверьте размер до того же, как и раньше
[root@ovh ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 16G 2,8G 86% /
tmpfs 3,8G 0 3,8G 0% /dev/shm
Вы должны использовать resize2fs
изменить его размер
[root@ovh ~]# resize2fs /dev/vda1
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 3
Performing an on-line resize of /dev/vda1 to 10485504 (4k) blocks.
The filesystem on /dev/vda1 is now 10485504 blocks long.
Теперь размер должен быть в порядке
[root@ovh ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 16G 22G 43% /
tmpfs 3,8G 0 3,8G 0% /dev/shm
NOTE1:
если вы вызываете sudo fdisk -u /dev/vda
это покажет вам sectors
вместо cylinders
ЗАМЕТКА 2:
если вы попытаетесь восстановить соединение и не сможете, вы могли бы указать неверное число cylinders
вы должны Reboot in rescue mode
и используйте это руководство https://docs.ovh.com/ie/en/public-cloud/put_an_instance_in_rescue_mode/
если ваш раздел не монтируется, вы должны вызвать fdisk
из предыдущих шагов с правильным cylinders
этот раз
Вам нужно будет изменить размер раздела на устройстве vda, для этого есть много способов, но я бы использовал fdisk или sfdisk.
Для fdisk запустите fdisk таким образом:
fdisk /dev/vda
затем удалите первый раздел (d), создайте новый раздел (n) и просто примите значения по умолчанию, нажав return, вам нужно будет пометить раздел как активный, нажав a.
Если у вас достаточно современная версия sfdisk, вы можете программно изменить размер раздела, чтобы заполнить диск этой командой
echo ", +" | sfdisk -N 1 /dev/vda
Следующий шаг - сообщить ОС о новом размере диска, либо перезагрузив компьютер, либо с помощью команды partprobe, являющейся частью пакета parted.
partprobe /dev/vda
Наконец, вам нужно изменить размер файловой системы на устройстве, для которого вы уже получили команду, но для полноты ниже. Обратите внимание, что вам не нужно включать -D, если вы не хотите использовать меньше, чем все устройство.
xfs_growfs /dev/vda1