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
Другие вопросы по тегам