VPS:升级后如何更新可用的硬盘空间?

我升级了OVH上托pipe的VPS,特别是从VPS CLOUD 1VPS CLOUD 2 ,其中有25GB以上的解决scheme(总共50GB)。

在这个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的结果 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 

显然没有成功。

[UPDATE]
带有pr命令的输出分开:

 Modello:设备一个blocchi Virtio(virtblk)
 Disco / dev / vda:53,7GB
 Dimensione del settore(logica / fisica):512B / 512B
 Tabella delle partizioni:msdos
国旗del迪斯科: 

 Numero Inizio Fine Dimensione Tipo文件系统标志
  1 1049kB 26,8GB 26,8GB primary xfs avvio
  2 26,8GB 53,7GB 26,8GB主xfs

如何在破坏数据的情况下 扩展可用磁盘空间? 重启服务器不是问题。

xfs_growfs -d /dev/vda1

资本-D 在文件系统块中增长到指定的大小,并且不理解“G”。 因此,它假设你想要53文件系统块,失败。

小写-d增长到最大值。

如果你想要特定的大小,你应该在块中进行计算,例如从fdisk输出中,最大的大小是26213376.然后-D 26213376也将从现在的6553344个块中增加到最大值。

以下是我刚刚testing的分步工作解决scheme,从OVH VPS 2016 SSD 1(10GB)升级到OVH VPS 2016 SSD 2(20GB) ,分区增长到最大新增大小。

CentOS 7的环境是默认的XFS文件系统。

resize后,新的分区可引导所有的数据。

步骤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有20GB,原始分区vdb1有10GB挂载在/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 

此时select救援设备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% 

以上将重新创build驱动器空间分配的最大大小的分区。

从上面的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 

validation新的分区表。

请注意, 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标志并再次打印分区表以validation。

 (parted) quit 

退出并应用所有更改。

您将看到以下注释,您可以忽略,因为分区号在resize后是相同的。

 Information: You may need to update /etc/fstab. 

第4步。validationresize的分区

 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 / 

validation以上显示根分区已被成功调整到全部20GB

我发现在升级OVH VPS之后,没有关于如何执行根分区大小调整的完整文档。

XFS文件系统是棘手的。

希望这一步一步的笔记将帮助任何人面临同样的问题。

经过search和最终的答案帮助我终于find了方法(或多或less)。

1.创build一个新的分区
在虚拟磁盘上提供一个fdisk

 〜$ fdisk / dev / vda
欢迎来到fdisk(util-linux 2.23.2)。

更改将只保留在内存中,直到您决定写入它们。
在使用写命令之前要小心。

 Comando(m per richiamare la guida)是什么意思?

现在给n命令

分区types:
    p小学(1个小学,0个扩展,3个免费)
    e扩展
select(默认p): p

现在selectp来创build一个新的主分区。

 Numero della partizione(2-4,默认2): <enter>
 Primo部门(52428800-104857599,预定52428800): <enter>
 Utilizzo del valore predefinito 52428800
最后一个扇区,+扇区或+大小{K,M,G}(52428800-104857599,预定义104857599): <enter>

enter前检查信息,并检查第一个扇区是第一个分区的最后一个扇区的下一个。 在我的情况下, vda1的最后一个部分是52428799,所以下一个是52428800。

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

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

警告:重新读取分区表失败,错误16:Dispositivo o risorsa occupata。
内核仍然使用旧表。 新表将用于
下一次重新启动或运行partprobe(8)或kpartx(8)后
 Sincronizzazione dei dischi在corso。

键入w将分区写入磁盘。 不需要重新启动,因为您也可以使用partprobe重新扫描这些分区。 运行以下命令扫描新创build的分区。

 〜$ partprobe -s

之后,我们必须增加分区,但是xfs_growfs仍然失败。 🙁

我正在使用Debian,但所使用的工具对于大多数Linux发行版来说是非常常见的,所以在CentOS上应该完全一样。

我已经使用ext3将一个OVH VPS SSD 1(10GB)升级到了OVH VPS SSD 2(20GB)和一个根文件系统。 升级可以在线完成,可以在几秒钟内完成。

购买升级后,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. 

分区现在被resize。 接下来,我需要调整文件系统的大小。

 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 / 

Et瞧! , 任务完成。

 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 

使用OVH服务器更新HD的最简单方法(build议您在执行此操作之前先备份服务器)

这里的高清是20G,并升级到40GB,但我已经完成了这个程序与10G> 20G,没有数据丢失或宕机

下面是一步一步的所有命令与他们的输出

检查你的高清path

 [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 

用该path启动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创build分区,然后selectp1并放入上面提到的柱面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 

现在你可以用wq写入磁盘(退出而不保存)

 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/zh-cn/public-cloud/ put_an_instance_in_rescue_mode /

如果您的分区没有安装,则必须使用正确的cylinders来调用以前步骤的fdisk

您将需要调整设备vda上的分区大小,有很多方法可以做到这一点,但我会使用fdisk或sfdisk。

对于fdisk启动fdisk:

 fdisk /dev/vda 

然后删除第一个分区(d),创build一个新的分区(n),只需按回车即可接受默认设置,您还需要按a将分区标记为活动分区。

如果你有一个相当现代的sfdisk版本,你可以用这个命令以编程方式调整分区的大小来填充磁盘

 echo ", +" | sfdisk -N 1 /dev/vda 

下一步是通过重新启动或partprobe命令(这是parted软件包的一部分)告诉OS磁盘的新大小。

 partprobe /dev/vda 

最后,你将需要调整你已经得到命令的设备上的文件系统的大小,但为了完整性在下面。 请注意,除非您要使用less于整个设备,否则不需要包含-D。

 xfs_growfs /dev/vda1