Назад | Перейти на главную страницу

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 команда на parted:

Modello: Device a blocchi Virtio (virtblk)
Disco /dev/vda: 53,7GB
Dimensione del settore (logica/fisica): 512B/512B
Tabella delle partizioni: msdos
Flag del disco: 

Numero  Inizio  Fine    Dimensione  Tipo     File system  Flag
 1      1049kB  26,8GB  26,8GB      primary  xfs          avvio
 2      26,8GB  53,7GB  26,8GB      primary  xfs

Как я могу расширять доступное дисковое пространство без уничтожить данные? Перезагрузить сервер не проблема.

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 Dashboard.

Не может быть в режиме спасения во время обновления.

Шаг 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

Я обнаружил, что нет полной документации о том, как выполнить изменение размера этого корневого раздела после обновления вашего OVH VPS.

Файловая система 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 команда изменения размера будет следующей:

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 на виртуальный диск

~$ fdisk /dev/vda
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Comando (m per richiamare la guida): п

Теперь дайте n команда

Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): п

Теперь выберите p для создания нового основного раздела.

Numero della partizione (2-4, default 2): <enter>
Primo sector (52428800-104857599, predefinito 52428800): <enter>
Utilizzo del valore predefinito 52428800
Last sector, +sectors or +size{K,M,G} (52428800-104857599, predefinito 104857599): <enter>

Проверить информацию перед попаданием enter, и убедитесь, что первый сектор является следующим из последнего сектора первого раздела. В моем случае последний сектор vda1 это 52428799, поэтому следующее - 52428800.

Comando (m per richiamare la guida): ш
La tabella delle partizioni è stata alterata!

Chiamata di ioctl() per rileggere la tabella delle partizioni.

WARNING: Re-reading the partition table failed with error 16: Dispositivo o risorsa occupata.
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)
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  

ПРИМЕЧАНИЕ 1:

если вы вызовете 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, которая является частью разделенного пакета.

partprobe /dev/vda

Наконец, вам нужно будет изменить размер файловой системы на устройстве, для которого вы уже получили команду, но для полноты информации ниже. Обратите внимание, что вам не нужно включать -D, если вы не хотите использовать меньше всего устройства.

xfs_growfs /dev/vda1