非LVM,在线扩容硬盘分区实例

1.云服务器扩容

2.本地vmware平台虚拟机扩容

3.virtualBox虚拟机扩容

一.扩容云服务器根目录

环境:

swift@XXX-001:/$ lsblk
NAME      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda       253:0    0  200G  0 disk
└─vda1    253:1    0  100G  0 part /

vda盘下的vda1分区挂载在根目录,vda盘已经新增100G磁盘空间,由于不是lvm类型,需要扩容磁盘分区

可以参考:

如何将扩容系统盘的空白分区在线扩容到末尾的root分区?

如何将扩容系统盘的空白分区在线扩容到非末尾的root分区?

扩展磁盘分区和文件系统(Linux)

1.检查文件系统的状态

ext*:e2fsck -n 磁盘分区

xfs:xfs_repair -n 磁盘分区

以“ext4” 为例:

e2fsck -n /dev/vdb1

查看分区文件系统类型可以使用 lsblkl -f 命令

回显类似如下信息:

swift@XXX-001:/$ sudo e2fsck -n /dev/vda1
e2fsck 1.42.13 (17-May-2015)
Warning!  /dev/vda1 is mounted.
Warning: skipping journal recovery because doing a read-only filesystem check.
/dev/vda1: clean, 207205/6553600 files, 8398438/26214139 blocks

文件系统状态为clean表示状态正常,若不是clean,请先修复问题后执行扩容操作。

2.执行以下命令,指定系统盘待扩容的分区,通过growpart进行扩容

growpart 系统盘 分区编号

命令示例:

growpart /dev/vda 1

回显类似如下信息:
swift@XXX-001:/$ sudo growpart /dev/vda 1
CHANGED: partition=1 start=2048 old: size=209713119 end=209715167 new: size=419428319,end=419430367

此时:分区已经扩容,但文件系统未扩容,通过 lsblk 和 df -h 命令可查看
swift@XXX-001:/$ lsblk
NAME      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda       253:0    0  200G  0 disk
└─vda1    253:1    0  200G  0 part /
swift@XXX-001:/$ df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/vda1             99G   39G   56G  41% /

3.执行以下命令,扩展磁盘分区文件系统的大小。

resize2fs 磁盘分区

命令示例:

resize2fs /dev/vda1

回显类似如下信息:
swift@XXX-001:/$ sudo resize2fs /dev/vda1
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 7, new_desc_blocks = 13
The filesystem on /dev/vda1 is now 52428539 (4k) blocks long.

4.检查分区

swift@XXX-001:/$ df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1       197G   39G  151G  21% /

二.扩容本地vmware虚拟机机器硬盘

1.检查文件系统的状态

ext*:e2fsck -n 磁盘分区
xfs:xfs_repair -n 磁盘分区

以“ext4” 为例:

e2fsck -n /dev/sda1

回显类似如下信息:
root@LOCAL-PG-TEST-001:/home/swift# e2fsck -n /dev/sda1 
e2fsck 1.42.13 (17-May-2015)
Warning!  /dev/sda1 is mounted.
Warning: skipping journal recovery because doing a read-only filesystem check.
/dev/sda1: clean, 289242/13049856 files, 43632851/52178432 blocks

文件系统状态为clean表示状态正常,若不是clean,请先修复问题后执行扩容操作。

2.执行以下命令,指定系统盘待扩容的分区,通过growpart进行扩容

growpart 系统盘 分区编号

命令示例:

growpart /dev/sda 1

回显类似如下信息:
root@LOCAL-PG-TEST-001:/home/swift# growpart /dev/sda 1
CHANGED: partition=1 start=2048 old: size=417427456 end=417429504 new: size=629143519,end=629145567

3.执行以下命令,扩展磁盘分区文件系统的大小。

resize2fs 磁盘分区

命令示例:

resize2fs /dev/sda1

回显类似如下信息:
root@LOCAL-PG-TEST-001:/home/swift# resize2fs /dev/sda1 
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 13, new_desc_blocks = 19
The filesystem on /dev/sda1 is now 78642939 (4k) blocks long.

4.检查分区大小和文件系统大小,发现已经成功扩容。

swift@LOCAL-PG-TEST-001:~$ lsblk -f
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sda                                                      
└─sda1 ext4         4fe08fcf-d73a-462c-8c44-e2248bd0e4fe /
sr0                                                      
swift@LOCAL-PG-TEST-001:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            7.9G     0  7.9G   0% /dev
tmpfs           1.6G   16M  1.6G   1% /run
/dev/sda1       296G  122G  160G  44% /
tmpfs           7.9G  1.4M  7.9G   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           7.9G     0  7.9G   0% /sys/fs/cgroup
tmpfs           1.6G     0  1.6G   0% /run/user/1001
tmpfs           1.6G     0  1.6G   0% /run/user/1002

问题

1.执行growpart /dev/sda 1报错

root@LOCAL-PG-TEST-001:/home/swift# growpart /dev/sda 1
NOCHANGE: partition 1 could only be grown by 2046 [fudge=2048]

磁盘分区情况

root@LOCAL-PG-TEST-001:/home/swift# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  300G  0 disk 
├─sda1   8:1    0  199G  0 part /
├─sda2   8:2    0    1K  0 part 
└─sda5   8:5    0  975M  0 part 
sr0     11:0    1 1024M  0 rom  

root@LOCAL-PG-TEST-001:/home/swift# lsblk -f
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sda                                                      
├─sda1 ext4         4fe08fcf-d73a-462c-8c44-e2248bd0e4fe /
├─sda2                                                   
└─sda5 swap         9269e2f8-018e-48a1-9463-efed33a46096 
sr0                                                      

进入fdisk查看

root@LOCAL-PG-TEST-001:/home/swift# fdisk /dev/sda

Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sda: 300 GiB, 322122547200 bytes, 629145600 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
Disklabel type: dos
Disk identifier: 0xe241a164

Device     Boot     Start       End   Sectors  Size Id Type
/dev/sda1  *         2048 417429503 417427456  199G 83 Linux
/dev/sda2       417431550 419428351   1996802  975M  5 Extended
/dev/sda5       417431552 419428351   1996800  975M 82 Linux swap / Solaris

Command (m for help): q

原因

存在多余块设备

root@LOCAL-PG-TEST-001:/home/swift# blkid 
/dev/sda1: UUID="4fe08fcf-d73a-462c-8c44-e2248bd0e4fe" TYPE="ext4" PARTUUID="e241a164-01"
/dev/sda5: UUID="9269e2f8-018e-48a1-9463-efed33a46096" TYPE="swap" PARTUUID="e241a164-05"

解决方法:

删除多余分区,再次执行growpart扩容,就好了

root@LOCAL-PG-TEST-001:/home/swift# fdisk /dev/sda

Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sda: 300 GiB, 322122547200 bytes, 629145600 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
Disklabel type: dos
Disk identifier: 0xe241a164

Device     Boot     Start       End   Sectors  Size Id Type
/dev/sda1  *         2048 417429503 417427456  199G 83 Linux
/dev/sda2       417431550 419428351   1996802  975M  5 Extended
/dev/sda5       417431552 419428351   1996800  975M 82 Linux swap / Solaris

Command (m for help): d
Partition number (1,2,5, default 5): 5

Partition 5 has been deleted.

Command (m for help): p
Disk /dev/sda: 300 GiB, 322122547200 bytes, 629145600 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
Disklabel type: dos
Disk identifier: 0xe241a164

Device     Boot     Start       End   Sectors  Size Id Type
/dev/sda1  *         2048 417429503 417427456  199G 83 Linux
/dev/sda2       417431550 419428351   1996802  975M  5 Extended

Command (m for help): d
Partition number (1,2, default 2): 2

Partition 2 has been deleted.

Command (m for help): p
Disk /dev/sda: 300 GiB, 322122547200 bytes, 629145600 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
Disklabel type: dos
Disk identifier: 0xe241a164

Device     Boot Start       End   Sectors  Size Id Type
/dev/sda1  *     2048 417429503 417427456  199G 83 Linux

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: 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).

删除分区后,提示内核使用旧的分区表,执行partprobe刷新后即可。

root@LOCAL-PG-TEST-001:/home/swift# lsblk -f
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sda                                                      
├─sda1 ext4         4fe08fcf-d73a-462c-8c44-e2248bd0e4fe /
├─sda2                                                   
└─sda5 swap         9269e2f8-018e-48a1-9463-efed33a46096 
sr0                                                      
root@LOCAL-PG-TEST-001:/home/swift# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  300G  0 disk 
├─sda1   8:1    0  199G  0 part /
├─sda2   8:2    0    1K  0 part 
└─sda5   8:5    0  975M  0 part 
sr0     11:0    1 1024M  0 rom  
root@LOCAL-PG-TEST-001:/home/swift# partprobe 
root@LOCAL-PG-TEST-001:/home/swift# partprobe 
root@LOCAL-PG-TEST-001:/home/swift# lsblk -f
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sda                                                      
└─sda1 ext4         4fe08fcf-d73a-462c-8c44-e2248bd0e4fe /
sr0                                                      

三.virtualBox虚拟机硬盘扩容

一.前提条件

已经为虚拟机内的磁盘进行扩容

二.更新磁盘分区和调整文件系统大小

# 查看磁盘,可以看到vda大小为200G,而vda3分区及其余分区总计50G,现在将剩余空间,添加到/dev/vda3这个分区中
swift@swift-None:~$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
vda    252:0    0   200G  0 disk
├─vda1 252:1    0     1M  0 part
├─vda2 252:2    0   513M  0 part /boot/efi
└─vda3 252:3    0  49.5G  0 part /var/snap/firefox/common/host-hunspell
                                 /

1.检查文件系统状态

swift@swift-None:~$ sudo e2fsck -n /dev/vda3
e2fsck 1.46.5 (30-Dec-2021)
警告!/dev/vda3 已被挂载。
警告:跳过日志恢复流程,因为正在进行只读的文件系统检查。
/dev/vda3:没有问题,225369/3244032 文件,2571720/12975104 块

2.使用growpart对分区扩容,若无该命令,则需要安装(sudo apt install cloud-guest-utils)

swift@swift-None:~$ growpart
Command 'growpart' not found, but can be installed with:
sudo apt install cloud-guest-utils

# 操作
swift@swift-None:~$ sudo growpart /dev/vda 3
CHANGED: partition=3 start=1054720 old: size=103800832 end=104855552 new: size=418375647 end=419430367

3.刷新文件系统

swift@swift-None:~$ sudo resize2fs /dev/vda3
resize2fs 1.46.5 (30-Dec-2021)
/dev/vda3 上的文件系统已被挂载于 /;需要进行在线调整大小
old_desc_blocks = 7, new_desc_blocks = 25
/dev/vda3 上的文件系统大小已经调整为 52296955 个块(每块 4k)。

标签: 硬盘, Linux

添加新评论