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