Linux 下扩展磁盘分区

查看磁盘信息

查看磁盘使用状态

1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 18G 18G 9.2M 100% /
/dev/sda1 497M 169M 329M 34% /boot
/dev/sdb1 100G 1.8G 99G 2% /home
tmpfs 378M 0 378M 0% /run/user/0

查看磁盘分区结构

1
2
3
4
5
6
7
8
9
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─centos-root 253:0 0 17.5G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 100G 0 disk
└─sdb1 8:17 0 100G 0 part /home
  • 由上面的信息可知,我们当前系统的根分区空间满了,需要进行扩容操作。

添加磁盘及分区

添加磁盘

1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─centos-root 253:0 0 17.5G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 100G 0 disk
└─sdb1 8:17 0 100G 0 part /home
sdc 8:32 0 50G 0 disk
  • 如上所示,我们添加了一块磁盘,sdc,未进行任何格式化或者分区操作

创建分区表

  • 由于磁盘空间只有50G,故这里对分区表没有要求,使用msdos或者GPT分区都行。注意如果空间大小超过了2TB,则必须采用GPT分区表。这里我们采用GPT分区表。
1
2
3
4
5
6
7
8
9
10
11
12
13
# 创建GPT分区表
[root@localhost ~]# parted /dev/sdc mklabel GPT
Information: You may need to update /etc/fstab.

# 查看磁盘信息
[root@localhost ~]# parted /dev/sdc print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags

创建分区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 创建一个主分区,分区起始地址为1MiB
[root@localhost ~]# parted /dev/sdc mkpart primary xfs 1MiB 100%FREE
Information: You may need to update /etc/fstab.

# 查看磁盘信息
[root@localhost ~]# parted /dev/sdc print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 1049kB 53.7GB 53.7GB primary
  • 由于我们的扩容策略是将该磁盘上所有的空间全部扩容到根分区,故这里我们只需要在该磁盘上创建一个分区,分区大小是整个磁盘的容量大小即可。这里采用了1MIB对齐。

扩容指定分区

创建物理卷

  • 分区扩容我们是通过逻辑卷来完成了,首先我们先在上面创建的分区上创建物理卷
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 创建物理卷
[root@localhost ~]# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created.

# 查看物理卷信息
[root@localhost ~]# pvdisplay /dev/sdc1
"/dev/sdc1" is a new physical volume of "<50.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc1
VG Name
PV Size <50.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 0hRpcz-o6gQ-4MtD-MuGs-ltT3-RoVk-3E9Oc5

查找目标卷组

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
# 查看逻辑卷信息
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID 60jdcJ-NQfJ-MT4K-rcrp-Gmbp-OY2S-gfdapy
LV Write Access read/write
LV Creation host, time localhost, 2018-07-08 05:32:48 +0800
LV Status available
# open 2
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1

--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID 0D5etc-7klz-Im4Y-GHAs-0O8W-mrCU-JZCXGY
LV Write Access read/write
LV Creation host, time localhost, 2018-07-08 05:32:49 +0800
LV Status available
# open 1
LV Size <17.47 GiB
Current LE 4472
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
  • 由于我们扩容的逻辑卷是 /dev/centos/root, 故其对应的卷组为centos,所以我们需要将新创建的物理卷 添加到centos这个卷组中

卷组扩容

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
# 将物理卷 /dev/sdc1 添加到卷组centos中
[root@localhost ~]# vgextend centos /dev/sdc1
Volume group "centos" successfully extended

# 查看卷组centos的信息
[root@localhost ~]# vgdisplay centos
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 69.50 GiB
PE Size 4.00 MiB
Total PE 17793
Alloc PE / Size 4984 / <19.47 GiB
Free PE / Size 12809 / <50.04 GiB
VG UUID j21OCZ-h3yM-KMAD-fUdc-2KxW-wM1p-qhxcoa


# 查看物理卷信息,此时物理卷信息中的卷组已经是centos了
[root@localhost ~]# pvdisplay /dev/sdc1
--- Physical volume ---
PV Name /dev/sdc1
VG Name centos
PV Size <50.00 GiB / not usable 2.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 12799
Free PE 12799
Allocated PE 0
PV UUID 0hRpcz-o6gQ-4MtD-MuGs-ltT3-RoVk-3E9Oc5

逻辑卷扩容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 逻辑卷扩容 50G
[root@localhost ~]# lvextend -L "+50G" /dev/centos/root
Size of logical volume centos/root changed from <17.47 GiB (4472 extents) to <67.47 GiB (17272 extents).
Logical volume centos/root successfully resized.

# 查看逻辑卷信息
[root@localhost ~]# lvdisplay /dev/centos/root
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID 0D5etc-7klz-Im4Y-GHAs-0O8W-mrCU-JZCXGY
LV Write Access read/write
LV Creation host, time localhost, 2018-07-08 05:32:49 +0800
LV Status available
# open 1
LV Size <67.47 GiB
Current LE 17272
Segments 2
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
# 对根分区的文件系统进行扩容
[root@localhost ~]# xfs_growfs /
meta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=1144832 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0 spinodes=0
data = bsize=4096 blocks=4579328, 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 blocks changed from 4579328 to 17686528

# 查看分区大小
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 68G 18G 51G 26% /
/dev/sda1 497M 169M 329M 34% /boot
/dev/sdb1 100G 1.8G 99G 2% /home
tmpfs 378M 0 378M 0% /run/user/0