| 
       
	首先解释一下几个关键词 
	pv: physical volume 物理卷,就是用物理磁盘组成的卷,要在物理磁盘上创建。 
	vg:volume group卷组,就是物理卷组成的卷组合,要在物理卷基础上创建。 
	lv:logical volume逻辑卷,可以理解为逻辑可动态分配的磁盘空间,要在卷组上创建。 
	所以lvm的创建顺序就是,物理磁盘分区(也可以不分区),在物理分区上创建pv,在pv上创建vg,在vg上创建lv,然后格式化lv挂载使用 
	ok,下面具体来操作一下逻辑卷的创建以及空间扩容和删除 
	我们使用的虚拟机sdb磁盘来分几个区做一下测试(一般可使用多个磁盘直接加入到卷组,这里我们使用物理磁盘的多个分区,操作方法相同) 
	
		
			
				
					
						| 
							01 | 
						
							[root@cnhejia ~]# fdisk -l | 
					 
				
			 
		 
		
		
			
				
					
						| 
							03 | 
						
							Disk /dev/sdb: 21.5 GB, 21474836480 bytes | 
					 
				
			 
		 
		
			
				
					
						| 
							04 | 
						
							255 heads, 63 sectors/track, 2610 cylinders | 
					 
				
			 
		 
		
			
				
					
						| 
							05 | 
						
							Units = cylinders of 16065 * 512 = 8225280 bytes | 
					 
				
			 
		 
		
			
				
					
						| 
							06 | 
						
							Sector size (logical/physical): 512 bytes / 512 bytes | 
					 
				
			 
		 
		
			
				
					
						| 
							07 | 
						
							I/O size (minimum/optimal): 512 bytes / 512 bytes | 
					 
				
			 
		 
		
			
				
					
						| 
							08 | 
						
							Disk identifier: 0x32d0a442 | 
					 
				
			 
		 
		
		
			
				
					
						| 
							10 | 
						
							Device Boot Start End Blocks Id System | 
					 
				
			 
		 
	 
 
	先将sdb分3个100M的分区出来 
	
		
			
				
					
						| 
							01 | 
						
							[root@cnhejia ~]# fdisk /dev/sdb <<EOF | 
					 
				
			 
		 
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
			
				
					
						| 
							21 | 
						
							[root@cnhejia ~]# fdisk -l | 
					 
				
			 
		 
		
		
			
				
					
						| 
							23 | 
						
							Disk /dev/sdb: 21.5 GB, 21474836480 bytes | 
					 
				
			 
		 
		
			
				
					
						| 
							24 | 
						
							255 heads, 63 sectors/track, 2610 cylinders | 
					 
				
			 
		 
		
			
				
					
						| 
							25 | 
						
							Units = cylinders of 16065 * 512 = 8225280 bytes | 
					 
				
			 
		 
		
			
				
					
						| 
							26 | 
						
							Sector size (logical/physical): 512 bytes / 512 bytes | 
					 
				
			 
		 
		
			
				
					
						| 
							27 | 
						
							I/O size (minimum/optimal): 512 bytes / 512 bytes | 
					 
				
			 
		 
		
			
				
					
						| 
							28 | 
						
							Disk identifier: 0x32d0a442 | 
					 
				
			 
		 
		
		
			
				
					
						| 
							30 | 
						
							Device Boot Start End Blocks Id System | 
					 
				
			 
		 
		
			
				
					
						| 
							31 | 
						
							/dev/sdb1 1 14 112423+ 83 Linu x | 
					 
				
			 
		 
		
			
				
					
						| 
							32 | 
						
							/dev/sdb2 15 28 112455 83 Linu x | 
					 
				
			 
		 
		
			
				
					
						| 
							33 | 
						
							/dev/sdb3 29 42 112455 83 Linu x | 
					 
				
			 
		 
	 
 
	将sdb[1-3]转换为物理卷 
	
		
			
				
					
						| 
							1 | 
						
							[root@cnhejia ~]# pvcreate /dev/sdb[1-3] | 
					 
				
			 
		 
		
			
				
					
						| 
							2 | 
						
							Physical volume "/dev/sdb1" successfully created | 
					 
				
			 
		 
		
			
				
					
						| 
							3 | 
						
							Physical volume "/dev/sdb2" successfully created | 
					 
				
			 
		 
		
			
				
					
						| 
							4 | 
						
							Physical volume "/dev/sdb3" successfully created | 
					 
				
			 
		 
	 
 
	使用pvs查看目前的物理卷情况,都没有加入VG 
	
		
		
			
				
					
						| 
							2 | 
						
							PV VG Fmt Attr PSize PFree | 
					 
				
			 
		 
		
			
				
					
						| 
							3 | 
						
							/dev/sdb1 lvm2 a-- 109.79m 109.79m | 
					 
				
			 
		 
		
			
				
					
						| 
							4 | 
						
							/dev/sdb2 lvm2 a-- 109.82m 109.82m | 
					 
				
			 
		 
		
			
				
					
						| 
							5 | 
						
							/dev/sdb3 lvm2 a-- 109.82m 109.82m | 
					 
				
			 
		 
	 
 
	现在我们先将sdb1和sdb2加入一个卷组vgtest 
	
		
			
				
					
						| 
							01 | 
						
							[root@cnhejia ~]# vgcreate vgtest /dev/sdb[1-2] | 
					 
				
			 
		 
		
			
				
					
						| 
							02 | 
						
							Volume group "vgtest" successfully created | 
					 
				
			 
		 
		
		
			
				
					
						| 
							04 | 
						
							VG #PV #LV #SN Attr VSize VFree | 
					 
				
			 
		 
		
			
				
					
						| 
							05 | 
						
							VolGroup 1 2 0 wz--n- 19.51g 0 | 
					 
				
			 
		 
		
			
				
					
						| 
							06 | 
						
							vgtest 2 0 0 wz--n- 216.00m 216.00m | 
					 
				
			 
		 
		
		
			
				
					
						| 
							08 | 
						
							PV VG Fmt Attr PSize PFree | 
					 
				
			 
		 
		
			
				
					
						| 
							09 | 
						
							/dev/sda2 VolGroup lvm2 a-- 19.51g 0 | 
					 
				
			 
		 
		
			
				
					
						| 
							10 | 
						
							/dev/sdb1 vgtest lvm2 a-- 108.00m 108.00m | 
					 
				
			 
		 
		
			
				
					
						| 
							11 | 
						
							/dev/sdb2 vgtest lvm2 a-- 108.00m 108.00m | 
					 
				
			 
		 
		
			
				
					
						| 
							12 | 
						
							/dev/sdb3 lvm2 a-- 109.82m 109.82m | 
					 
				
			 
		 
		
	 
 
	卷组vgtest创建成功,并且将sdb1和sdb2加入了这个卷组,通过vgs可以看到卷组大小为216M 
	现在我们在卷组vgtest上创建一个名为lvtest的100M的逻辑卷,这样才能真正使用这个磁盘 
	
		
			
				
					
						| 
							1 | 
						
							[root@cnhejia ~]# lvcreate -L 100M -n lvtest vgtest | 
					 
				
			 
		 
		
			
				
					
						| 
							2 | 
						
							Logical volume "lvtest" created | 
					 
				
			 
		 
		
		
			
				
					
						| 
							4 | 
						
							LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert | 
					 
				
			 
		 
		
			
				
					
						| 
							5 | 
						
							lv_root VolGroup -wi-ao---- 17.57g | 
					 
				
			 
		 
		
			
				
					
						| 
							6 | 
						
							lv_swap VolGroup -wi-ao---- 1.94g | 
					 
				
			 
		 
		
			
				
					
						| 
							7 | 
						
							lvtest vgtest -wi-a----- 100.00m | 
					 
				
			 
		 
	 
 
	这时候就可以对lvtest进行格式化使用了 
	
		
			
				
					
						| 
							01 | 
						
							[root@cnhejia ~]# mkfs.ext4 /dev/vgtest/lvtest | 
					 
				
			 
		 
		
		
			
				
					
						| 
							03 | 
						
							[root@cnhejia ~]# mkfs.ext4 /dev/mapper/vgtest-lvtest | 
					 
				
			 
		 
		
			
				
					
						| 
							04 | 
						
							mapper下会生成卷组映射,等同于软连接一样,操作完全同步。 | 
					 
				
			 
		 
		
			
				
					
						| 
							05 | 
						
							[root@cnhejia ~]# mkfs.ext4 /dev/mapper/vgtest-lvtest ^C | 
					 
				
			 
		 
		
			
				
					
						| 
							06 | 
						
							[root@cnhejia ~]# mount /dev/mapper/vgtest-lvtest /mnt/ | 
					 
				
			 
		 
		
			
				
					
						| 
							07 | 
						
							[root@cnhejia ~]# df -h | 
					 
				
			 
		 
		
			
				
					
						| 
							08 | 
						
							Filesystem Size Used Avail Use% Mounted on | 
					 
				
			 
		 
		
			
				
					
						| 
							09 | 
						
							/dev/mapper/VolGroup-lv_root 18G 3.6G 13G 22% / | 
					 
				
			 
		 
		
			
				
					
						| 
							10 | 
						
							tmpfs 495M 0 495M 0% /dev/shm | 
					 
				
			 
		 
		
			
				
					
						| 
							11 | 
						
							/dev/sda1 485M 70M 391M 16% /boot | 
					 
				
			 
		 
		
			
				
					
						| 
							12 | 
						
							/dev/mapper/vgtest-lvtest 97M 5.6M 87M 7% /mnt | 
					 
				
			 
		 
	 
 
	目前已经成功挂载完成在物理卷sdb1和sdb2上创建的卷组vgtest上创建的100M大小的逻辑卷lvtest 
	如果这100M的mnt目录不够用怎么办?逻辑卷的好处就是动态无损扩容,使用lvextend增加空间然后使用resize2fs重新同步磁盘大小。操作方法如下: 
	
		
			
				
					
						| 
							01 | 
						
							[root@cnhejia ~]# lvextend -L +50M /dev/mapper/vgtest-lvtest | 
					 
				
			 
		 
		
			
				
					
						| 
							02 | 
						
							Rounding size to boundary between physical extents: 52.00 MiB | 
					 
				
			 
		 
		
			
				
					
						| 
							03 | 
						
							Extending logical volume lvtest to 152.00 MiB | 
					 
				
			 
		 
		
			
				
					
						| 
							04 | 
						
							Logical volume lvtest successfully resized | 
					 
				
			 
		 
		
		
			
				
					
						| 
							06 | 
						
							LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert | 
					 
				
			 
		 
		
			
				
					
						| 
							07 | 
						
							lv_root VolGroup -wi-ao---- 17.57g | 
					 
				
			 
		 
		
			
				
					
						| 
							08 | 
						
							lv_swap VolGroup -wi-ao---- 1.94g | 
					 
				
			 
		 
		
			
				
					
						| 
							09 | 
						
							lvtest vgtest -wi-ao---- 152.00m | 
					 
				
			 
		 
		
			
				
					
						| 
							10 | 
						
							[root@cnhejia ~]# resize2fs /dev/mapper/vgtest-lvtest | 
					 
				
			 
		 
		
			
				
					
						| 
							11 | 
						
							resize2fs 1.41.12 (17-May-2010) | 
					 
				
			 
		 
		
			
				
					
						| 
							12 | 
						
							Filesystem at /dev/mapper/vgtest-lvtest is mounted on /mnt; on-line resizing required | 
					 
				
			 
		 
		
			
				
					
						| 
							13 | 
						
							old desc_blocks = 1, new_desc_blocks = 1 | 
					 
				
			 
		 
		
			
				
					
						| 
							14 | 
						
							Performing an on-line resize of /dev/mapper/vgtest-lvtest to 155648 (1k) blocks. | 
					 
				
			 
		 
		
			
				
					
						| 
							15 | 
						
							The filesystem on /dev/mapper/vgtest-lvtest is now 155648 blocks long. | 
					 
				
			 
		 
		
		
			
				
					
						| 
							17 | 
						
							[root@cnhejia ~]# df -h | 
					 
				
			 
		 
		
			
				
					
						| 
							18 | 
						
							Filesystem Size Used Avail Use% Mounted on | 
					 
				
			 
		 
		
			
				
					
						| 
							19 | 
						
							/dev/mapper/VolGroup-lv_root 18G 3.6G 13G 22% / | 
					 
				
			 
		 
		
			
				
					
						| 
							20 | 
						
							tmpfs 495M 0 495M 0% /dev/shm | 
					 
				
			 
		 
		
			
				
					
						| 
							21 | 
						
							/dev/sda1 485M 70M 391M 16% /boot | 
					 
				
			 
		 
		
			
				
					
						| 
							22 | 
						
							/dev/mapper/vgtest-lvtest 148M 5.6M 135M 4% /mnt | 
					 
				
			 
		 
		
	 
 
	mnt目录已经成功变成150M了 
	如果想减少这个逻辑卷的空间,操作也很简单: 
	
		
		
		
			
				
					
						| 
							3 | 
						
							[root@cnhejia ~]# e2fsck -f /dev/mapper/vgtest-lvtest | 
					 
				
			 
		 
		
		
			
				
					
						| 
							5 | 
						
							[root@cnhejia ~]# resize2fs /dev/mapper/vgtest-lvtest 100M | 
					 
				
			 
		 
	 
 
	这时候如果两个物理卷200M都用光了怎么办?没关系,lvm也可以将新的磁盘加进来。现在我们就把sdb3加进来,操作方法如下: 
	
		
			
				
					
						| 
							01 | 
						
							[root@cnhejia ~]# pvcreate /dev/sdb3 | 
					 
				
			 
		 
		
			
				
					
						| 
							02 | 
						
							Physical volume "/dev/sdb3" successfully created | 
					 
				
			 
		 
		
			
				
					
						| 
							03 | 
						
							[root@cnhejia ~]# vgextend vgtest /dev/sdb3 | 
					 
				
			 
		 
		
			
				
					
						| 
							04 | 
						
							Volume group "vgtest" successfully extended | 
					 
				
			 
		 
		
			
				
					
						| 
							05 | 
						
							[root@cnhejia ~]# vgdisplay | 
					 
				
			 
		 
		
		
		
		
		
		
			
				
					
						| 
							11 | 
						
							Metadata Sequence No 4 | 
					 
				
			 
		 
		
		
		
		
		
		
		
		
		
		
		
		
			
				
					
						| 
							23 | 
						
							Alloc PE / Size 38 / 152.00 MiB | 
					 
				
			 
		 
		
			
				
					
						| 
							24 | 
						
							Free PE / Size 43 / 172.00 MiB | 
					 
				
			 
		 
		
			
				
					
						| 
							25 | 
						
							VG UUID Xh0P8e-FMPu-oA4G-nNP4-9Vcn-tiZN-szYlSQ | 
					 
				
			 
		 
	 
 
	怎么样,vgtest这个卷组有300M空间了吧,需要的话可以都放到/mnt的挂载下。 
	—————————————————————————————— 
	上述是创建和使用管理的一些介绍,如果某个分区/硬盘可能健康状态不好,要卸载或者移出或者更换怎么办? 
	先使用pvmove将看着不爽的物理卷数据转移,数据转移完成后然后使用vgreduce将看着不爽的物理卷从卷组移出,然后使用pvremove删除物理卷,这个磁盘就变成普普通通的磁盘了,爱修爱丢随便你; 
	假设现在sdb2这个分区(或者磁盘)坏了,要移除,但是数据不能丢,操作步骤如下: 
	
		
			
				
					
						| 
							1 | 
						
							[root@cnhejia ~]# pvmove /dev/sdb2 | 
					 
				
			 
		 
		
			
				
					
						| 
							2 | 
						
							/dev/sdb2: Moved: 18.5% | 
					 
				
			 
		 
		
			
				
					
						| 
							3 | 
						
							/dev/sdb2: Moved: 100.0% | 
					 
				
			 
		 
		
		
			
				
					
						| 
							5 | 
						
							[root@cnhejia ~]# vgreduce vgtest /dev/sdb2 | 
					 
				
			 
		 
		
			
				
					
						| 
							6 | 
						
							Removed "/dev/sdb2" from volume group "vgtest" | 
					 
				
			 
		 
		
			
				
					
						| 
							7 | 
						
							[root@cnhejia ~]# pvremove /dev/sdb2 | 
					 
				
			 
		 
		
			
				
					
						| 
							8 | 
						
							Labels on physical volume "/dev/sdb2" successfully wiped | 
					 
				
			 
		 
	 
 
	至此sdb2这个分区和lvm已经没有关系了 
	一个VG卷组是可以创建多个LV逻辑卷的,如果有一个卷你不想要了直接执行lvremove即可 
	
		
			
				
					
						| 
							1 | 
						
							[root@cnhejia ~]#lvremove /dev/mapper/vgtest/lvtest | 
					 
				
			 
		 
	 
 
	如何删除整个系统的卷组,不再使用lvm? 
	需要数据先备份,不要数据直接操作,操作如下: 
	
		
			
				
					
						| 
							1 | 
						
							[root@cnhejia ~]# vgremove vgtest | 
					 
				
			 
		 
		
			
				
					
						| 
							2 | 
						
							Do you really want to remove volume group "vgtest" containing 1 logical volumes? [y/n]: y | 
					 
				
			 
		 
		
			
				
					
						| 
							3 | 
						
							Do you really want to remove active logical volume lvtest? [y/n]: y | 
					 
				
			 
		 
		
			
				
					
						| 
							4 | 
						
							Logical volume "lvtest" successfully removed | 
					 
				
			 
		 
		
			
				
					
						| 
							5 | 
						
							Volume group "vgtest" successfully removed | 
					 
				
			 
		 
	 
 
	这时候fdisk就不再能看到之前的卷组了,pvremove移出卷组即可,直接重分区格式化其实也可以。 
	注意: 
	如果磁盘添加到了vg中,并且vg是激活的,那么再去对磁盘分区表做修改的时候会失败,提示readonly。 
	先通过vgchange -a n vgname取消vg的激活状态再通过fdisk分区,分区后通过vgchange -ay vgname重新激活即可。 
	当然,激活状态去修改原有的磁盘分区表增加新的分区,重启后一般也能够正常生效。 
 
 
 
      (责任编辑:IT) |