有台CentOS 7机器磁盘空间不足,扩展了一下,记录下相关步骤。

情况描述

有台虚拟机,CentOS 7.x系统,数据盘空间不足了。给该数据盘添加了100G的空间,需要在LVM和操作系统中识别并使用这100个G空间。

理论准备

  1. 使用growpart将增加的磁盘容量,添加到对应的设备块(block device)中
  2. 使用pvresize,让物理卷(Physical volume)和卷组(Volume group)中识别增加的磁盘容量。
  3. 使用lvextend,将增加的磁盘容量分配到对应的逻辑卷上(logical volume)
  4. 让文件系统识别增加的逻辑卷的容量
    • ext4系统使用resize2fs命令
    • xfs系统使用xfs_growfs命令

操作前系统信息

先查看系统磁盘使用情况,涉及到的命令如下:

  • lsblk: 列出操作系统的块设备
  • df -hT: 列出文件系统的磁盘使用情况
  • pvdisplay: LVM中列出物理卷情况
  • vgdisplay: LVM中列出卷组
  • lvdisplay: LVM中列出逻辑卷
  • fdisk -l: 列出磁盘分区表

依次执行上述命令,来显示对应的磁盘信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
[root@workstation ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 400G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 15.6G 0 part [SWAP]
├─sda3 8:3 0 84.2G 0 part /
└─sda4 8:4 0 200G 0 part
└─data-data 253:0 0 199G 0 lvm /data
sr0 11:0 1 1024M 0 rom
[root@workstation ~]#
[root@workstation ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda3 xfs 85G 73G 12G 87% /
devtmpfs devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs tmpfs 3.9G 228K 3.9G 1% /dev/shm
tmpfs tmpfs 3.9G 492M 3.4G 13% /run
tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/data-data ext4 196G 166G 20G 90% /data
/dev/sda1 xfs 197M 174M 23M 89% /boot
tmpfs tmpfs 783M 0 783M 0% /run/user/1003
tmpfs tmpfs 783M 8.0K 783M 1% /run/user/0
tmpfs tmpfs 783M 0 783M 0% /run/user/992
tmpfs tmpfs 783M 16K 783M 1% /run/user/42
tmpfs tmpfs 783M 0 783M 0% /run/user/1002
[root@workstation ~]#
[root@workstation ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda4
VG Name data
PV Size 200.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 51199
Free PE 255
Allocated PE 50944
PV UUID n3aowT-WZ5t-nuyC-ouxx-teg7-eSkH-LMsk13
[root@workstation ~]#
[root@workstation ~]# vgdisplay
--- Volume group ---
VG Name data
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 200.00 GiB
PE Size 4.00 MiB
Total PE 51199
Alloc PE / Size 50944 / 199.00 GiB
Free PE / Size 255 / 1020.00 MiB
VG UUID dzFXji-eFJW-qn9b-D1AS-i8FD-8wyy-AlUw3y
[root@workstation ~]#
[root@workstation ~]# lvdisplay
--- Logical volume ---
LV Path /dev/data/data
LV Name data
VG Name data
LV UUID rd1LZS-v15P-ckwA-zX6b-9xat-rtt8-8DtPM1
LV Write Access read/write
LV Creation host, time workstation.xxx.com, 2018-06-19 14:38:12 +0800
LV Status available
# open 1
LV Size 199.00 GiB
Current LE 50944
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
[root@workstation ~]#
[root@workstation ~]# fdisk -l
磁盘 /dev/sda:429.5 GB, 429496729600 字节,838860800 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000f1626
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 33179647 16384000 82 Linux swap / Solaris
/dev/sda3 33179648 209715199 88267776 83 Linux
/dev/sda4 209715200 629145599 209715200 8e Linux LVM
磁盘 /dev/mapper/data-data:213.7 GB, 213674622976 字节,417333248 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@workstation ~]#

实际操作步骤

安装growpart命令

使用yum安装growpart命令

1
yum install cloud-utils-growpart

扩展块容量

/dev/sda中有新增的100G没有分配,需要分配到/dev/sda4的数据盘中。
使用命令: growpart /dev/sda 4来分配剩余的100G到/dev/sda4

如果操作过程中命令报类似unexpected output in sfdisk --version [sfdisk,来自 util-linux 2.23.2]的错误, 是因为语言设置的问题。执行LANG=en_US.UTF-8修改为英文,就可以解决该问题。

growpart命令执行记录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@workstation ~]# growpart /dev/sda 4
CHANGED: partition=4 start=209715200 old: size=419430400 end=629145600 new: size=629145567 end=838860767
[root@workstation ~]#
[root@workstation ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 400G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 15.6G 0 part [SWAP]
├─sda3 8:3 0 84.2G 0 part /
└─sda4 8:4 0 300G 0 part
└─data-data 253:0 0 199G 0 lvm /data
sr0 11:0 1 1024M 0 rom
[root@workstation ~]#

可以看到,执行过后,sda4的SIZE,从之前的199G变为了300G

扩容pv,vg

/dev/sda4的块容量增加了,接下来需要将增加的容量反映到pv和vg中。
使用命令pvresize /dev/sda4即可将/dev/sda4的容量更新到对应的pv和vg中。

命令扩容前:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[root@workstation ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda4
VG Name data
PV Size 200.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 51199
Free PE 255
Allocated PE 50944
PV UUID n3aowT-WZ5t-nuyC-ouxx-teg7-eSkH-LMsk13
[root@workstation ~]#
[root@workstation ~]# vgdisplay
--- Volume group ---
VG Name data
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 200.00 GiB
PE Size 4.00 MiB
Total PE 51199
Alloc PE / Size 50944 / 199.00 GiB
Free PE / Size 255 / 1020.00 MiB
VG UUID dzFXji-eFJW-qn9b-D1AS-i8FD-8wyy-AlUw3y
[root@workstation ~]#

命令扩容后:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
[root@workstation ~]# pvresize /dev/sda4
Physical volume "/dev/sda4" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
[root@workstation ~]#
[root@workstation ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda4
VG Name data
PV Size 300.00 GiB / not usable 2.98 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 76799
Free PE 25855
Allocated PE 50944
PV UUID n3aowT-WZ5t-nuyC-ouxx-teg7-eSkH-LMsk13
[root@workstation ~]#
[root@workstation ~]# vgdisplay
--- Volume group ---
VG Name data
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 300.00 GiB
PE Size 4.00 MiB
Total PE 76799
Alloc PE / Size 50944 / 199.00 GiB
Free PE / Size 25855 / 101.00 GiB
VG UUID dzFXji-eFJW-qn9b-D1AS-i8FD-8wyy-AlUw3y
[root@workstation ~]#

通过pvdisplay 可以看到 PV Size从200G 变为了 300G
通过vgdisplay 可以看到 VG Size从200G 变为了 300G,Free PE / Size255 / 1020.00 MiB变为了 25855 / 101.00 GiB

对LV进行扩容

找到需要扩容的 lv path. /dev/data/data

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@workstation ~]# lvdisplay
--- Logical volume ---
LV Path /dev/data/data
LV Name data
VG Name data
LV UUID rd1LZS-v15P-ckwA-zX6b-9xat-rtt8-8DtPM1
LV Write Access read/write
LV Creation host, time workstation.xxx.com, 2018-06-19 14:38:12 +0800
LV Status available
# open 1
LV Size 199.00 GiB
Current LE 50944
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
[root@workstation ~]#

对lv /dev/data/data进行扩容 lvextend -l +100%FREE /dev/data/data

命令输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@workstation ~]# lvextend -l +100%FREE /dev/data/data
Size of logical volume data/data changed from 199.00 GiB (50944 extents) to 300.00 GiB (76799 extents).
Logical volume data successfully resized.
[root@workstation ~]#
[root@workstation ~]# lvdisplay
--- Logical volume ---
LV Path /dev/data/data
LV Name data
VG Name data
LV UUID rd1LZS-v15P-ckwA-zX6b-9xat-rtt8-8DtPM1
LV Write Access read/write
LV Creation host, time workstation.xxx.com, 2018-06-19 14:38:12 +0800
LV Status available
# open 1
LV Size 300.00 GiB
Current LE 76799
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0

查看系统文件的大小情况。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@workstation ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 400G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 15.6G 0 part [SWAP]
├─sda3 8:3 0 84.2G 0 part /
└─sda4 8:4 0 300G 0 part
└─data-data 253:0 0 300G 0 lvm /data
sr0 11:0 1 1024M 0 rom
[root@workstation ~]#
[root@workstation ~]# df -PTh
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda3 xfs 85G 73G 12G 87% /
devtmpfs devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs tmpfs 3.9G 228K 3.9G 1% /dev/shm
tmpfs tmpfs 3.9G 492M 3.4G 13% /run
tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/data-data ext4 196G 166G 20G 90% /data
/dev/sda1 xfs 197M 174M 23M 89% /boot
tmpfs tmpfs 783M 0 783M 0% /run/user/1003
tmpfs tmpfs 783M 8.0K 783M 1% /run/user/0
tmpfs tmpfs 783M 0 783M 0% /run/user/992
tmpfs tmpfs 783M 16K 783M 1% /run/user/42
tmpfs tmpfs 783M 0 783M 0% /run/user/1002
[root@workstation ~]#

可以看到lvm磁盘扩容到300G了,但是系统能读取的容量还是196G。接下来进行文件系统的扩容

扩容文件系统

最后进行文件系统的在线扩容

df -PTh的输出,可以看到这边的文件挂载类型是ext4,所以应该使用resize2fs进行扩容

1
resize2fs /dev/mapper/data-data

命令输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@workstation ~]# resize2fs /dev/mapper/data-data
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/data-data is mounted on /data; on-line resizing required
old_desc_blocks = 25, new_desc_blocks = 38
The filesystem on /dev/mapper/data-data is now 78642176 blocks long.
[root@workstation ~]#
[root@workstation ~]# df -PTh
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda3 xfs 85G 73G 12G 87% /
devtmpfs devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs tmpfs 3.9G 228K 3.9G 1% /dev/shm
tmpfs tmpfs 3.9G 500M 3.4G 13% /run
tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/data-data ext4 296G 166G 116G 60% /data
/dev/sda1 xfs 197M 174M 23M 89% /boot
tmpfs tmpfs 783M 0 783M 0% /run/user/1003
tmpfs tmpfs 783M 8.0K 783M 1% /run/user/0
tmpfs tmpfs 783M 0 783M 0% /run/user/992
tmpfs tmpfs 783M 16K 783M 1% /run/user/42
tmpfs tmpfs 783M 0 783M 0% /run/user/1002
[root@workstation ~]#

如果文件系统挂载类型是xfs, 那么应该使用xfs_growfs dev_block的格式来进行挂载。
类似的输出如下:

1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost ~]# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=2424320 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=9697280, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=4735, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 9697280 to 10222592
[root@localhost ~]#

最终扩容后结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
[root@workstation ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 400G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 15.6G 0 part [SWAP]
├─sda3 8:3 0 84.2G 0 part /
└─sda4 8:4 0 300G 0 part
└─data-data 253:0 0 300G 0 lvm /data
sr0 11:0 1 1024M 0 rom
[root@workstation ~]#
[root@workstation ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda3 xfs 85G 73G 12G 87% /
devtmpfs devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs tmpfs 3.9G 228K 3.9G 1% /dev/shm
tmpfs tmpfs 3.9G 500M 3.4G 13% /run
tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/data-data ext4 296G 166G 116G 60% /data
/dev/sda1 xfs 197M 174M 23M 89% /boot
tmpfs tmpfs 783M 0 783M 0% /run/user/1003
tmpfs tmpfs 783M 8.0K 783M 1% /run/user/0
tmpfs tmpfs 783M 0 783M 0% /run/user/992
tmpfs tmpfs 783M 16K 783M 1% /run/user/42
tmpfs tmpfs 783M 0 783M 0% /run/user/1002
[root@workstation ~]#
[root@workstation ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda4
VG Name data
PV Size 300.00 GiB / not usable 2.98 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 76799
Free PE 0
Allocated PE 76799
PV UUID n3aowT-WZ5t-nuyC-ouxx-teg7-eSkH-LMsk13
[root@workstation ~]#
[root@workstation ~]# vgdisplay
--- Volume group ---
VG Name data
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 300.00 GiB
PE Size 4.00 MiB
Total PE 76799
Alloc PE / Size 76799 / 300.00 GiB
Free PE / Size 0 / 0
VG UUID dzFXji-eFJW-qn9b-D1AS-i8FD-8wyy-AlUw3y
[root@workstation ~]#
[root@workstation ~]# lvdisplay
--- Logical volume ---
LV Path /dev/data/data
LV Name data
VG Name data
LV UUID rd1LZS-v15P-ckwA-zX6b-9xat-rtt8-8DtPM1
LV Write Access read/write
LV Creation host, time workstation.xxx.com, 2018-06-19 14:38:12 +0800
LV Status available
# open 1
LV Size 300.00 GiB
Current LE 76799
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
[root@workstation ~]#
[root@workstation ~]# fdisk -l
Disk /dev/sda: 429.5 GB, 429496729600 bytes, 838860800 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
Disk identifier: 0x000f1626
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 33179647 16384000 82 Linux swap / Solaris
/dev/sda3 33179648 209715199 88267776 83 Linux
/dev/sda4 209715200 838860766 314572783+ 8e Linux LVM
Disk /dev/mapper/data-data: 322.1 GB, 322118352896 bytes, 629137408 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
[root@workstation ~]#

Reference

留言