Please enable Javascript to view the contents

LVM 日常运维

 ·  ☕ 6 分钟

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
pvs
  • 创建物理卷
1
pvcreate /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1
  • 添加硬盘
1
pvcreate /dev/nvme4n1
  • 删除硬盘
1
pvremove /dev/nvme0n1 

3. 管理卷组

  • 查看卷组
1
vgs
  • 创建卷组
1
vgcreate data_vg /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1
  • 添加硬盘
1
vgextend data_vg /dev/nvme4n1
  • 删除硬盘
1
vgreduce data_vg /dev/nvme4n1
  • 删除卷组
1
lvremove data_vg

4. 管理逻辑卷

4.1 查看逻辑卷

1
lvdisplay

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 类型,自动找到满足存储容量、冗余要求的物理盘。

  • RAID 0

-i 3 表示条带化数量,也就是用 3 块物理盘进行条带化。

1
lvcreate --type raid0 -i 3 -L 100G -n my_raid_0 data_vg
  • RAID 1

-m 1 表示镜像数量,也就是用 2 块物理盘进行镜像。

1
lvcreate --type raid1 -L 100G -m1 -n my_raid_1 data_vg
  • RAID 5
1
lvcreate --type raid5 -i 3 -L 10G -n my_raid_5 data_vg
  • RAID 6

-i 4 表示条带化数量,也就是用 4 块物理盘进行条带化。

1
lvcreate --type raid6 -i 4 -L 100G -n my_raid_6 data_vg
  • RAID 10

-i 2 表示条带化数量,也就是用 2 块物理盘进行条带化。

-m 1 表示镜像数量,也就是用 2 块物理盘进行镜像。

1
lvcreate --type raid10 -i 2 -m1 -L 100G -n my_raid_10 data_vg
  • 查看 RAID 设备状态
1
lsblk
 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
mkdir /mnt/my_data1
1
mkdir /mnt/my_data2
  • 挂载
1
mount /dev/data_vg/my_data1 /mnt/my_data1
1
mount /dev/data_vg/my_data2 /mnt/my_data2
  • 查看挂载
1
df -h | grep data_vg
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
umount /mnt/my_data2
  • 检查文件系统健康状况
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
  • 查看挂载点
1
df -h | grep data_vg

微信公众号
作者
微信公众号