LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现。LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。
与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储。它使系统管理员可以更方便的为应用与用户分配存储空间。在LVM管理下的存储卷可以按需要随时改变大小与移除(可能需对文件系统工具进行升级)。LVM也允许按用户组对存储卷进行管理,允许管理员用更直观的名称(如"sales'、 'development')代替物理磁盘名(如'sda'、'sdb')来标识存储卷。
1、创建LVM磁盘
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
|
[root@server02 ~]
# fdisk /dev/sdb
欢迎使用
fdisk
(util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
Partition
type
:
p primary (0 primary, 0 extended, 4
free
)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):p
磁盘
/dev/sdb
:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I
/O
大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xa71b8f53
设备 Boot Start End Blocks Id System
/dev/sdb1
2048 2099199 1048576 83 Linux
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e
//LVM
的分区类型为8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p
磁盘
/dev/sdb
:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I
/O
大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xa71b8f53
设备 Boot Start End Blocks Id System
/dev/sdb1
2048 2099199 1048576 8e Linux LVM
命令(输入 m 获取帮助):n
Partition
type
:
p primary (1 primary, 0 extended, 3
free
)
e extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (2099200-41943039,默认为 2099200):
将使用默认值 2099200
Last 扇区, +扇区 or +size{K,M,G} (2099200-41943039,默认为 41943039):+1G
分区 2 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):n
Partition
type
:
p primary (2 primary, 0 extended, 2
free
)
e extended
Select (default p): p
分区号 (3,4,默认 3):
起始 扇区 (4196352-41943039,默认为 4196352):
将使用默认值 4196352
Last 扇区, +扇区 or +size{K,M,G} (4196352-41943039,默认为 41943039):+1G
分区 3 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):p
磁盘
/dev/sdb
:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I
/O
大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xa71b8f53
设备 Boot Start End Blocks Id System
/dev/sdb1
2048 2099199 1048576 8e Linux LVM
/dev/sdb2
2099200 4196351 1048576 83 Linux
/dev/sdb3
4196352 6293503 1048576 83 Linux
命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):2
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):3
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p
磁盘
/dev/sdb
:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I
/O
大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xa71b8f53
设备 Boot Start End Blocks Id System
/dev/sdb1
2048 2099199 1048576 8e Linux LVM
/dev/sdb2
2099200 4196351 1048576 8e Linux LVM
/dev/sdb3
4196352 6293503 1048576 8e Linux LVM
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-
read
partition table.
正在同步磁盘。
[root@server02 ~]
# pvcreate /dev/sdb1 //使用pvcreate转换
WARNING: xfs signature detected on
/dev/sdb1
at offset 0. Wipe it? [y
/n
]: y
Wiping xfs signature on
/dev/sdb1
.
Physical volume
"/dev/sdb1"
successfully created.
[root@server02 ~]
# pvcreate /dev/sdb2
WARNING: xfs_external_log signature detected on
/dev/sdb2
at offset 18432. Wipe it? [y
/n
]: y
Wiping xfs_external_log signature on
/dev/sdb2
.
Physical volume
"/dev/sdb2"
successfully created.
[root@server02 ~]
# pvcreate /dev/sdb3
WARNING: dos signature detected on
/dev/sdb3
at offset 510. Wipe it? [y
/n
]: y
Wiping dos signature on
/dev/sdb3
.
Physical volume
"/dev/sdb3"
successfully created.
[root@server02 ~]
# fdisk -l /dev/sdb
磁盘
/dev/sdb
:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I
/O
大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xa71b8f53
设备 Boot Start End Blocks Id System
/dev/sdb1
2048 2099199 1048576 8e Linux LVM
/dev/sdb2
2099200 4196351 1048576 8e Linux LVM
/dev/sdb3
4196352 6293503 1048576 8e Linux LVM
[root@server02 ~]
# partprobe //使分区表生效
[root@server02 ~]
# ls /dev/sdb1
/dev/sdb1
[root@server02 ~]
# ls /dev/sdb2
/dev/sdb2
[root@server02 ~]
# ls /dev/sdb3
/dev/sdb3
[root@server02 ~]
# pvdisplay //查看已经存在的pv
"/dev/sdb3"
is a new physical volume of
"1.00 GiB"
--- NEW Physical volume ---
PV Name
/dev/sdb3
VG Name
PV Size 1.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID N7T8n5-Gc1a-bdO6-yFJy-PVTF-3HJM-Cy3gFD
"/dev/sdb2"
is a new physical volume of
"1.00 GiB"
--- NEW Physical volume ---
PV Name
/dev/sdb2
VG Name
PV Size 1.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 0Y7myL-dyWh-iKbN-G82H-U5je-lsGD-03i7UL
"/dev/sdb1"
is a new physical volume of
"1.00 GiB"
--- NEW Physical volume ---
PV Name
/dev/sdb1
VG Name
PV Size 1.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID uWSpFE-KDDS-99nq-5jlc-NBAv-1JBi-PZgxC0
[root@server02 ~]
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1
lvm2 --- 1.00g 1.00g
/dev/sdb2
lvm2 --- 1.00g 1.00g
/dev/sdb3
lvm2 --- 1.00g 1.00g
[root@server02 ~]
# vgcreate vg1 /dev/sdb1 /dev/sdb2 //创建VG,同一VG下的一组PV构成一个VG
Volume group
"vg1"
successfully created
[root@server02 ~]
# vgs
VG
#PV #LV #SN Attr VSize VFree
vg1 2 0 0 wz--n- 1.99g 1.99g
[root@server02 ~]
# lvcreate -L 100M -n lv1 vg1
Logical volume
"lv1"
created.
[root@server02 ~]
# mkfs.ext4 /dev/vg1/lv1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS
type
: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved
for
the super user
第一个数据块=1
Maximum filesystem blocks=33685504
13 block
groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@server02 ~]
# mount /dev/vg1/lv1 /mnt/
[root@server02 ~]
# mkdir /mnt/123
[root@server02 ~]
# touch /mnt/1.txt
[root@server02 ~]
# echo "1234">/mnt/1.txt
[root@server02 ~]
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3
28G 1.1G 27G 4% /
devtmpfs 483M 0 483M 0%
/dev
tmpfs 493M 0 493M 0%
/dev/shm
tmpfs 493M 6.8M 486M 2%
/run
tmpfs 493M 0 493M 0%
/sys/fs/cgroup
/dev/sda1
197M 109M 88M 56%
/boot
tmpfs 99M 0 99M 0%
/run/user/0
/dev/mapper/vg1-lv1
93M 1.6M 85M 2%
/mnt
[root@server02 ~]
# cat /mnt/1.txt
1234
|
2、磁盘扩容
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
|
[root@server02 ~]
# umount /mnt/
[root@server02 ~]
# lvresize -L 300M /dev/vg1/lv1
Size of logical volume vg1
/lv1
changed from 100.00 MiB (25 extents) to 300.00 MiB (75 extents).
Logical volume vg1
/lv1
successfully resized.
[root@server02 ~]
# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg1/lv1
: 13
/25688
files (7.7% non-contiguous), 8899
/102400
blocks
[root@server02 ~]
# mount /dev/vg1/lv1 /mnt/
[root@server02 ~]
# resize2fs /dev/vg1/lv1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at
/dev/vg1/lv1
is mounted on
/mnt
; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 3
The filesystem on
/dev/vg1/lv1
is now 307200 blocks long.
[root@server02 ~]
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3
28G 1.1G 27G 4% /
devtmpfs 483M 0 483M 0%
/dev
tmpfs 493M 0 493M 0%
/dev/shm
tmpfs 493M 6.8M 486M 2%
/run
tmpfs 493M 0 493M 0%
/sys/fs/cgroup
/dev/sda1
197M 109M 88M 56%
/boot
tmpfs 99M 0 99M 0%
/run/user/0
/dev/mapper/vg1-lv1
287M 2.1M 270M 1%
/mnt
|
如果是xfs格式时,不需要卸载,但需要执行xfs_growfs /dev/vg1/lv1命令。
3、磁盘缩减
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
|
[root@server02 ~]
# umount /mnt/
[root@server02 ~]
# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg1/lv1
: 13
/75088
files (7.7% non-contiguous), 15640
/307200
blocks
[root@server02 ~]
# resize2fs /dev/vg1/lv1 100M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on
/dev/vg1/lv1
to 102400 (1k) blocks.
The filesystem on
/dev/vg1/lv1
is now 102400 blocks long.
[root@server02 ~]
# lvresize -L 100M /dev/vg1/lv1
WARNING: Reducing active logical volume to 100.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1
/lv1
? [y
/n
]: y
Size of logical volume vg1
/lv1
changed from 300.00 MiB (75 extents) to 100.00 MiB (25 extents).
Logical volume vg1
/lv1
successfully resized.
[root@server02 ~]
# mount /dev/vg1/lv1 /mnt/
[root@server02 ~]
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3
28G 1.1G 27G 4% /
devtmpfs 483M 0 483M 0%
/dev
tmpfs 493M 0 493M 0%
/dev/shm
tmpfs 493M 6.8M 486M 2%
/run
tmpfs 493M 0 493M 0%
/sys/fs/cgroup
/dev/sda1
197M 109M 88M 56%
/boot
tmpfs 99M 0 99M 0%
/run/user/0
/dev/mapper/vg1-lv1
93M 1.6M 86M 2%
/mnt
|
磁盘缩减是一个很危险的操作,在操作过程中,需要注意每一步的提示信息是否正常。以防缩减导致的数据缺损和丢失的问题。强烈建议做磁盘缩减前,做一次数据完整备份,并且每一步操作在实验虚拟机上模拟一遍。
注意:xfs格式不支持缩减。
4、扩展卷组
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@server02 ~]
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1
vg1 lvm2 a-- 1020.00m 920.00m
/dev/sdb2
vg1 lvm2 a-- 1020.00m 1020.00m
/dev/sdb3
lvm2 --- 1.00g 1.00g
[root@server02 ~]
# vgextend vg1 /dev/sdb3
Volume group
"vg1"
successfully extended
[root@server02 ~]
# lvresize -L 100M /dev/vg1/lv1
New size (25 extents) matches existing size (25 extents).
[root@server02 ~]
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1
vg1 lvm2 a-- 1020.00m 920.00m
/dev/sdb2
vg1 lvm2 a-- 1020.00m 1020.00m
/dev/sdb3
vg1 lvm2 a-- 1020.00m 1020.00m
|
本文转自Grodd51CTO博客,原文链接:http://blog.51cto.com/juispan/1940032,如需转载请自行联系原作者