LVM磁盘管理

简介:

   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,如需转载请自行联系原作者

相关文章
|
6月前
|
存储 算法 IDE
磁盘管理,文件系统,挂载
磁盘管理,文件系统,挂载
|
5月前
|
存储 Linux 存储虚拟化
46. 【Linux教程】逻辑卷与 LVM 介绍
46. 【Linux教程】逻辑卷与 LVM 介绍
46 0
|
IDE 安全 Linux
2.2磁盘分区
2.2磁盘分区
88 0
|
Linux
【磁盘管理】fdisk命令 – 管理磁盘分区
fdisk命令来自于英文词组“Partition table manipulator for Linux”的缩写,其功能是用于管理磁盘的分区信息。如果一套几百平米的房子内部没有墙壁,虽然看起来会很敞亮,但是各种声音、气味、物品会随意充斥在整个房子内,让人极不舒适,因此需要用墙壁按照功能进行划分,例如卧室、厕所、厨房、阳台等等。
227 0
|
存储 运维 Oracle
Linux系统管理--硬盘、卷组、逻辑卷和文件系统
增加两个20GB的硬盘,注意新增加的硬盘不能取代原来安装了操作系统的0号硬盘,不然无法启动。
135 0
|
安全 固态存储 IDE
Linux——【磁盘管理和LVM卷组管理】
Linux——【磁盘管理和LVM卷组管理】
188 0
Linux——【磁盘管理和LVM卷组管理】
|
Oracle 关系型数据库 开发工具

相关实验场景

更多
下一篇
无影云桌面