Я обновил 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 файловая система.
После изменения размера новый раздел станет загрузочным со всеми данными на своих местах.
Выполните обновление в OVH Dashboard.
Не может быть в режиме спасения во время обновления.
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
root@rescue-pro:/# apt-get update
root@rescue-pro:/# apt-get install xfsprogs
root@rescue-pro:/# apt-get install parted
В режиме спасения нет инструментов, xfs_growfs
для увеличения файловой системы XFS.
Будет использовать parted
чтобы изменить размер нижележащего раздела до нового размера, прежде чем мы сможем увеличить файловую систему.
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.
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
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
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 без потери данных или простоя.
ниже шаг за шагом все команды с их выводом
[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
[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
[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
если вы вызовете sudo fdisk -u /dev/vda
это покажет вам sectors
вместо того cylinders
если вы пытаетесь повторно подключиться и не можете, возможно, вы ввели неправильный номер запуска 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