[CentOS 7系列]LVM磁盘管理

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

相关文章

linux下开机自启: 在/etc/init.d目录下新建文件elasticsear...
1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以...
最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用...
ASP.NET Core应用程序发布linux在shell中运行是正常的。可一...
设置时区(CentOS 7) 先执行命令timedatectl status|grep &...
vim /etc/sysconfig/network-scripts/ifcfg-eth0 B...