Linux LVM逻辑卷的创建

本文档介绍了如何在 CentOS 7.9 系统中,将 sdbsdcsdd 三块磁盘通过 LVM 合并成一个逻辑卷,并挂载到 /data_v2 目录,同时确保文件系统格式与当前系统主分区一致,避免出现不必要的问题。

1. 查看当前磁盘情况

首先,查看当前磁盘和分区信息,确保磁盘是未分区状态,或者已经做好了数据备份。

1
lsblk

2. 检查当前系统主分区文件系统格式

在创建文件系统之前,最好先检查当前系统主分区(如 //boot)的文件系统格式,以确保新创建的逻辑卷格式一致,避免不兼容问题。

可以通过 lsblk -f 命令查看当前系统主分区的文件系统类型:

1
lsblk -f

输出示例如下:

1
2
3
4
5
6
7
NAME            FSTYPE      LABEL           UUID                                 MOUNTPOINT
sda
├─sda1 ext4 boot e91f23ad-2d0e-4e4b-9d5a-bc61c3a56ef7 /boot
└─sda2 xfs 19c48a6c-e663-4010-a28c-4b98e29c768d /
sdb
sdc
sdd

在此示例中,系统的主分区 / 使用了 xfs 文件系统。如果你的系统主分区使用的是 xfs,你可以选择将新逻辑卷格式化为 xfs 格式;如果是 ext4,则选择 ext4 格式。

3. 创建物理卷(PV)

sdbsdcsdd 三块磁盘创建为物理卷(PV)。

1
pvcreate /dev/sdb /dev/sdc /dev/sdd

4. 创建卷组(VG)

将这三块物理卷合并为一个卷组,命名为 vg_data

1
vgcreate vg_data /dev/sdb /dev/sdc /dev/sdd

5. 创建逻辑卷(LV)

vg_data 卷组内创建一个逻辑卷,命名为 lv_data,并指定使用卷组中的全部剩余空间。

1
lvcreate -l 100%FREE -n lv_data vg_data

6. 查看卷组和逻辑卷

确认卷组和逻辑卷创建成功。

1
2
vgdisplay
lvdisplay

7. 格式化逻辑卷

对创建的逻辑卷进行格式化。确保格式化为与你当前系统主分区文件系统相同的格式(例如 xfsext4)。

如果系统主分区为 xfs,格式化为 xfs

1
mkfs.xfs /dev/vg_data/lv_data

如果系统主分区为 ext4,格式化为 ext4

1
mkfs.ext4 /dev/vg_data/lv_data

8. 创建挂载点

创建挂载目录 /data_v2,用来挂载逻辑卷。

1
mkdir /data_v2

9. 挂载逻辑卷

将逻辑卷挂载到 /data_v2 目录。

1
mount /dev/vg_data/lv_data /data_v2

10. 验证挂载

通过 df 命令验证是否成功挂载。

1
df -h

你应该能看到 /data_v2 已经成功挂载了新创建的逻辑卷。

11. 配置开机自动挂载

为了确保每次重启后该逻辑卷能够自动挂载,需要将挂载信息添加到 /etc/fstab 文件中。

首先,获取逻辑卷的 UUID:

1
blkid /dev/vg_data/lv_data

会返回类似以下的内容:

1
/dev/vg_data/lv_data: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" TYPE="ext4"

复制返回的 UUID,然后编辑 /etc/fstab 文件:

1
nano /etc/fstab

在文件末尾添加如下行:

1
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  /data_v2  ext4  defaults  0  0

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 替换为你获取的实际 UUID。如果你的系统使用的是 xfs,则将 ext4 替换为 xfs

保存并退出(按 Ctrl + X,然后按 Y 确认保存)。

12. 验证 fstab 配置

可以通过以下命令验证 /etc/fstab 配置是否正确,确保在系统重启后自动挂载:

1
mount -a

如果没有错误提示,则说明配置正确。

13. 最后检查挂载

再一次通过 df -h 检查 /data_v2 是否已挂载:

1
df -h

你应该可以看到类似下面的输出,表示挂载成功:

1
2
Filesystem                    Size  Used Avail Use% Mounted on
/dev/vg_data/lv_data 150G 2.0G 148G 2% /data_v2

可以重启再次检查,正常开机且通过df -h 检查 /data_v2 已挂载

完整的操作记录

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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
[root@duyuhan ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs ae58994c-ec22-4e22-b3ea-02b560d19525 /boot
└─sda2 LVM2_member IGKL1x-X3MF-jMr6-Ueyc-oazi-A8WC-xdDQGC
├─centos-root xfs 0d74a73d-3837-4424-9b4b-1a4f532b2bb5 /
└─centos-swap swap 2b0f03cb-d2fc-46f7-85e6-af2bc28060ca [SWAP]
sdb
sdc
sdd
sr0 iso9660 CentOS 7 x86_64 2020-11-03-14-55-29-00
[root@duyuhan ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 499G 0 part
├─centos-root 253:0 0 491.1G 0 lvm /
└─centos-swap 253:1 0 7.9G 0 lvm [SWAP]
sdb 8:16 0 50G 0 disk
sdc 8:32 0 50G 0 disk
sdd 8:48 0 50G 0 disk
sr0 11:0 1 973M 0 rom
[root@duyuhan ~]# mkdir /data_v2
[root@duyuhan ~]# pvcreate /dev/sdb /dev/sdc /dev/sdd
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
Physical volume "/dev/sdd" successfully created.
[root@duyuhan ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 499G 0 part
├─centos-root 253:0 0 491.1G 0 lvm /
└─centos-swap 253:1 0 7.9G 0 lvm [SWAP]
sdb 8:16 0 50G 0 disk
sdc 8:32 0 50G 0 disk
sdd 8:48 0 50G 0 disk
sr0 11:0 1 973M 0 rom
[root@duyuhan ~]# vgcreate vg_data /dev/sdb /dev/sdc /dev/sdd
Volume group "vg_data" successfully created
[root@duyuhan ~]# lvcreate -l 100%FREE -n lv_data vg_data
Logical volume "lv_data" created.
[root@duyuhan ~]# vgdisplay
--- 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 <499.00 GiB
PE Size 4.00 MiB
Total PE 127743
Alloc PE / Size 127742 / 498.99 GiB
Free PE / Size 1 / 4.00 MiB
VG UUID KszzR2-nz69-cgfQ-WwhE-ZK8B-yccI-irtLye

--- Volume group ---
VG Name vg_data
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size <149.99 GiB
PE Size 4.00 MiB
Total PE 38397
Alloc PE / Size 38397 / <149.99 GiB
Free PE / Size 0 / 0
VG UUID 4snrZc-bvum-VrTF-ZuYF-PzH4-yVSx-DGdUUZ

[root@duyuhan ~]# lvdisplay
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID CBKigD-9AmJ-IEwv-AMF1-QKlt-bC5G-gQzX6x
LV Write Access read/write
LV Creation host, time moulunli-dev, 2024-05-23 11:55:13 +0800
LV Status available
# open 1
LV Size <491.12 GiB
Current LE 125726
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0

--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID dQePJF-edyv-YCxr-Z30d-bmKq-x3Lp-jlEfBE
LV Write Access read/write
LV Creation host, time moulunli-dev, 2024-05-23 11:55:44 +0800
LV Status available
# open 2
LV Size <7.88 GiB
Current LE 2016
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1

--- Logical volume ---
LV Path /dev/vg_data/lv_data
LV Name lv_data
VG Name vg_data
LV UUID nnb8dw-Pwo7-F0uj-72NO-nkPG-fAv9-yOvLhh
LV Write Access read/write
LV Creation host, time duyuhan, 2025-01-08 11:25:10 +0800
LV Status available
# open 0
LV Size <149.99 GiB
Current LE 38397
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2

[root@duyuhan ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs ae58994c-ec22-4e22-b3ea-02b560d19525 /boot
└─sda2 LVM2_member IGKL1x-X3MF-jMr6-Ueyc-oazi-A8WC-xdDQGC
├─centos-root xfs 0d74a73d-3837-4424-9b4b-1a4f532b2bb5 /
└─centos-swap swap 2b0f03cb-d2fc-46f7-85e6-af2bc28060ca [SWAP]
sdb LVM2_member S6ZOQv-Hxzp-GL3i-julm-NfoW-Ub9p-YmhHuG
└─vg_data-lv_data
sdc LVM2_member ZbS77S-Z3FK-lCRe-bOuG-0xyr-A4eo-n8KTEA
└─vg_data-lv_data
sdd LVM2_member PdVcLw-ggU3-6COK-QXhG-jvHa-yDi7-vol7uL
└─vg_data-lv_data
sr0 iso9660 CentOS 7 x86_64 2020-11-03-14-55-29-00
[root@duyuhan ~]# mkfs.xfs /dev/vg_data/lv_data
meta-data=/dev/vg_data/lv_data isize=512 agcount=4, agsize=9829632 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=39318528, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=19198, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@duyuhan ~]# mount /dev/vg_data/lv_data /data_v2
[root@duyuhan ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 9.2M 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/mapper/centos-root 491G 26G 466G 6% /
/dev/sda1 1014M 195M 820M 20% /boot
overlay 491G 26G 466G 6% /var/lib/docker/overlay2/195a33dd1977f7da3efffbbcd3f0ccd7dcf0a91b31e686c81378ebcc162bdccb/merged
overlay 491G 26G 466G 6% /var/lib/docker/overlay2/a13806f6ff062846a0f4d0eedbe041a9c407e7206b8bd6b54967e2ecd05e1f82/merged
overlay 491G 26G 466G 6% /var/lib/docker/overlay2/9d7e1a5f51d5b79a70c1c688cb22cffa0ffac4a5447bbe86bf278046e38b97c0/merged
overlay 491G 26G 466G 6% /var/lib/docker/overlay2/768569a96e74265b89dbc2b59f45b42fc684f4e57abc4dfe8a8abd62b7d248c4/merged
tmpfs 1.6G 0 1.6G 0% /run/user/0
/dev/mapper/vg_data-lv_data 150G 33M 150G 1% /data_v2
[root@duyuhan ~]# blkid /dev/vg_data/lv_data
/dev/vg_data/lv_data: UUID="d64c8e66-5a31-4ee9-810b-3ba872c27d75" TYPE="xfs"
[root@duyuhan ~]# vi /etc/fstab
[root@duyuhan ~]# mount -a
[root@duyuhan ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 9.2M 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/mapper/centos-root 491G 26G 466G 6% /
/dev/sda1 1014M 195M 820M 20% /boot
overlay 491G 26G 466G 6% /var/lib/docker/overlay2/195a33dd1977f7da3efffbbcd3f0ccd7dcf0a91b31e686c81378ebcc162bdccb/merged
overlay 491G 26G 466G 6% /var/lib/docker/overlay2/a13806f6ff062846a0f4d0eedbe041a9c407e7206b8bd6b54967e2ecd05e1f82/merged
overlay 491G 26G 466G 6% /var/lib/docker/overlay2/9d7e1a5f51d5b79a70c1c688cb22cffa0ffac4a5447bbe86bf278046e38b97c0/merged
overlay 491G 26G 466G 6% /var/lib/docker/overlay2/768569a96e74265b89dbc2b59f45b42fc684f4e57abc4dfe8a8abd62b7d248c4/merged
tmpfs 1.6G 0 1.6G 0% /run/user/0
/dev/mapper/vg_data-lv_data 150G 33M 150G 1% /data_v2
[root@duyuhan ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 499G 0 part
├─centos-root 253:0 0 491.1G 0 lvm /
└─centos-swap 253:1 0 7.9G 0 lvm [SWAP]
sdb 8:16 0 50G 0 disk
└─vg_data-lv_data 253:2 0 150G 0 lvm /data_v2
sdc 8:32 0 50G 0 disk
└─vg_data-lv_data 253:2 0 150G 0 lvm /data_v2
sdd 8:48 0 50G 0 disk
└─vg_data-lv_data 253:2 0 150G 0 lvm /data_v2
sr0 11:0 1 973M 0 rom
[root@duyuhan ~]# reboot
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(10.67.44.168) at 11:28:53.

Type `help' to learn how to use Xshell prompt.
[C:\~]$

Connecting to 10.67.xx.xx:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Wed Jan 8 11:19:47 2025 from 10.67.xx.xx
[root@duyuhan ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 9.2M 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/mapper/centos-root 491G 26G 466G 6% /
/dev/sda1 1014M 195M 820M 20% /boot
/dev/mapper/vg_data-lv_data 150G 33M 150G 1% /data_v2
overlay 491G 26G 466G 6% /var/lib/docker/overlay2/768569a96e74265b89dbc2b59f45b42fc684f4e57abc4dfe8a8abd62b7d248c4/merged
overlay 491G 26G 466G 6% /var/lib/docker/overlay2/a13806f6ff062846a0f4d0eedbe041a9c407e7206b8bd6b54967e2ecd05e1f82/merged
overlay 491G 26G 466G 6% /var/lib/docker/overlay2/195a33dd1977f7da3efffbbcd3f0ccd7dcf0a91b31e686c81378ebcc162bdccb/merged
overlay 491G 26G 466G 6% /var/lib/docker/overlay2/9d7e1a5f51d5b79a70c1c688cb22cffa0ffac4a5447bbe86bf278046e38b97c0/merged
tmpfs 1.6G 0 1.6G 0% /run/user/0
[root@duyuhan ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 499G 0 part
├─centos-root 253:0 0 491.1G 0 lvm /
└─centos-swap 253:1 0 7.9G 0 lvm [SWAP]
sdb 8:16 0 50G 0 disk
└─vg_data-lv_data 253:2 0 150G 0 lvm /data_v2
sdc 8:32 0 50G 0 disk
└─vg_data-lv_data 253:2 0 150G 0 lvm /data_v2
sdd 8:48 0 50G 0 disk
└─vg_data-lv_data 253:2 0 150G 0 lvm /data_v2
sr0 11:0 1 973M 0 rom
[root@duyuhan ~]# cd //data_v2
[root@duyuhan data_v2]#

总结

通过以上步骤,你成功地将 sdbsdcsdd 三块磁盘合并成一个逻辑卷,并将其挂载到 /data_v2 目录。同时,你确保了新逻辑卷的文件系统格式与当前系统主分区一致,避免了不兼容问题,并配置了开机自动挂载。


Linux LVM逻辑卷的创建
https://luffy997.github.io/2025/01/08/Linux-LVM逻辑卷的创建/
作者
Luffy997
发布于
2025年1月8日
许可协议