LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现。LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。
与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储。它使系统管理员可以更方便的为应用与用户分配存储空间。在LVM管理下的存储卷可以按需要随时改变大小与移除(可能需对文件系统工具进行升级)。LVM也允许按用户组对存储卷进行管理,允许管理员用更直观的名称(如"sales'、 'development')代替物理磁盘名(如'sda'、'sdb')来标识存储卷。
1、创建LVM磁盘
[root@server02~]#fdisk/dev/sdb 欢迎使用fdisk(util-linux2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 命令(输入m获取帮助):n Partitiontype: pprimary(0primary,0extended,4free) eextended Select(defaultp):p 分区号(1-4,默认1): 起始扇区(2048-41943039,默认为2048): 将使用默认值2048 Last扇区,+扇区or+size{K,M,G}(2048-41943039,默认为41943039):+1G 分区1已设置为Linux类型,大小设为1GiB 命令(输入m获取帮助):p 磁盘/dev/sdb:21.5GB,21474836480字节,41943040个扇区 Units=扇区of1*512=512bytes 扇区大小(逻辑/物理):512字节/512字节 I/O大小(最小/最佳):512字节/512字节 磁盘标签类型:dos 磁盘标识符:0xa71b8f53 设备BootStartEndBlocksIdSystem /dev/sdb120482099199104857683Linux 命令(输入m获取帮助):t 已选择分区1 Hex代码(输入L列出所有代码):8e//LVM的分区类型为8e 已将分区“Linux”的类型更改为“LinuxLVM” 命令(输入m获取帮助):p 磁盘/dev/sdb:21.5GB,21474836480字节,41943040个扇区 Units=扇区of1*512=512bytes 扇区大小(逻辑/物理):512字节/512字节 I/O大小(最小/最佳):512字节/512字节 磁盘标签类型:dos 磁盘标识符:0xa71b8f53 设备BootStartEndBlocksIdSystem /dev/sdb12048209919910485768eLinuxLVM 命令(输入m获取帮助):n Partitiontype: pprimary(1primary,3free) eextended Select(defaultp):p 分区号(2-4,默认2): 起始扇区(2099200-41943039,默认为2099200): 将使用默认值2099200 Last扇区,G}(2099200-41943039,默认为41943039):+1G 分区2已设置为Linux类型,大小设为1GiB 命令(输入m获取帮助):n Partitiontype: pprimary(2primary,2free) eextended Select(defaultp):p 分区号(3,4,默认3): 起始扇区(4196352-41943039,默认为4196352): 将使用默认值4196352 Last扇区,G}(4196352-41943039,默认为41943039):+1G 分区3已设置为Linux类型,大小设为1GiB 命令(输入m获取帮助):p 磁盘/dev/sdb:21.5GB,21474836480字节,41943040个扇区 Units=扇区of1*512=512bytes 扇区大小(逻辑/物理):512字节/512字节 I/O大小(最小/最佳):512字节/512字节 磁盘标签类型:dos 磁盘标识符:0xa71b8f53 设备BootStartEndBlocksIdSystem /dev/sdb12048209919910485768eLinuxLVM /dev/sdb220992004196351104857683Linux /dev/sdb341963526293503104857683Linux 命令(输入m获取帮助):t 分区号(1-3,默认3):2 Hex代码(输入L列出所有代码):8e 已将分区“Linux”的类型更改为“LinuxLVM” 命令(输入m获取帮助):t 分区号(1-3,默认3):3 Hex代码(输入L列出所有代码):8e 已将分区“Linux”的类型更改为“LinuxLVM” 命令(输入m获取帮助):p 磁盘/dev/sdb:21.5GB,21474836480字节,41943040个扇区 Units=扇区of1*512=512bytes 扇区大小(逻辑/物理):512字节/512字节 I/O大小(最小/最佳):512字节/512字节 磁盘标签类型:dos 磁盘标识符:0xa71b8f53 设备BootStartEndBlocksIdSystem /dev/sdb12048209919910485768eLinuxLVM /dev/sdb22099200419635110485768eLinuxLVM /dev/sdb34196352629350310485768eLinuxLVM 命令(输入m获取帮助):w Thepartitiontablehasbeenaltered! Callingioctl()tore-readpartitiontable. 正在同步磁盘。 [root@server02~]#pvcreate/dev/sdb1//使用pvcreate转换 WARNING:xfssignaturedetectedon/dev/sdb1atoffset0.Wipeit?[y/n]:y Wipingxfssignatureon/dev/sdb1. Physicalvolume"/dev/sdb1"successfullycreated. [root@server02~]#pvcreate/dev/sdb2 WARNING:xfs_external_logsignaturedetectedon/dev/sdb2atoffset18432.Wipeit?[y/n]:y Wipingxfs_external_logsignatureon/dev/sdb2. Physicalvolume"/dev/sdb2"successfullycreated. [root@server02~]#pvcreate/dev/sdb3 WARNING:dossignaturedetectedon/dev/sdb3atoffset510.Wipeit?[y/n]:y Wipingdossignatureon/dev/sdb3. Physicalvolume"/dev/sdb3"successfullycreated. [root@server02~]#fdisk-l/dev/sdb 磁盘/dev/sdb:21.5GB,21474836480字节,41943040个扇区 Units=扇区of1*512=512bytes 扇区大小(逻辑/物理):512字节/512字节 I/O大小(最小/最佳):512字节/512字节 磁盘标签类型:dos 磁盘标识符:0xa71b8f53 设备BootStartEndBlocksIdSystem /dev/sdb12048209919910485768eLinuxLVM /dev/sdb22099200419635110485768eLinuxLVM /dev/sdb34196352629350310485768eLinuxLVM [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"isanewphysicalvolumeof"1.00GiB" ---NEWPhysicalvolume--- PVName/dev/sdb3 VGName PVSize1.00GiB AllocatableNO PESize0 TotalPE0 FreePE0 AllocatedPE0 PVUUIDN7T8n5-Gc1a-bdO6-yFJy-PVTF-3HJM-Cy3gFD "/dev/sdb2"isanewphysicalvolumeof"1.00GiB" ---NEWPhysicalvolume--- PVName/dev/sdb2 VGName PVSize1.00GiB AllocatableNO PESize0 TotalPE0 FreePE0 AllocatedPE0 PVUUID0Y7myL-dyWh-iKbN-G82H-U5je-lsGD-03i7UL "/dev/sdb1"isanewphysicalvolumeof"1.00GiB" ---NEWPhysicalvolume--- PVName/dev/sdb1 VGName PVSize1.00GiB AllocatableNO PESize0 TotalPE0 FreePE0 AllocatedPE0 PVUUIDuWSpFE-KDDS-99nq-5jlc-NBAv-1JBi-PZgxC0 [root@server02~]#pvs PVVGFmtAttrPSizePFree /dev/sdb1lvm2---1.00g1.00g /dev/sdb2lvm2---1.00g1.00g /dev/sdb3lvm2---1.00g1.00g [root@server02~]#vgcreatevg1/dev/sdb1/dev/sdb2//创建VG,同一VG下的一组PV构成一个VG Volumegroup"vg1"successfullycreated [root@server02~]#vgs VG#PV#LV#SNAttrVSizeVFree vg1200wz--n-1.99g1.99g [root@server02~]#lvcreate-L100M-nlv1vg1 Logicalvolume"lv1"created. [root@server02~]#mkfs.ext4/dev/vg1/lv1 mke2fs1.42.9(28-Dec-2013) 文件系统标签= OStype:Linux 块大小=1024(log=0) 分块大小=1024(log=0) Stride=0blocks,Stripewidth=0blocks 25688inodes,102400blocks 5120blocks(5.00%)reservedforthesuperuser 第一个数据块=1 Maximumfilesystemblocks=33685504 13blockgroups 8192blockspergroup,8192fragmentspergroup 1976inodespergroup Superblockbackupsstoredonblocks: 8193,24577,40961,57345,73729 Allocatinggrouptables:完成 正在写入inode表:完成 Creatingjournal(4096blocks):完成 Writingsuperblocksandfilesystemaccountinginformation:完成 [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/sda328G1.1G27G4%/ devtmpfs483M0483M0%/dev tmpfs493M0493M0%/dev/shm tmpfs493M6.8M486M2%/run tmpfs493M0493M0%/sys/fs/cgroup /dev/sda1197M109M88M56%/boot tmpfs99M099M0%/run/user/0 /dev/mapper/vg1-lv193M1.6M85M2%/mnt [root@server02~]#cat/mnt/1.txt 1234
2、磁盘扩容
[root@server02~]#umount/mnt/ [root@server02~]#lvresize-L300M/dev/vg1/lv1 Sizeoflogicalvolumevg1/lv1changedfrom100.00MiB(25extents)to300.00MiB(75extents). Logicalvolumevg1/lv1successfullyresized. [root@server02~]#e2fsck-f/dev/vg1/lv1 e2fsck1.42.9(28-Dec-2013) 第一步:检查inode,块,和大小 第二步:检查目录结构 第3步:检查目录连接性 Pass4:Checkingreferencecounts 第5步:检查簇概要信息 /dev/vg1/lv1:13/25688files(7.7%non-contiguous),8899/102400blocks [root@server02~]#mount/dev/vg1/lv1/mnt/ [root@server02~]#resize2fs/dev/vg1/lv1 resize2fs1.42.9(28-Dec-2013) Filesystemat/dev/vg1/lv1ismountedon/mnt;on-lineresizingrequired old_desc_blocks=1,new_desc_blocks=3 Thefilesystemon/dev/vg1/lv1isnow307200blockslong. [root@server02~]#df-h 文件系统容量已用可用已用%挂载点 /dev/sda328G1.1G27G4%/ devtmpfs483M0483M0%/dev tmpfs493M0493M0%/dev/shm tmpfs493M6.8M486M2%/run tmpfs493M0493M0%/sys/fs/cgroup /dev/sda1197M109M88M56%/boot tmpfs99M099M0%/run/user/0 /dev/mapper/vg1-lv1287M2.1M270M1%/mnt
如果是xfs格式时,不需要卸载,但需要执行xfs_growfs /dev/vg1/lv1命令。
3、磁盘缩减
[root@server02~]#umount/mnt/ [root@server02~]#e2fsck-f/dev/vg1/lv1 e2fsck1.42.9(28-Dec-2013) 第一步:检查inode,和大小 第二步:检查目录结构 第3步:检查目录连接性 Pass4:Checkingreferencecounts 第5步:检查簇概要信息 /dev/vg1/lv1:13/75088files(7.7%non-contiguous),15640/307200blocks [root@server02~]#resize2fs/dev/vg1/lv1100M resize2fs1.42.9(28-Dec-2013) Resizingthefilesystemon/dev/vg1/lv1to102400(1k)blocks. Thefilesystemon/dev/vg1/lv1isnow102400blockslong. [root@server02~]#lvresize-L100M/dev/vg1/lv1 WARNING:Reducingactivelogicalvolumeto100.00MiB. THISMAYDESTROYYOURDATA(filesystemetc.) Doyoureallywanttoreducevg1/lv1?[y/n]:y Sizeoflogicalvolumevg1/lv1changedfrom300.00MiB(75extents)to100.00MiB(25extents). Logicalvolumevg1/lv1successfullyresized. [root@server02~]#mount/dev/vg1/lv1/mnt/ [root@server02~]#df-h 文件系统容量已用可用已用%挂载点 /dev/sda328G1.1G27G4%/ devtmpfs483M0483M0%/dev tmpfs493M0493M0%/dev/shm tmpfs493M6.8M486M2%/run tmpfs493M0493M0%/sys/fs/cgroup /dev/sda1197M109M88M56%/boot tmpfs99M099M0%/run/user/0 /dev/mapper/vg1-lv193M1.6M86M2%/mnt
磁盘缩减是一个很危险的操作,在操作过程中,需要注意每一步的提示信息是否正常。以防缩减导致的数据缺损和丢失的问题。强烈建议做磁盘缩减前,做一次数据完整备份,并且每一步操作在实验虚拟机上模拟一遍。
注意:xfs格式不支持缩减。
4、扩展卷组
[root@server02~]#pvs PVVGFmtAttrPSizePFree /dev/sdb1vg1lvm2a--1020.00m920.00m /dev/sdb2vg1lvm2a--1020.00m1020.00m /dev/sdb3lvm2---1.00g1.00g [root@server02~]#vgextendvg1/dev/sdb3 Volumegroup"vg1"successfullyextended [root@server02~]#lvresize-L100M/dev/vg1/lv1 Newsize(25extents)matchesexistingsize(25extents). [root@server02~]#pvs PVVGFmtAttrPSizePFree /dev/sdb1vg1lvm2a--1020.00m920.00m /dev/sdb2vg1lvm2a--1020.00m1020.00m /dev/sdb3vg1lvm2a--1020.00m1020.00m