Centos 磁盘扩容

1. 扩容方式

我这边使用的是 VirtualBox 虚拟机,Cnetos 7.9,我们可以在虚拟介质管理进行空间分配和调整

image-20220220191758117

image-20220220191958970

然后应用即可(该操作只能在关机状态下操作!)

这边只是分配了空间,我们需要还对磁盘进行分区,又分为两种

  • 不中断业务,新增分区

    为扩容后的磁盘增加新的分区,不需要卸载原有分区,相比替换原有分区的方法,对业务影响较小。推荐系统盘或者需要保证业务不中断的磁盘扩容场景使用。

    如果当前磁盘使用的是 MBR 格式,则此时要求扩容后的数据盘最大容量为2 TB,并且磁盘的分区数量还未达到上限。

  • 中断业务,替换原有分区

    如果当前磁盘使用的是 MBR 格式,并且磁盘的分区数量已经达到上限,则此时需要替换原有分区,替换原有分区不会删除原有分区的数据,但是需要先卸载原有分区,会影响线上业务运行。

    如果当前磁盘使用的是 MBR 格式,并且扩容后磁盘容量已经超过2 TB,则 MBR 格式无法对超过2 TB 的部分进行分区。此时若将MBR分区方式换为 GPT,更换磁盘分区方式时会清除磁盘的原有数据,请先对数据进行备份。

我这边采取新增分区方案

2. 查看分区

分区前,需要查看当前磁盘的分区方式,当为MBR时可以选择 fdisk 或者 parted 工具,当为 GPT 时需要使用 parted 工具。

查看磁盘分区信息

1
fdisk -l

image-20220220193012031

“/dev/sda” 为系统盘

“Disk label type” 表示当前磁盘的分区方式,dos 表示磁盘分区方式为 MBR,gpt 表示磁盘分区方式为 GPT。

3. 新增分区

如果分区操作有误,请输入 “q”,则会退出 fdisk 分区工具,之前的分区结果将不会被保留。

3.1 使用 fdisk 对 /dev/sda 分区

1
fdisk /dev/sda

image-20220220193516235

3.2 输入 n 新建分区

1
2
3
4
5
6
7
8
9
10
11
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): # 分区类型,直接默认主分区
Using default response p
Partition number (3,4, default 3): # 分区序号,直接默认
First sector (104857600-125829119, default 104857600): # 新分区的起始磁柱编号,默认
Using default value 104857600
Last sector, +sectors or +size{K,M,G} (104857600-125829119, default 125829119): # 新分区的起始磁柱编号,默认
Using default value 125829119
Partition 3 of type Linux and of size 10 GiB is set

3.3 输入 t 设置分区格式

image-20220220210440794

8e 为 lvm

LVM利用Linux内核的device-mapper来实现存储系统的虚拟化(系统分区独立于底层硬件)。通过LVM,你可以实现存储空间的抽象化并在上面建立虚拟分区(virtual partitions),可以更简便地扩大和缩小分区,无需担心某个硬盘上没有足够的连续空间。

LVM的基本组成块(building blocks)如下:

  1. 物理卷 Physical volume (PV) :可以在上面建立卷组的媒介,可以是硬盘分区,也可以是硬盘本身或者回环文件(loopback file)。物理卷包括一个特殊的header,其余部分被切割为一块块物理区域(physical extents)
  2. 卷组 Volume group (VG) :将一组物理卷收集为一个管理单元
  3. 逻辑卷 Logical volume (LV) :虚拟分区,由物理区域
  4. 物理区域 Physical extent (PE) :硬盘可供指派给逻辑卷的最小单位(通常为4MB)

比起正常的硬盘分区管理,LVM更富于弹性:

  1. 使用卷组(VG),使众多硬盘空间看起来像一个大硬盘
  2. 使用逻辑卷(LV),可以创建跨越众多硬盘空间的分区
  3. 可以创建小的逻辑卷(LV),在空间不足时再动态调整它的大小
  4. 在调整逻辑卷(LV)大小时可以不用考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间
  5. 可以在线(online)对逻辑卷(LV)和卷组(VG)进行创建、删除、调整大小等操作,LVM上的文件系统也需要重新调整大小,某些文件系统也支持这样的在线操作。
  6. 无需重新启动服务,就可以将服务中用到的逻辑卷(LV)在线(online)/动态(live)迁移至别的硬盘上。
  7. 允许创建快照,可以保存文件系统的备份,同时使服务的下线时间(downtime)降低到最小。

3.4 输入 w 将分区结果写入分区表中

image-20220220194817206

4. 创建物理卷(PV)

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
[root@dream ~]# pvdisplay # 查看物理卷
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size <49.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 12543
Free PE 1
Allocated PE 12542
PV UUID YlSuif-tyMd-mohJ-gKQv-YRgc-OyKi-TtsI74

[root@dream ~]# pvcreate /dev/sda3 # 创建物理卷
Physical volume "/dev/sda3" successfully created.
[root@dream ~]# pvdisplay #再次查看
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size <49.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 12543
Free PE 1
Allocated PE 12542
PV UUID YlSuif-tyMd-mohJ-gKQv-YRgc-OyKi-TtsI74

"/dev/sda3" is a new physical volume of "10.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sda3
VG Name
PV Size 10.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID fHqGUt-lPu6-s6Oo-BUjK-s6NH-T2T0-goRcd0

# 可以看到新的物理卷,大小为我扩容的 10G

5. 将物理卷(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
37
38
39
40
41
42
43
44
45
[root@dream ~]# vgdisplay	# 查看卷组,可用 PE 为1,也就是 4M
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <49.00 GiB
PE Size 4.00 MiB
Total PE 12543
Alloc PE / Size 12542 / 48.99 GiB
Free PE / Size 1 / 4.00 MiB
VG UUID acX3P4-ayHo-cppq-lD59-eCK4-ecWW-7VA4wp

[root@dream ~]# vgextend centos /dev/sda3 # 将新分区加入 centos 卷组
Volume group "centos" successfully extended
[root@dream ~]# vgdisplay # 再次查看卷组 可用 PE 为2560,也就是 10GiB
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
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 58.99 GiB
PE Size 4.00 MiB
Total PE 15102
Alloc PE / Size 12542 / 48.99 GiB
Free PE / Size 2560 / 10.00 GiB
VG UUID acX3P4-ayHo-cppq-lD59-eCK4-ecWW-7VA4wp

6. 逻辑卷(LV)扩容

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
[root@dream ~]# df -h #查看磁盘情况
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 9.1M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 47G 8.7G 39G 19% /
/dev/sda1 1014M 150M 865M 15% /boot
overlay 47G 8.7G 39G 19% /var/lib/docker/overlay2/2dfe976c92c0fa85e834e5aadecbb65867beadb76132e29399a4fff638692371/merged
overlay 47G 8.7G 39G 19% /var/lib/docker/overlay2/3ee3a86bd1a312d5c76608cd9e19a159cc4f8d56298db783f31b23b5a0c2236a/merged
overlay 47G 8.7G 39G 19% /var/lib/docker/overlay2/c2079604082005e12f82150e3e5faec3b9d0bb8fa8eedeed9de6ab4836fe137d/merged
overlay 47G 8.7G 39G 19% /var/lib/docker/overlay2/08a128414b31313071d80afedb85cbf773645035e6715e1743f7968c73b0f492/merged
overlay 47G 8.7G 39G 19% /var/lib/docker/overlay2/97107f876c6416d0796443de593c74b1c109f2eaa76001c169c5ccf306a3801f/merged
overlay 47G 8.7G 39G 19% /var/lib/docker/overlay2/56f6ff1076be9fa2c30119cfd8a048e55d98bf49764fe50935b60e7f5f4f7f0c/merged
overlay 47G 8.7G 39G 19% /var/lib/docker/overlay2/37b2f20fb1b26812adc332cb3be1a3d164c5b43b2aaa4bb12348affdbcaa6af6/merged
tmpfs 783M 0 783M 0% /run/user/0
[root@dream ~]# lvdisplay 查看 LV 信息
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID EfZny2-B6fb-cUAK-Q2ra-KLaq-DjXP-s9xKbM
LV Write Access read/write
LV Creation host, time localhost, 2021-08-01 11:19:18 +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 grbt1v-ugSB-fYmd-kwbT-G3kT-LE78-qhcQyC
LV Write Access read/write
LV Creation host, time localhost, 2021-08-01 11:19:18 +0800
LV Status available
# open 1
LV Size 46.99 GiB
Current LE 12030
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0

[root@dream ~]# lvresize -l +100%FREE /dev/centos/root # 给 /dev/centos/root 这个逻辑卷扩容(大小为所在卷组 100% 可用 PE)
Size of logical volume centos/root changed from 46.99 GiB (12030 extents) to 56.99 GiB (14590 extents).
Logical volume centos/root successfully resized.
[root@dream ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 9.1M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 47G 8.7G 39G 19% /
/dev/sda1 1014M 150M 865M 15% /boot
overlay 47G 8.7G 39G 19% /var/lib/docker/overlay2/2dfe976c92c0fa85e834e5aadecbb65867beadb76132e29399a4fff638692371/merged
overlay 47G 8.7G 39G 19% /var/lib/docker/overlay2/3ee3a86bd1a312d5c76608cd9e19a159cc4f8d56298db783f31b23b5a0c2236a/merged
overlay 47G 8.7G 39G 19% /var/lib/docker/overlay2/c2079604082005e12f82150e3e5faec3b9d0bb8fa8eedeed9de6ab4836fe137d/merged
overlay 47G 8.7G 39G 19% /var/lib/docker/overlay2/08a128414b31313071d80afedb85cbf773645035e6715e1743f7968c73b0f492/merged
overlay 47G 8.7G 39G 19% /var/lib/docker/overlay2/97107f876c6416d0796443de593c74b1c109f2eaa76001c169c5ccf306a3801f/merged
overlay 47G 8.7G 39G 19% /var/lib/docker/overlay2/56f6ff1076be9fa2c30119cfd8a048e55d98bf49764fe50935b60e7f5f4f7f0c/merged
overlay 47G 8.7G 39G 19% /var/lib/docker/overlay2/37b2f20fb1b26812adc332cb3be1a3d164c5b43b2aaa4bb12348affdbcaa6af6/merged
tmpfs 783M 0 783M 0% /run/user/0
[root@dream ~]# xfs_growfs /dev/centos/root # 用 xfs_growfs 对扩容后的 LV 进行 xfs 格式同步系统
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=3079680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=12318720, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=6015, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 12318720 to 14940160
[root@dream ~]# df -h # 重新查看磁盘情况,可以看到扩容了 10G
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 9.1M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 57G 8.7G 49G 16% /
/dev/sda1 1014M 150M 865M 15% /boot
overlay 57G 8.7G 49G 16% /var/lib/docker/overlay2/2dfe976c92c0fa85e834e5aadecbb65867beadb76132e29399a4fff638692371/merged
overlay 57G 8.7G 49G 16% /var/lib/docker/overlay2/3ee3a86bd1a312d5c76608cd9e19a159cc4f8d56298db783f31b23b5a0c2236a/merged
overlay 57G 8.7G 49G 16% /var/lib/docker/overlay2/c2079604082005e12f82150e3e5faec3b9d0bb8fa8eedeed9de6ab4836fe137d/merged
overlay 57G 8.7G 49G 16% /var/lib/docker/overlay2/08a128414b31313071d80afedb85cbf773645035e6715e1743f7968c73b0f492/merged
overlay 57G 8.7G 49G 16% /var/lib/docker/overlay2/97107f876c6416d0796443de593c74b1c109f2eaa76001c169c5ccf306a3801f/merged
overlay 57G 8.7G 49G 16% /var/lib/docker/overlay2/56f6ff1076be9fa2c30119cfd8a048e55d98bf49764fe50935b60e7f5f4f7f0c/merged
overlay 57G 8.7G 49G 16% /var/lib/docker/overlay2/37b2f20fb1b26812adc332cb3be1a3d164c5b43b2aaa4bb12348affdbcaa6af6/merged
tmpfs 783M 0 783M 0% /run/user/0

7. 说明

7.1 命令

lresize 命令
options:
-L:指定逻辑卷的大小,单位为“kKmMgGtT”字节;
-l:指定逻辑卷的大小(LE数)。
可以指定大小,也可以像我上面的一样 100%FREE ,就是把卷组可用 PE 全部分配给逻辑卷

xfs_growfs 命令
这个命令是用来同步系统的,自动扩展XFS文件系统到最大的可用大小,不执行此操作是无法看到新增的容量的,但是在此之前我们是需要查看文件系统的

image-20220220214655257

使用 df -hT 来查看,Type 对应的类型
resize2fs 命令 针对的是ext2、ext3、ext4文件系统
xfs_growfs 命令 针对的是xfs文件系统

7.2 /dev/centos/root

/dev/centos/root 对应 /dev/卷组/逻辑卷