博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LVM磁盘管理
阅读量:6540 次
发布时间:2019-06-24

本文共 10354 字,大约阅读时间需要 34 分钟。

   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,如需转载请自行联系原作者
你可能感兴趣的文章
简简单单几段代码让自己变成最合格的网站管理员
查看>>
Slim Text 0.0.9 发布, 代码开源!
查看>>
[置顶] 遵循Java EE标准体系的开源GIS服务平台之二:平台部署
查看>>
Session深度探索
查看>>
shell语法简单介绍
查看>>
wcf客户端终结点样本集合
查看>>
Java递归算法——阶乘
查看>>
Multi-voltage和power gating的实现
查看>>
JavaScript面向对象 ~ 原型和继承(1)
查看>>
ubuntu下安装nginx时依赖库zlib,pcre,openssl安装方法
查看>>
spring cloud微服务分布式云架构--hystrix的使用
查看>>
linux tail
查看>>
解决Mac启动Eclipse Memory Analyzer报错问题
查看>>
jquery的$().each,$.each的区别
查看>>
自己写的进度条###
查看>>
windows磁盘扩容(动态磁盘)
查看>>
实现批量添加20个用户,用户名为user1-50,密码为user后面跟5个随机字符
查看>>
Net命令详解
查看>>
CentOS linux 高可用集群之heartbeat
查看>>
Logwatch日志分析工具
查看>>