一、LVM概念
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组(volume group),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logical volumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。
二、LVM结构
三、大纲
大纲:
一、将硬盘分区并划分为lvm卷
二、将分区转换为pv物理卷
三、将pv加入到一个vg组中
四、从vg划出lv逻辑卷
五、格式化lv卷
六、开机自动挂载
七、扩大逻辑卷(lv),扩大卷组(vg)
八、减小卷组(vg),减小逻辑卷(lv)
九、创建逻辑卷快照
十、删除卷组(vg),删除物理卷(pv),删除逻辑卷(lv)
十一、在lvm逻辑卷中常用的命令
四、实战动起来
fdisk最多支持15个分区,这是fdisk天生的限制
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
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
|
一、将硬盘分区并划分为lvm卷
[root@localhost ~]# fdisk /dev/sdb #对/dev/sdb进行磁盘分区
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xafb2301b.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won
't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It
's strongly recommended to
switch off the mode (command
'c') and change display units to
sectors (command
'u').
Command (m for help): p #打印分区表
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xafb2301b
Device Boot Start
End
Blocks Id System
Command (m for help): n #增加一个新分区
Command action
e extended #扩展分区
p primary partition (1-4) #主分区
p
Partition number (1-4): 1 #分区编号
First cylinder (1-1305, default 1): 1 #起初柱为1
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +2000MB #分区的大小为2G
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2 #第二个分区
First cylinder (245-1305, default 245):
Using default value 245
Last cylinder, +cylinders or +size{K,M,G} (245-1305, default 1305): +2000MB
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3 #第三个分区
First cylinder (489-1305, default 489):
Using default value 489
Last cylinder, +cylinders or +size{K,M,G} (489-1305, default 1305): +2000MB
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Selected partition 4 #第四个分区
First cylinder (733-1305, default 733):
Using default value 733
Last cylinder, +cylinders or +size{K,M,G} (733-1305, default 1305): +2000MB
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xafb2301b
Device Boot Start
End
Blocks Id System
/dev/sdb1 1 244 1959898+ 83 Linux
/dev/sdb2 245 488 1959930 83 Linux
/dev/sdb3 489 732 1959930 83 Linux
/dev/sdb4 733 976 1959930 83 Linux
Command (m for help): t #改变一个分区的系统id
Partition number (1-4): 1 #分区编号
Hex code (type L to list codes): l #查看类型
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx
5 Extended 42 SFS 86 NTFS volume set da Non-FS data
6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt
9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access
a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT
f W95 Ext
'd (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT
1e Hidden W95 FAT1
Hex code (type L to list codes): 8e #Linux LVM编号
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)
Command (m for help): t
Partition number (1-4): 4
Hex code (type L to list codes): 8e
Changed system type of partition 4 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xafb2301b
Device Boot Start
End
Blocks Id System
/dev/sdb1 1 244 1959898+ 8e Linux LVM
/dev/sdb2 245 488 1959930 8e Linux LVM
/dev/sdb3 489 732 1959930 8e Linux LVM
/dev/sdb4 733 976 1959930 8e Linux LVM
Command (m for help): w #保存分区表、打印分区表信息并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
二、将分区转换为pv物理卷
注释:PE的大小默认是4M
1、安装必要的软件包
yum -y install parted lvm2
2、让内核重新载入分区
注释:新硬盘分区完成后,使用partprobe将新的分区表读入内存
[root@localhost ~]# partprobe /dev/sdb #内核加载硬盘分区并读入到内存中
[root@localhost ~]# cat /proc/partitions #查看是否重新加载硬盘分区
[root@localhost ~]# pvcreate /dev/sdb{1,2,3,4} #将分区转换成物理卷
Physical volume
"/dev/sdb1"
successfully created
Physical volume
"/dev/sdb2"
successfully created
Physical volume
"/dev/sdb3"
successfully created
Physical volume
"/dev/sdb4"
successfully created
[root@localhost ~]# pvscan #查看物理卷,方法1
PV /dev/sdb1 lvm2 [1.87 GiB]
PV /dev/sdb2 lvm2 [1.87 GiB]
PV /dev/sdb3 lvm2 [1.87 GiB]
PV /dev/sdb4 lvm2 [1.87 GiB]
Total: 4 [7.48 GiB] / in use: 0 [0 ] / in no VG: 4 [7.48 GiB]
[root@localhost ~]# pvs #查看物理卷,方法2
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 a-- 1.87g 1.87g
/dev/sdb2 lvm2 a-- 1.87g 1.87g
/dev/sdb3 lvm2 a-- 1.87g 1.87g
/dev/sdb4 lvm2 a-- 1.87g 1.87g
[root@localhost ~]# pvdisplay #更详细的查看pv的相关信息
"/dev/sdb1"
is a new physical volume of
"1.87 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 1.87 GiB
Allocatable NO
PE Size 0 #在pv没有加入vg之前,pv是没有PE的
Total PE 0
Free PE 0
Allocated PE 0
PV UUID iuJHvt-P5by-2VIz-fZJX-WTXe-tYb5-57EcVk
"/dev/sdb2"
is a new physical volume of
"1.87 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb2
VG Name
PV Size 1.87 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID sGFf2W-O9Ss-9z5R-JvQz-czoz-Gihq-8TmqnL
"/dev/sdb3"
is a new physical volume of
"1.87 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb3
VG Name
PV Size 1.87 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID rRAyyb-I1XL-cpya-516K-h8Qs-ur3N-RgrH0X
"/dev/sdb4"
is a new physical volume of
"1.87 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb4
VG Name
PV Size 1.87 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 1wy8w7-fHvU-UgrS-jLpy-v7we-FaOt-KyAaOZ
三、将pv加入到一个vg组中
[root@localhost ~]# vgcreate myvg /dev/sdb{1,2,3} #将物理卷1,2,3加入到卷组,卷组名为myvg
Volume group
"myvg"
successfully created
[root@localhost ~]# vgscan #查看卷组
Reading all physical volumes. This may take a while...
Found volume group
"myvg"
using metadata type lvm2
[root@localhost ~]# vgs #查看卷组
VG #PV #LV #SN Attr VSize VFree
myvg 3 0 0 wz--n- 5.60g 5.60g
[root@localhost ~]# vgdisplay myvg
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 5.60 GiB
PE Size 4.00 MiB #pv加入vg后,才会有PE,默认是4M
Total PE 1434
Alloc PE / Size 0 / 0
Free PE / Size 1434 / 5.60 GiB
VG UUID 9LyXRu-JUCz-pcw6-Afkq-tAgN-A3pQ-G2RS4I
四、从vg划出lv逻辑卷
[root@localhost ~]# lvcreate -n mydata -L 4G myvg
Logical volume
"mydata"
created
[root@localhost ~]# lvscan
ACTIVE
'/dev/myvg/mydata' [4.00 GiB] inherit
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
mydata myvg -wi-a----- 4.00g
五、格式化lv卷
[root@localhost ~]# mkfs.ext4 /dev/myvg/mydata
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
262144 inodes, 1048576 blocks
52428 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1073741824
32 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
六、开机自动挂载
[root@localhost ~]# mkdir /mysql
[root@localhost ~]# mount /dev/myvg/mydata /mysql
[root@localhost ~]# ll /mysql/
总用量 16
drwx------ 2 root root 16384 8月 24 10:17 lost+found
[root@localhost ~]# vim /etc/fstab #加入到开启自启动中
/dev/myvg/mydata /mysql ext4 defaults 0 0
[root@localhost ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda3 39016904 1291960 35742944 4% /
tmpfs 506272 0 506272 0% /dev/shm
/dev/sda1 198337 25824 162273 14% /boot
/dev/mapper/myvg-mydata
4128448 139256 3779480 4% /mysql
[root@localhost ~]# umount /mysql #卸载挂载盘
[root@localhost ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda3 39016904 1291960 35742944 4% /
tmpfs 506272 0 506272 0% /dev/shm
/dev/sda1 198337 25824 162273 14% /boot
[root@localhost ~]# mount -a #重新载入/etc/fstab配置文件
[root@localhost ~]# df #已经挂载/mysql
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda3 39016904 1291960 35742944 4% /
tmpfs 506272 0 506272 0% /dev/shm
/dev/sda1 198337 25824 162273 14% /boot
/dev/mapper/myvg-mydata
4128448 139256 3779480 4% /mysql
七、扩大逻辑卷(lv),扩大卷组(vg)
1、扩大逻辑卷(lv)
[root@localhost ~]# vgdisplay myvg #查看卷组的信息
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 3
Act PV 3
VG Size 5.60 GiB #卷组大小为5.6G
PE Size 4.00 MiB #默认PE大小为4M
Total PE 1434
Alloc PE / Size 1024 / 4.00 GiB
Free PE / Size 410 / 1.60 GiB
VG UUID Aeyfd0-9GUH-GHNg-G5qR-wN0T-r14b-ojIWJ2
[root@localhost ~]# lvdisplay /dev/myvg/mydata #查看lv逻辑卷的信息
--- Logical volume ---
LV Path /dev/myvg/mydata
LV Name mydata
VG Name myvg
LV UUID HzL6Hz-gy1z-bte2-Yvzc-tzpX-ZzHX-omel2Y
LV Write Access read/write
LV Creation host, time localhost, 2014-08-24 10:15:21 +0800
LV Status available
# open 1
LV Size 4.00 GiB #卷组大小为4G
Current LE 1024
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
[root@localhost ~]# df -TH #查看磁盘的相关信息
文件系统 类型 容量 已用 可用 已用%% 挂载点
/dev/sda3 ext4 40G 1.4G 37G 4% /
tmpfs tmpfs 519M 0 519M 0% /dev/shm
/dev/sda1 ext4 204M 27M 167M 14% /boot
/dev/mapper/myvg-mydata
ext4 4.3G 143M 3.9G 4% /mysql
#首先查看lv开头的相关命令,然后针对性的分析学习
[root@localhost ~]# lv
lvchange lvdisplay lvmchange lvmdump lvmsar lvrename lvscan
lvconvert lvextend lvmconf lvmetad lvreduce lvresize
lvcreate lvm lvmdiskscan lvmsadc lvremove lvs
[root@localhost ~]# lvextend -L +1G /dev/myvg/mydata #将逻辑卷mydata增加1G
Extending logical volume mydata to 5.00 GiB
Logical volume mydata successfully resized
[root@localhost ~]# lvdisplay /dev/myvg/mydata #查看逻辑卷的大小
--- Logical volume ---
LV Path /dev/myvg/mydata
LV Name mydata
VG Name myvg
LV UUID HzL6Hz-gy1z-bte2-Yvzc-tzpX-ZzHX-omel2Y
LV Write Access read/write
LV Creation host, time localhost, 2014-08-24 10:15:21 +0800
LV Status available
# open 1
LV Size 5.00 GiB #由刚才的4G到现在的5G,增加了1G
Current LE 1280
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
[root@localhost ~]# df -TH
文件系统 类型 容量 已用 可用 已用%% 挂载点
/dev/sda3 ext4 40G 1.4G 37G 4% /
tmpfs tmpfs 519M 0 519M 0% /dev/shm
/dev/sda1 ext4 204M 27M 167M 14% /boot
/dev/mapper/myvg-mydata
ext4 4.3G 143M 3.9G 4% /mysql #查看大小还是4.3G,显然没有变化
#在这里即使你重新挂载大小也不会变化,我们需要强制修改分区表
[root@localhost ~]# resize2fs -f /dev/myvg/mydata
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/myvg/mydata is mounted on /mysql; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/myvg/mydata to 1310720 (4k) blocks.
The filesystem on /dev/myvg/mydata is now 1310720 blocks long.
[root@localhost ~]# df -TH
文件系统 类型 容量 已用 可用 已用%% 挂载点
/dev/sda3 ext4 40G 1.4G 37G 4% /
tmpfs tmpfs 519M 0 519M 0% /dev/shm
/dev/sda1 ext4 204M 27M 167M 14% /boot
/dev/mapper/myvg-mydata
ext4 5.3G 143M 4.9G 3% /mysql #大小终于变化了,增加了1G 成功!!!
[root@localhost ~]# lvscan
ACTIVE
'/dev/myvg/mydata' [5.00 GiB] inherit
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
mydata myvg -wi-ao---- 5.00g
2、扩大卷组(vg)
[root@localhost ~]# vgdisplay #查看卷组的相关信息
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 3
Act PV 3
VG Size 5.60 GiB #卷组的大小为5.6G
PE Size 4.00 MiB
Total PE 1434
Alloc PE / Size 1280 / 5.00 GiB
Free PE / Size 154 / 616.00 MiB
VG UUID Aeyfd0-9GUH-GHNg-G5qR-wN0T-r14b-ojIWJ2
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg 3 1 0 wz--n- 5.60g 616.00m
root@localhost ~]# vgextend myvg /dev/sdb4 #将分区4加入到myvg卷组中
Volume group
"myvg"
successfully extended
[root@localhost ~]# vgdisplay #查看卷组相关信息
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 4
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 4
Act PV 4
VG Size 7.47 GiB #卷组大小为7.47G 增加了2G
PE Size 4.00 MiB
Total PE 1912
Alloc PE / Size 1280 / 5.00 GiB
Free PE / Size 632 / 2.47 GiB
VG UUID Aeyfd0-9GUH-GHNg-G5qR-wN0T-r14b-ojIWJ2
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg 4 1 0 wz--n- 7.47g 2.47g
八、减小卷组(vg),减小逻辑卷(lv),减小物理卷(pv)
1、减小卷组(vg)
[root@localhost ~]# pvscan #查看一个myvg卷组中包含哪些分区或者硬盘
PV /dev/sdb1 VG myvg lvm2 [1.87 GiB / 0 free]
PV /dev/sdb2 VG myvg lvm2 [1.87 GiB / 0 free]
PV /dev/sdb3 VG myvg lvm2 [1.87 GiB / 616.00 MiB free]
PV /dev/sdb4 VG myvg lvm2 [1.87 GiB / 1.87 GiB free]
Total: 4 [7.47 GiB] / in use: 4 [7.47 GiB] / in no VG: 0 [0 ]
[root@localhost ~]# pvmove dev/sdb4 #在使用缩减vgreduce之前,首先移动PE,然后再缩减
No data to move for myvg
[root@localhost ~]# vgreduce myvg /dev/sdb4 #将物理卷4移除myvg卷组
Removed
"/dev/sdb4"
from volume group
"myvg"
[root@localhost ~]# pvscan #再次查看/dev/sdb4已经被移除
PV /dev/sdb1 VG myvg lvm2 [1.87 GiB / 0 free]
PV /dev/sdb2 VG myvg lvm2 [1.87 GiB / 0 free]
PV /dev/sdb3 VG myvg lvm2 [1.87 GiB / 616.00 MiB free]
PV /dev/sdb4 lvm2 [1.87 GiB] #已经被移除
Total: 4 [7.47 GiB] / in use: 3 [5.60 GiB] / in no VG: 1 [1.87 GiB]
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 3
Act PV 3
VG Size 5.60 GiB #myvg的大小由7.47G到现在的5.60G
PE Size 4.00 MiB
Total PE 1434
Alloc PE / Size 1280 / 5.00 GiB
Free PE / Size 154 / 616.00 MiB
VG UUID Aeyfd0-9GUH-GHNg-G5qR-wN0T-r14b-ojIWJ2
2、减小逻辑卷(lv)
#首先查看逻辑卷的大小
[root@localhost ~]# df -TH
文件系统 类型 容量 已用 可用 已用%% 挂载点
/dev/sda3 ext4 40G 1.4G 37G 4% /
tmpfs tmpfs 519M 0 519M 0% /dev/shm
/dev/sda1 ext4 204M 27M 167M 14% /boot
/dev/mapper/myvg-mydata
ext4 4.3G 143M 3.9G 4% /mysql #大小为4.3G
[root@localhost ~]# umount /mysql/ #注释:减小逻辑卷时必须卸载
[root@localhost ~]# resize2fs -f /dev/myvg/mydata 3G #改变逻辑卷的大小3G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/myvg/mydata to 786432 (4k) blocks.
The filesystem on /dev/myvg/mydata is now 786432 blocks long.
[root@localhost ~]# lvreduce -L 3G /dev/myvg/mydata #将逻辑卷mydata大小调为3G
WARNING: Reducing active logical volume to 3.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do
you really want to reduce mydata? [y/n]: y
Reducing logical volume mydata to 3.00 GiB
Logical volume mydata successfully resized
[root@localhost ~]# mount -a #再次挂载
[root@localhost ~]# df -TH
文件系统 类型 容量 已用 可用 已用%% 挂载点
/dev/sda3 ext4 40G 1.4G 37G 4% /
tmpfs tmpfs 519M 0 519M 0% /dev/shm
/dev/sda1 ext4 204M 27M 167M 14% /boot
/dev/mapper/myvg-mydata
ext4 3.2G 141M 2.9G 5% /mysql #大小为3.2G
3、减小物理卷(pv)
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 myvg lvm2 a-- 1.87g 1.87g
/dev/sdb2 myvg lvm2 a-- 1.87g 1.87g
/dev/sdb3 lvm2 a-- 1.87g 1.87g
[root@localhost ~]# pvremove /dev/sdb3
Labels on physical volume
"/dev/sdb3"
successfully wiped
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 myvg lvm2 a-- 1.87g 1.87g
/dev/sdb2 myvg lvm2 a-- 1.87g 1.87g
九、创建逻辑卷快照
后面练习题补充......
十、删除卷组(vg),删除物理卷(pv),删除逻辑卷(lv)
[root@localhost ~]# umount /dev/myvg/mydata #下载挂载目录
[root@localhost ~]# lvscan #查看逻辑卷
ACTIVE Original
'/dev/myvg/mydata' [3.00 GiB] inherit
ACTIVE Snapshot
'/dev/myvg/sanp' [1.00 GiB] inherit
[root@localhost ~]# lvremove /dev/myvg/mydata #移除逻辑卷|卸载所有目录
Do
you really want to remove active logical volume sanp? [y/n]: y
Logical volume
"sanp"
successfully removed
Do
you really want to remove active logical volume mydata? [y/n]: y
Logical volume
"mydata"
successfully removed
[root@localhost ~]# vgscan #查看卷组
Reading all physical volumes. This may take a while...
Found volume group
"myvg"
using metadata type lvm2
[root@localhost ~]# vgremove myvg #移除卷组
Volume group
"myvg"
successfully removed
[root@localhost ~]# pvscan #查看物理卷
PV /dev/sdb1 lvm2 [1.87 GiB]
PV /dev/sdb2 lvm2 [1.87 GiB]
PV /dev/sdb3 lvm2 [1.87 GiB]
PV /dev/sdb4 lvm2 [1.87 GiB]
Total: 4 [7.48 GiB] / in use: 0 [0 ] / in no VG: 4 [7.48 GiB]
[root@localhost ~]# pvremove /dev/sdb{1,2,3,4} #移除物理卷
Labels on physical volume
"/dev/sdb1"
successfully wiped
Labels on physical volume
"/dev/sdb2"
successfully wiped
Labels on physical volume
"/dev/sdb3"
successfully wiped
Labels on physical volume
"/dev/sdb4"
successfully wiped
十一、在lvm逻辑卷中常用的命令
pvcreate --建物理分区建成pv
pvscan --显示具有pv的磁盘
pvdisplay --列出系统上的pv
pvremove --删除pv属性
vgcreate --创建vg命令
vgscan --查找系统中是否有vg存在
vgdisplay --目前系统vg的状态
vgextend --在vg中增加pv
vgremove --删除一个vg
vgchange --设置vg是否启动
vgreduce --在vg中删除pv
lvcreate --创建lv
lvscan --查询系统上的lv
lvdisplay --显示系统上的lv状态
lvextend --在lv中增加容量
lvreduce --在lv中减少容量
lvremove --删除lv
lvresize --对lv的容量进行调整
|
练习
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
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
|
一、扩展逻辑卷
注意:没有风险。可以在线扩展无需卸载
1、先扩展物理边界 lvextend -L [+]# /PATH/TO/LV
2、在扩展逻辑边界 resize2fs -p /PATH/TO/LV
二、缩减逻辑卷
注意:不能在线缩减,得先卸载;
确保缩减后的空间大小依然能存储原有的所有数据;
在缩减之前应该先强行检查文件系统,以确保文件系统处于一致性状态。
1、先缩减逻辑边界 resize2fs /PATH/TO/LV 3G (缩减到3G)
2、在缩减物理边界 lvreduce -L [-]# /PATH/TO/LV
3、重新挂在
三、快照卷
通过它能够访问某一时刻的数据
1、生命周期为整个数据时长,在这段时长内,数据的增长量不鞥产出快照卷大小;放弃所有操作,自我损毁; 建议跟原有数据大小一样
2、快照卷只读的
3、跟原卷在同一卷组内
lvcreate
-s(指定为快照卷)
-p r|w (指定权限)
lvcreate -L # -n SLV_NAME -p r /PATH/TO/LV
lvextend:扩展物理边界
resize2fs:扩展逻辑边界
resize2fs /PATH/TO/LV 5G(扩展到多大)
resize2fs -p /PATH/TO/LV (-p 能有多大扩展到多大)
[root@localhost ~]# pvcreate /dev/sdb{1,2,3}
Physical volume
"/dev/sdb1"
successfully created
Physical volume
"/dev/sdb2"
successfully created
Physical volume
"/dev/sdb3"
successfully created
[root@localhost ~]# vgcreate myvg /dev/sdb{1,2,3}
Volume group
"myvg"
successfully created
[root@localhost ~]# lvcreate -n mydata -L 2G myvg
Logical volume
"mydata"
created
[root@localhost ~]# mkfs.ext
mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev
[root@localhost ~]# mkfs.ext4 /dev/myvg/mydata
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override
[root@localhost ~]# mount /dev/myvg/mydata /mysql
[root@localhost ~]# cd /mysql/
[root@localhost mysql]# ls
lost+found
[root@localhost mysql]# cp /etc/inittab .
[root@localhost mysql]# ls
inittab lost+found
[root@localhost mysql]# df -lh #现在是2G,想把它扩展到5G
文件系统 容量 已用 可用 已用%% 挂载点
/dev/sda3 38G 1.3G 35G 4% /
tmpfs 495M 0 495M 0% /dev/shm
/dev/sda1 194M 26M 159M 14% /boot
/dev/mapper/myvg-mydata
2.0G 68M 1.9G 4% /mysql
练习:一、扩展逻辑卷
把现在2G的逻辑卷扩展到5G
思考:想把逻辑卷从2G扩展到5G,首先你的卷组myvg的大小要大于5G,否则扩展没有意义;在线扩展不需要卸载,风险很小
1、查看卷组的大小为5.6G 可以
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg 3 1 0 wz--n- 5.60g 3.60g
2、查看逻辑卷磁盘大小,仍然是2G 大小没有变化
[root@localhost mysql]# df -lh
文件系统 容量 已用 可用 已用%% 挂载点
/dev/sda3 38G 1.3G 35G 4% /
tmpfs 495M 0 495M 0% /dev/shm
/dev/sda1 194M 26M 159M 14% /boot
/dev/mapper/myvg-mydata
2.0G 68M 1.9G 4% /mysql
[root@localhost mysql]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
mydata myvg -wi-ao---- 5.00g
由以上可以得到答案,我们只扩展了物理边界没有扩展逻辑编辑,接下来就是扩展逻辑边界
3、扩展逻辑边界
[root@localhost mysql]# df -lh
文件系统 容量 已用 可用 已用%% 挂载点
/dev/sda3 38G 1.3G 35G 4% /
tmpfs 495M 0 495M 0% /dev/shm
/dev/sda1 194M 26M 159M 14% /boot
/dev/mapper/myvg-mydata
2.0G 68M 1.9G 4% /mysql
[root@localhost mysql]# resize2fs -p /dev/myvg/mydata #参数-p 是指有多大边界扩展多大,不需要手动指定
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/myvg/mydata is mounted on /mysql; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/myvg/mydata to 1310720 (4k) blocks.
The filesystem on /dev/myvg/mydata is now 1310720 blocks long.
[root@localhost mysql]# df -lh #扩展到5G没有问题
文件系统 容量 已用 可用 已用%% 挂载点
/dev/sda3 38G 1.3G 35G 4% /
tmpfs 495M 0 495M 0% /dev/shm
/dev/sda1 194M 26M 159M 14% /boot
/dev/mapper/myvg-mydata
5.0G 68M 4.7G 2% /mysql
练习:二、缩减逻辑卷
想把以上5G的逻辑卷缩减到3G
1、先检查逻辑卷使用的空间 68M
[root@localhost ~]# df -lh
文件系统 容量 已用 可用 已用%% 挂载点
/dev/sda3 38G 1.3G 35G 4% /
tmpfs 495M 0 495M 0% /dev/shm
/dev/sda1 194M 26M 159M 14% /boot
/dev/mapper/myvg-mydata
5.0G 68M 4.7G 2% /mysql
2、卸载并强行文件系统检测
[root@localhost ~]# umount /mysql/
[root@localhost ~]# mount
/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
[root@localhost ~]# e2fsck -f /dev/myvg/mydata
e2fsck 1.41.12 (17-May-2010)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/myvg/mydata: 12/327680 files (0.0% non-contiguous), 37983/1310720 blocks
3、缩减逻辑边界和物理边界
[root@localhost ~]# resize2fs /dev/myvg/mydata 3G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/myvg/mydata to 786432 (4k) blocks.
The filesystem on /dev/myvg/mydata is now 786432 blocks long.
[root@localhost ~]# lvreduce -L 3G /dev/myvg/mydata
WARNING: Reducing active logical volume to 3.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do
you really want to reduce mydata? [y/n]: y 提示:有可能损坏数据 责任自负
Reducing logical volume mydata to 3.00 GiB
Logical volume mydata successfully resized
[root@localhost ~]# mount -a
[root@localhost ~]# mount
/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/mapper/myvg-mydata on /mysql type ext4 (rw)
[root@localhost ~]# df -lh
文件系统 容量 已用 可用 已用%% 挂载点
/dev/sda3 38G 1.3G 35G 4% /
tmpfs 495M 0 495M 0% /dev/shm
/dev/sda1 194M 26M 159M 14% /boot
/dev/mapper/myvg-mydata
3.0G 68M 2.8G 3% /mysql
练习:三、快照卷
[root@localhost ~]# lvcreate -L 50M -n mydata-snap -s -p r /dev/myvg/mydata
Rounding up size to full physical extent 52.00 MiB
Logical volume
"mydata-snmp"
created
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
mydata myvg owi-aos--- 3.00g
mydata-snap myvg sri-a-s--- 52.00m mydata 0.02
[root@localhost ~]# mount /dev/myvg/mydata-snap /mnt/
mount: block device /dev/mapper/myvg-mydata--snap is write-protected, mounting read-only
[root@localhost ~]# ll /mnt/
总用量 20
-rw-r--r-- 1 root root 884 8月 24 12:07 inittab
drwx------ 2 root root 16384 8月 24 12:04 lost+found
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# cat inittab |wc -l
26
接下来测试
首先在原卷中清空所有数据
[root@localhost ~]# cd /mysql/
[root@localhost mysql]# cat inittab |wc -l
26
[root@localhost mysql]# sed -i
'N;$d;d' inittab
[root@localhost mysql]# cat inittab |wc -l
0
然后再快照卷中查看
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# cat inittab |wc -l
26
结论:快照创建以后,所有原卷中的改变,不会影响快照中所访问数据的本身
这个时候对快照卷中的数据进行备份
[root@localhost ~]# tar jcf /root/inittab.tar.bz2 /mnt/inittab
tar: 从成员名中删除开头的“/”
[root@localhost ~]# ll /root/
总用量 4
-rw-r--r-- 1 root root 619 8月 24 12:51 inittab.tar.bz2
快照卷数据备份之后就可以卸载快照卷,删除快照卷了
[root@localhost ~]# umount /mnt/
[root@localhost ~]# lvremove /dev/myvg/mydata-snap
Do
you really want to remove active logical volume mydata-snmp? [y/n]: y
Logical volume
"mydata-snap"
successfully removed
结论:快照卷的生命周期就是用来做备份的,当做完备份,那么快照卷就没有意义了。
假设 不小心把原卷中的数据删除了,这个时候就可以利用备份快照中的数据就行恢复
[root@localhost ~]# cd /mysql/
[root@localhost mysql]# ls
inittab lost+found
[root@localhost mysql]# rm -rf inittab
[root@localhost mysql]# ls
lost+found
[root@localhost mysql]# tar xf /root/inittab.tar.bz2 -C .
[root@localhost mysql]# ls
lost+found mnt
[root@localhost mysql]# ll mnt/
总用量 4
-rw-r--r-- 1 root root 884 8月 24 12:07 inittab
[root@localhost mysql]# cat mnt/inittab |wc -l
26
快速演示一遍
[root@localhost ~]# cd /mysql/
[root@localhost mysql]# cp /etc/inittab .
[root@localhost mysql]# cat inittab |wc -l
26
[root@localhost mysql]# cd
[root@localhost ~]# lvcreate -L 50M -s mydata-snap -p r /dev/myvg/mydata ^C
[root@localhost ~]# cd /mysql/
[root@localhost mysql]# cp /etc/issue .
[root@localhost mysql]# cat issue |wc -l
3
[root@localhost mysql]# cd
[root@localhost ~]# clear
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# lvcreate -s -L 50M -p r -n mydata-snap /dev/myvg/mydata
Rounding up size to full physical extent 52.00 MiB
Logical volume
"mydata-snap"
created
[root@localhost ~]# mount /dev/myvg/mydata-snap /mnt/
mount: block device /dev/mapper/myvg-mydata--snap is write-protected, mounting read-only
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
inittab issue lost+found
[root@localhost mnt]# tar jcf /root/mnt.tar.bz2 inittab issue
[root@localhost mnt]# cd
[root@localhost ~]# ls
mnt.tar.bz2
[root@localhost ~]# umount /mnt/
[root@localhost ~]# lvremove /dev/myvg/mydata-snap
Do
you really want to remove active logical volume mydata-snap? [y/n]: y
Logical volume
"mydata-snap"
successfully removed
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# cd /mysql/
[root@localhost mysql]# rm -rf inittab issue
[root@localhost mysql]# ls
lost+found
[root@localhost mysql]# tar xf /root/mnt.tar.bz2 -C .
[root@localhost mysql]# ls
inittab issue lost+found
|
这篇博文纯属意外,本来今天晚上是学习hadoop生态系统的!谁知道半夜11点半的时候,外面却下起了小雨,导致宿舍的网上不去了!上不去网学习hadoop就没有戏了,我这人也是闲不下来,于是就想温习下lvm ;因为lvm在工作中也常常用到!比如 我们公司几乎用的都是云主机,本地数据盘也就200G左右,经常需要挂在存储,但是云主机的存储每次挂载最大的也就2T 一台云主机最多挂在4次,也就是8T的存储,为了便于管理这8T的存储,经常性需要将这8T的存储做成lvm便于管理,使其动态的增缩!