1. 基本概念
PV (Physical Volume) 由一个或者多个物理硬盘组成,也可以是一个 RAID 设备。
VG (Volume Group) 由一个或者多个 PV 组成。
LV (Logical Volume) 从 VG 中划分出来的空间,格式化之后,挂载目录使用。
LVM 自带 RAID 功能,也可以提前组建 RAID 设备,交给 LVM 管理。
2. 管理物理卷
1
| lsblk -d -o NAME,SIZE,TYPE | grep nvme
|
1
2
3
4
5
6
| nvme0n1 745.2G disk
nvme5n1 745.2G disk
nvme1n1 745.2G disk
nvme3n1 745.2G disk
nvme4n1 745.2G disk
nvme2n1 745.2G disk
|
1
| pvcreate /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1
|
3. 管理卷组
1
| vgcreate data_vg /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1
|
1
| vgextend data_vg /dev/nvme4n1
|
1
| vgreduce data_vg /dev/nvme4n1
|
4. 管理逻辑卷
4.1 查看逻辑卷
4.2 新建逻辑卷
1
| lvcreate -l 20%FREE -n my_data1 data_vg
|
1
| lvcreate -L 100G -n my_data2 data_vg
|
4.3 新建 RAID 逻辑卷
LVM 会根据 RAID 类型,自动找到满足存储容量、冗余要求的物理盘。
-i 3 表示条带化数量,也就是用 3 块物理盘进行条带化。
1
| lvcreate --type raid0 -i 3 -L 100G -n my_raid_0 data_vg
|
-m 1 表示镜像数量,也就是用 2 块物理盘进行镜像。
1
| lvcreate --type raid1 -L 100G -m1 -n my_raid_1 data_vg
|
1
| lvcreate --type raid5 -i 3 -L 10G -n my_raid_5 data_vg
|
-i 4 表示条带化数量,也就是用 4 块物理盘进行条带化。
1
| lvcreate --type raid6 -i 4 -L 100G -n my_raid_6 data_vg
|
-i 2 表示条带化数量,也就是用 2 块物理盘进行条带化。
-m 1 表示镜像数量,也就是用 2 块物理盘进行镜像。
1
| lvcreate --type raid10 -i 2 -m1 -L 100G -n my_raid_10 data_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
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
| NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.1T 0 disk
├─sda1 8:1 0 1.1T 0 part /
└─sda2 8:2 0 64M 0 part
nvme0n1 259:0 0 745.2G 0 disk
├─data_vg-my_raid_6_rmeta_4 253:27 0 4M 0 lvm
│ └─data_vg-my_raid_6 253:31 0 100G 0 lvm
└─data_vg-my_raid_6_rimage_4 253:28 0 25G 0 lvm
└─data_vg-my_raid_6 253:31 0 100G 0 lvm
nvme5n1 259:1 0 745.2G 0 disk
├─data_vg-my_raid_6_rmeta_5 253:29 0 4M 0 lvm
│ └─data_vg-my_raid_6 253:31 0 100G 0 lvm
└─data_vg-my_raid_6_rimage_5 253:30 0 25G 0 lvm
└─data_vg-my_raid_6 253:31 0 100G 0 lvm
nvme1n1 259:2 0 745.2G 0 disk
├─data_vg-my_data2 253:0 0 105G 0 lvm /mnt/my_data2
├─data_vg-my_raid_0_rimage_0 253:1 0 33.3G 0 lvm
│ └─data_vg-my_raid_0 253:4 0 100G 0 lvm
├─data_vg-my_raid_1_rmeta_0 253:5 0 4M 0 lvm
│ └─data_vg-my_raid_1 253:9 0 100G 0 lvm
├─data_vg-my_raid_1_rimage_0 253:6 0 100G 0 lvm
│ └─data_vg-my_raid_1 253:9 0 100G 0 lvm
├─data_vg-my_raid_5_rmeta_0 253:10 0 4M 0 lvm
│ └─data_vg-my_raid_5 253:18 0 10G 0 lvm
├─data_vg-my_raid_5_rimage_0 253:11 0 3.3G 0 lvm
│ └─data_vg-my_raid_5 253:18 0 10G 0 lvm
├─data_vg-my_raid_6_rmeta_0 253:19 0 4M 0 lvm
│ └─data_vg-my_raid_6 253:31 0 100G 0 lvm
├─data_vg-my_raid_6_rimage_0 253:20 0 25G 0 lvm
│ └─data_vg-my_raid_6 253:31 0 100G 0 lvm
├─data_vg-my_raid_10_rmeta_0 253:32 0 4M 0 lvm
│ └─data_vg-my_raid_10 253:40 0 100G 0 lvm
└─data_vg-my_raid_10_rimage_0 253:33 0 50G 0 lvm
└─data_vg-my_raid_10 253:40 0 100G 0 lvm
nvme3n1 259:3 0 745.2G 0 disk
├─data_vg-my_raid_0_rimage_2 253:3 0 33.3G 0 lvm
│ └─data_vg-my_raid_0 253:4 0 100G 0 lvm
├─data_vg-my_raid_5_rmeta_2 253:14 0 4M 0 lvm
│ └─data_vg-my_raid_5 253:18 0 10G 0 lvm
├─data_vg-my_raid_5_rimage_2 253:15 0 3.3G 0 lvm
│ └─data_vg-my_raid_5 253:18 0 10G 0 lvm
├─data_vg-my_raid_6_rmeta_2 253:23 0 4M 0 lvm
│ └─data_vg-my_raid_6 253:31 0 100G 0 lvm
├─data_vg-my_raid_6_rimage_2 253:24 0 25G 0 lvm
│ └─data_vg-my_raid_6 253:31 0 100G 0 lvm
├─data_vg-my_raid_10_rmeta_2 253:36 0 4M 0 lvm
│ └─data_vg-my_raid_10 253:40 0 100G 0 lvm
└─data_vg-my_raid_10_rimage_2 253:37 0 50G 0 lvm
└─data_vg-my_raid_10 253:40 0 100G 0 lvm
nvme4n1 259:4 0 745.2G 0 disk
├─data_vg-my_raid_5_rmeta_3 253:16 0 4M 0 lvm
│ └─data_vg-my_raid_5 253:18 0 10G 0 lvm
├─data_vg-my_raid_5_rimage_3 253:17 0 3.3G 0 lvm
│ └─data_vg-my_raid_5 253:18 0 10G 0 lvm
├─data_vg-my_raid_6_rmeta_3 253:25 0 4M 0 lvm
│ └─data_vg-my_raid_6 253:31 0 100G 0 lvm
├─data_vg-my_raid_6_rimage_3 253:26 0 25G 0 lvm
│ └─data_vg-my_raid_6 253:31 0 100G 0 lvm
├─data_vg-my_raid_10_rmeta_3 253:38 0 4M 0 lvm
│ └─data_vg-my_raid_10 253:40 0 100G 0 lvm
└─data_vg-my_raid_10_rimage_3 253:39 0 50G 0 lvm
└─data_vg-my_raid_10 253:40 0 100G 0 lvm
nvme2n1 259:5 0 745.2G 0 disk
├─data_vg-my_raid_0_rimage_1 253:2 0 33.3G 0 lvm
│ └─data_vg-my_raid_0 253:4 0 100G 0 lvm
├─data_vg-my_raid_1_rmeta_1 253:7 0 4M 0 lvm
│ └─data_vg-my_raid_1 253:9 0 100G 0 lvm
├─data_vg-my_raid_1_rimage_1 253:8 0 100G 0 lvm
│ └─data_vg-my_raid_1 253:9 0 100G 0 lvm
├─data_vg-my_raid_5_rmeta_1 253:12 0 4M 0 lvm
│ └─data_vg-my_raid_5 253:18 0 10G 0 lvm
├─data_vg-my_raid_5_rimage_1 253:13 0 3.3G 0 lvm
│ └─data_vg-my_raid_5 253:18 0 10G 0 lvm
├─data_vg-my_raid_6_rmeta_1 253:21 0 4M 0 lvm
│ └─data_vg-my_raid_6 253:31 0 100G 0 lvm
├─data_vg-my_raid_6_rimage_1 253:22 0 25G 0 lvm
│ └─data_vg-my_raid_6 253:31 0 100G 0 lvm
├─data_vg-my_raid_10_rmeta_1 253:34 0 4M 0 lvm
│ └─data_vg-my_raid_10 253:40 0 100G 0 lvm
└─data_vg-my_raid_10_rimage_1 253:35 0 50G 0 lvm
└─data_vg-my_raid_10 253:40 0 100G 0 lvm
|
4.4 删除逻辑卷
1
| lvremove data_vg/my_data1
|
4.5 挂载使用
1
| mkfs.xfs /dev/data_vg/my_data1
|
1
| mkfs.ext4 /dev/data_vg/my_data2
|
1
| mount /dev/data_vg/my_data1 /mnt/my_data1
|
1
| mount /dev/data_vg/my_data2 /mnt/my_data2
|
1
2
| /dev/mapper/data_vg-my_data1 427G 468M 427G 1% /mnt/my_data1
/dev/mapper/data_vg-my_data2 98G 61M 93G 1% /mnt/my_data2
|
4.6 扩容
1
| lvextend -L +100G /dev/data_vg/my_data1
|
扩容文件系统
1
| xfs_growfs /mnt/my_data1
|
1
| lvextend -l +10%FREE /dev/data_vg/my_data2
|
扩容文件系统,但参数指向逻辑卷。
1
| resize2fs /dev/data_vg/my_data2
|
4.7 缩容
xfs、zfs 不支持缩容,ext4、Btrfs 支持。如果出现错误,可以试着重新扩容。
1
| e2fsck -f /dev/data_vg/my_data2
|
1
| resize2fs /dev/data_vg/my_data2 100G
|
逻辑卷的大小 >= 文件系统的大小。
1
| lvreduce -L 105G /dev/data_vg/my_data2
|
1
| mount /dev/data_vg/my_data2 /mnt/my_data2
|