LVM( Logical Volume Manage,逻辑 逻辑卷管理)LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。
LVM的重要特性:
1、LVM使用的存储空间单位是PE,默认的PE是4M,一个VG最多有65534个PE,默认下一个VG最大256G。
2、VG的空间扩展、删除,都是通过添加空闲的PE、删除空闲的PE来完成
3、LVM有两个不同的写入数据模式:
A、线性模式:VG中有多个PV是,且同时都属于一个LV时,那么线性模式就是当每一个PV的容量用完之后,再使用其他的PV。默认就是此模式
B、交错模式:VG中有多个PV是,且同时都属于一个LV时,那么交错模式会同时把每个PV中写入相等容量的数据。类似于RAID0
4、支持快照
如图所示LVM模型:
四个硬盘或分区组一成个逻辑卷,在逻辑卷上可以再逻辑分区,当逻辑分区的空间无法再满足要求时,可以灵活的扩展使用空间
LVM的几个概念:
LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统,有以下几个概念:
1、物理存储介质(The physical media):这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。
2、物理卷PV(physical volume):物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
3、卷组(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
4、逻辑卷(logical volume):LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
5、PE(physical extent):每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
6、LE(logical extent):逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
配置LVM的流程:fdisk创建分区及修改ID为8e–>把分区转换为PV—>创建VG—>创建LV—>格式华LV—>mount文件系统
扩展LV的空间流程:为VG添加PV–》lvextend扩展空间–》resize2fs 增大文件系统的空间
缩小LV的空间流程:
PV的基本命令 pvs 显示pv分区的简要信息,包括硬盘分区名称、PV名称、空间问题及空闲量 pvcreate 把硬盘分区转换成PV pvcreate [选项] [硬盘分区] 选项: -f:强制创建物理卷,不需要用户确认; -u:指定设备的UUID; -y:所有的问题都回答“yes”; -Z:是否利用前4个扇区。 pvdisplay 显示PV的详细信息 pvscan 扫描系统中的pv pvremove 删除pv pvmove [选项] [pv_name....] 选项: -f 强制删除,不提示 -y 对提示的内容,自动输入yes pvchange 改变pv的物理属性 pvchange [选项] [pv_name] 选项: -u 为指定的PV_NAME随便生成UUID pvck 检查PV的元数据 pvresize 调整PV的容量大小 pvresize [选项] [pv_name] --setphysicalvolumesize <容量大小> 指定修改PV的空间大小 pvresize /dev/sda4 自动把/dev/sda4的空间大小调整为磁盘分区的最大值 pvresize --setphysicalvolumszise 50G /dev/sda4 把/dev/sda4的空间大小调整为50G pvmove 把源PV的上数据移动到目标pv上 pvmove [选项] [源PV] [目标PV1.......] pvmove /dev/sda4 /dev/sda5 把/dev/sda4的数据移动到/dev/sda5 |
|
VG的基本命令 vgs 显示vg分区的简要信息,包括硬盘分区名称、PV名称、空间问题及空闲量 vgdisplay 显示vg的详细信息 vgcreate 创建VG vgcreate [选项] [vg_name] [pv_name.....] -l:卷组上允许创建的最大逻辑卷数,即PV数量; -p:卷组中允许添加的最大物理卷数; -s:卷组上的物理卷的PE大小,即PV数量。 vgextend 添加PV到VG中 vgextend [选项] [vg_name] [pv_name] -d 使用调试模式 -t 测试使用 -f 强制扩展 -v 显示详细信息 vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] #移除VG中的一个PV ,前提是移动数据 vgremove VG_NAME #删除vg组,要先把mount取消掉 vgscan [PhysicalDevicePath] 扫描系统中的VG |
LV基本命令 lvs 查看 lvdisplay 查看详细信息 lvcreate 创建lv lvcreate [选项] [vc_name] -L 指定VC的大小,单位 K M G T P E -l 通过指定VC的PE数量,来确定VC的空间大小 -n 指定vc的名称 lvremove 删除lv,先要卸载mount lvremove [选项] [lv_name] 扩展逻辑卷: #注意:在 lvexten扩展完成后,直接操作mount,会发现扩展的空量没有直接应用到文件系统中,需要执行一次 resize2fs # lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME resize2fs /dev/VG_NAME/LV_NAME 缩减逻辑卷: umount /dev/VG_NAME/LV_NAME #缩减必须先umount e2fsck -f /dev/VG_NAME/LV_NAME #文件系统强制检测及修复 resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] #指定文件系统缩减到大多的空间 lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME #指定LV的缩减到多大的空间 mount #挂载 |
LVM的快照功能 snapshot
快照就是将当时系统的信息记录下来,就好像照相一样。将来若有任何数据的改动,则原始数据就会被移动到快照区。
做快照时,一定要确保数据没有在被访问
快照LV和被快照的LV要在同一个VG中。
lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name
说明:-L是快照区的容量大小 -s 是指定创建快照分区
创建PV
[root@localhost ~]# fdisk -l | grep "/dev/sd[cde]" Disk /dev/sdc: 5368 MB, 5368709120 bytes, 10485760 sectors /dev/sdc1 2048 10485759 5241856 8e Linux LVM Disk /dev/sdd: 5368 MB, 5368709120 bytes, 10485760 sectors /dev/sdd1 2048 10485759 5241856 8e Linux LVM Disk /dev/sde: 2147 MB, 2147483648 bytes, 4194304 sectors /dev/sde1 2048 4194303 2096128 8e Linux LVM [root@localhost ~]# pvcreate /dev/sd{d1,c1,e1} #创建pv [root@localhost ~]# pvscan PV /dev/sda2 VG centos lvm2 [9.51 GiB / 40.00 MiB free] PV /dev/sdd1 lvm2 [5.00 GiB] PV /dev/sdc1 lvm2 [5.00 GiB] PV /dev/sde1 lvm2 [2.00 GiB]
创建VG及LV
[root@localhost ~]# vgcreate vgtest /dev/sd{c1,d1} #创建VG vgtest Volume group "vgtest" successfully created [root@localhost ~]# pvscan PV /dev/sda2 VG centos lvm2 [9.51 GiB / 40.00 MiB free] PV /dev/sdc1 VG vgtest lvm2 [5.00 GiB / 5.00 GiB free] PV /dev/sdd1 VG vgtest lvm2 [5.00 GiB / 5.00 GiB free] PV /dev/sde1 lvm2 [2.00 GiB] [root@localhost ~]# vgdisplay vgtest --- Volume group --- VG Name vgtest System ID Format lvm2 Metadata Areas 2 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 2 Act PV 2 VG Size 9.99 GiB PE Size 4.00 MiB #PE的默认值 Total PE 2558 #10G的空间有2558个PE Alloc PE / Size 0 / 0 #还没有使用 Free PE / Size 2558 / 9.99 GiB VG UUID l26W00-L4Q6-g4yV-NcKc-wzBa-90ak-UoXdiI [root@localhost ~]# lvcreate -l 1000 -n lvtest vgtest #创建1000个PE的(即4000MB)lvtest 逻辑分区 WARNING: ext3 signature detected on /dev/vgtest/lvtest at offset 1080. Wipe it? [y/n]: y Wiping ext3 signature on /dev/vgtest/lvtest. Logical volume "lvtest" created. [root@localhost ~]# lvdisplay --- Logical volume --- LV Path /dev/vgtest/lvtest LV Name lvtest VG Name vgtest #VG的名称 LV UUID QRJ9jg-vxf6-cOHs-5zuJ-dBze-UryA-3sGork LV Write Access read/write LV Creation host, time localhost.localdomain, 2016-05-19 22:46:43 +0800 LV Status available # open 0 LV Size 3.91 GiB Current LE 1000 #1000个PE Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2 [root@localhost ~]# mkfs.ext3 /dev/vgtest/lvtest #格式化 [root@localhost ~]# mount /dev/vgtest/lvtest /lvtest #挂载 [root@localhost ~]# ls /lvtest/ lost+found #完成LV的创建及挂载 [root@localhost ~]#
扩展LV的空间
[root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- 8.47g swap centos -wi-ao---- 1.00g lvtest vgtest -wi-ao---- 3.91g [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- 9.51g 40.00m vgtest 3 1 0 wz--n- 11.99g 8.08g [root@localhost ~]# lvextend -L +1G /dev/vgtest/lvtest #为lvtest的空间扩大1G Size of logical volume vgtest/lvtest changed from 3.91 GiB (1000 extents) to 4.91 GiB (1256 extents). Logical volume lvtest successfully resized. [root@localhost ~]# lvdisplay --- Logical volume --- LV Path /dev/vgtest/lvtest LV Name lvtest VG Name vgtest LV UUID QRJ9jg-vxf6-cOHs-5zuJ-dBze-UryA-3sGork LV Write Access read/write LV Creation host, time localhost.localdomain, 2016-05-19 22:46:43 +0800 LV Status available open 1 LV Size 4.91 GiB #扩展后的空间 Current LE 1256 #扩展后的LE,LE的值与PE相同 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2 [root@localhost ~]# df -h | grep "lvtest" /dev/mapper/vgtest-lvtest 3.8G 14M 3.6G 1% /lvtest #但能使用的空间还没有扩展 [root@localhost ~]# resize2fs /dev/vgtest/lvtest #resize2fs命令被用来增大或者收缩未加载的“ext2/ext3”文件系统的大小 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/vgtest/lvtest is mounted on /lvtest; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/vgtest/lvtest is now 1286144 blocks long. [root@localhost ~]# df -h | grep "lvtest" /dev/mapper/vgtest-lvtest 4.8G 14M 4.6G 1% /lvtest #已能使用扩展后的空间
缩小LV的空间
[root@localhost /]# lvdisplay /dev/vgtest/lvtest --- Logical volume --- LV Path /dev/vgtest/lvtest LV Name lvtest VG Name vgtest LV UUID ze2YVv-0eXR-RBD2-byEK-eqtt-zuaD-m4LqJM LV Write Access read/write LV Creation host, time localhost.localdomain, 2016-05-19 23:35:14 +0800 LV Status available # open 1 LV Size 5.00 GiB #缩小前的空间 Current LE 1280 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2 [root@localhost /]# umount /lvtest/ #必须先卸载,否则会出问题。但扩大空间时不用先卸载 [root@localhost /]# resize2fs /dev/vgtest/lvtest 2G #把文件系统大小压缩成2G resize2fs 1.42.9 (28-Dec-2013) Please run 'e2fsck -f /dev/vgtest/lvtest' first. #提示先进行文件检测,如果没有事先umount,检测会出问题,提示超级块有坏块 [root@localhost /]# e2fsck -f /dev/vgtest/lvtest #检测 e2fsck 1.42.9 (28-Dec-2013) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/vgtest/lvtest: 11/327680 files (0.0% non-contiguous), 55935/1310720 blocks [root@localhost /]# resize2fs /dev/vgtest/lvtest 2G #把文件系统大小压缩成2G resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/vgtest/lvtest to 524288 (4k) blocks. The filesystem on /dev/vgtest/lvtest is now 524288 blocks long. [root@localhost /]# lvreduce -L 2G /dev/vgtest/lvtest #把LV的空间缩小成2G WARNING: Reducing active logical volume to 2.00 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce lvtest? [y/n]: Y Size of logical volume vgtest/lvtest changed from 5.00 GiB (1280 extents) to 2.00 GiB (512 extents). Logical volume lvtest successfully resized. [root@localhost /]# mount /dev/vgtest/lvtest /lvtest/ [root@localhost /]# df -h | grep "lvtest" /dev/mapper/vgtest-lvtest 1.9G 7.7M 1.8G 1% /lvtest
原创文章,作者:Net20-deamon,如若转载,请注明出处:http://www.178linux.com/16400