Linux LVM
前言
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版。无论在Linux或者其他类似的系统,都是 非常的好用。传统分区使用固定大小分区,重新调整大小十分麻烦。但是,LVM可以创建和管理“逻辑”卷,而不是直接使用物理硬盘。可以让管理员弹性的管理 逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据。可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷。LVM并不需重启就可以让内核知道分区的存在。
LVM分层结构
图中顶部,首先是实际的物理磁盘,其划分的分区并且创建的物理卷(PV)。一个或多个物理卷可以用来创建卷组(VG)。然后基于卷组可以创建逻辑卷 (LV)。只要在卷组中有可用空间,就可以创建逻辑卷。文件系统就是在逻辑卷上创建的,然后在操作系统挂载和访问。
LVM测试说明
本文将介绍如何在linux中创建和管理LVM卷。我们将会分成两个部分。第一个部分,我们首先要在一个硬盘上创建多个逻辑卷,然后将它们挂载在/lvm_data目录。最后将对创建好的卷调整大小。而第二部分,我们将会从另外一块硬盘增加额外的卷到LVM中。
实验步骤
(一)准备磁盘分区
通过使用fdisk创建3个分区,分别为3G、5G、8G。分区的大小不要求一致。注意:创建LVM需要调整分区类型为'8e'。
[root@vm227 ~]# fdisk /dev/sdb Command (m for help): n ## 新建 Command action e extended p primary partition (1-4) p ## 主分区 Partition number (1-4): 1 ## 分区号 First cylinder (1-1044, default 1): ## 回车用默认的1 Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): +3G ## 大小 ####重复上面的操作来创建另外两个分区### Command (m for help): t ## 改变类型 Selected partition 1 Hex code (type L to list codes): 8e ## LVM 的分区代码 Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): p ## 显示类型 Device Boot Start End Blocks Id System /dev/sdb1 1 393 3156741 8e LinuxLVM /dev/sdb2 394 1047 5253255 8e Linux LVM /dev/sdb3 1048 2092 8393962+ 8e Linux LVM Command (m for help): w ## 保存退出 [root@vm227 ~]# partx -a /dev/sdb ###使分区生效
(二)创建物理卷(PV)
在刚创建好的分区上创建物理卷。创建PV命令:pvcreate
[root@vm227 ~]# pvcreate /dev/sdb{1,2,3} Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdb2" successfully created Physical volume "/dev/sdb3" successfully created ####使用命令pvs(简单)和pvdisplay(详细)查看物理卷的创建情况##### [root@vm227 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb1 lvm2 a-- 3.01g 3.01g /dev/sdb2 lvm2 a-- 5.01g 5.01 /dev/sdb3 lvm2 a-- 8.01g 8.01g [root@vm227 ~]# pvdisplay "/dev/sdb2" is a new physical volume of "5.01 GiB" --- NEW Physical volume --- PV Name /dev/sdb2 VG Name PV Size 5.01 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID N7EHil-Piij-pH85-hTTX-o5KD-iWYb-cocFA0 ####删除物理卷使用命令:pvremove #### [root@vm227 ~]# pvremove /dev/sdb1
(三)创建卷组(Vg)
在刚创建好的PV上创建名为'volume-group1'的卷组,创建卷组命令:vgcreate
vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
-s:用指定PE大小
[root@vm227 ~]# vgcreate volume-group1 /dev/sdb{1,2,3} ###使用下列命令可以来验证卷组。vgs(简单) 和vgdisplay(详细)#### [root@vm227 ~]# vgdisplay --- Volume group --- VG Name volume-group1 System ID Format lvm2 Metadata Areas 3 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 3 Act PV 3 VG Size 16.02 GiB PE Size 4.00 MiB Total PE 4101 Alloc PE / Size 0 / 0 Free PE / Size 4101 / 16.02 GiB VG UUID Z3mTLf-44wM-ZLBM-SySO-7IZE-3xzh-mSDswO ###以上信息可以看出创建名为volume-group1卷组的使用量/总量信息。只要卷组中还有可用(Free)空间,就可以随意创建逻辑卷(lv)。这里没有指定PE大小,默认为4M#### ####删除卷组使用vgremove#### [root@vm227 ~]# vgremove volume-group1
(四)创建逻辑卷(LV)
在创建好的VG上创建名为'mysqldata'、大小为2GB的逻辑卷。创建卷组命令:vgcreate
lvcreate -L #[mMgGtT] -n LV_NAME VolumeGroupName
-L: 指定创建lv容量大小
-n: 指定lv卷组名字
[root@vm227 ~]# lvcreate -L 2G -n mysqldata volume-group1 ####逻辑卷可使用lvs(简单)和lvdisplay(详细)命令查看#### [root@vm227 ~]# lvdisplay --- Logical volume --- LV Path /dev/volume-group1/mysqldata LV Name mysqldata VG Name volume-group1 LV UUID EoJlyJ-DA2l-Z827-YLIU-3Rts-BJTa-SUMrUY LV Write Access read/write LV Creation host, time vm227.happy.local, 2016-04-24 11:45:16 +0800 LV Status available # open 0 LV Size 2.00 GiB Current LE 512 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 ###创建成功,命名格式为:/dev/volume-group1/mysqldata####
逻辑卷命令格式:
在/dev目录下/dev/mapper/VG_NAME-LV_NAME和/dev/VG_NAME/LV_NAME分别为/dev/dm-# 入口
格式化挂
[root@vm227 ~]# mkfs.ext4 /dev/volume-group1/mysqldata [root@vm227 ~]# mkdir /lvm-data [root@vm227 ~]# mount /dev/volume-group1/mysqldata /lvm-mount/ [root@vm227 ~]# cd /lvm-data/ [root@vm227 lvm-data]# ll total 16 drwx------ 2 root root 16384 Apr 24 12:59 lost+found [root@vm227 lvm-data]# cp /etc/issue . [root@vm227 lvm-data]# ll total 20 -rw-r--r-- 1 root root 47 Apr 24 14:47 issue drwx------ 2 root root 16384 Apr 24 12:59 lost+found ####逻辑卷挂载完成,并且可以读写了#### ####要创建和挂载其它的逻辑卷,我们重复以上过程#### ####使用lvremove我们可以删除逻辑卷#### [root@vm227 ~]# umount /lvm-data/ [root@vm227 ~]# lvremove /dev/volume-group1/mysqldata
(五)扩展卷组(LV)
调整逻辑卷大小的功能是LVM最有用的功能。下面我们将会把先前创建的逻辑卷‘mysqldata’扩大至6G。扩展逻辑卷,首先扩展物理边界,然后扩展文件系统边界。
扩展物理使用命令:vgextend
lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
扩展文件系统使用命令:resize2fs
resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
[root@vm227 ~]# lvextend -L 6G /dev/volume-group1/mysqldata Extending logical volume mysqldata to 6.00 GiB Logical volume mysqldata successfully resized [root@vm227 ~]# lvdisplay --- Logical volume --- LV Path /dev/volume-group1/mysqldata LV Name mysqldata VG Name volume-group1 LV UUID EoJlyJ-DA2l-Z827-YLIU-3Rts-BJTa-SUMrUY LV Write Access read/write LV Creation host, time m227.happy.local, 2016-04-24 11:45:16 +0800 LV Status available # open 1 LV Size 6.00 GiB Current LE 1536 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 [root@vm227 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 19G 1.3G 17G 8% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 194M 29M 155M 16% /boot /dev/mapper/volume--group1-mysqldata 2.0G 68M 1.9G 4% /lvm-data #####可以看到已经成功提扩展成6G了,但是文件系统还是2G,下面扩展文件系统#### [root@vm227 ~]# resize2fs /dev/volume-group1/mysqldata 6G resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/volume-group1/mysqldata is mounted on /lvm-data; on-line resizing required old desc_blocks = 1, new_desc_blocks = 1 Performing an on-line resize of /dev/volume-group1/mysqldata to 1572864 (4k) blocks. The filesystem on /dev/volume-group1/mysqldata is now 1572864 blocks long. [root@vm227 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 19G 1.3G 17G 8% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 194M 29M 155M 16% /boot /dev/mapper/volume--group1-mysqldata 6.0G 68M 5.6G 2% /lvm-data ####已经成功扩成功#####
(六)缩减逻辑卷(LV)
缩减LVM卷大小,命令的顺序相当重要。注意:缩减危险系统很高,操作请谨慎。减少逻辑卷的空间大小一定要大于储存的数据大小,否则存储在后面的数据会丢失或者损坏。
减小逻辑卷大小使用命令:lvreduce
lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
[root@vm227 ~]# df -h ###查看空间使用情况 [root@vm227 ~]# umount /dev/volume-group1/mysqldata ###卸载挂载卷。 [root@vm227 ~]# e2fsck -f /dev/volume-group1/mysqldata ###检测磁盘错误。 [root@vm227 ~]# resize2fs /dev/volume-group1/mysqldata 4G #### 缩小文件系统。 [root@vm227 ~]# lvreduce -L 4G /dev/volume-group1/mysqldata ####减少逻辑卷大小 WARNING: Reducing active logical volume to 100.00 MiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce lv1? [y/n]: y Reducing logical volume lv1 to mysqldata to 4.00 GiB Logical volume mysqldata successfully resized #####最后,验证调整后的逻辑卷大小#### [root@vm227 ~]# lvdisplay --- Logical volume --- LV Path /dev/volume-group1/mysqldata LV Name mysqldata VG Name volume-group1 LV UUID EoJlyJ-DA2l-Z827-YLIU-3Rts-BJTa-SUMrUY LV Write Access read/write LV Creation host, time vm227.happy.local, 2016-04-24 11:45:16 +0800 LV Status available # open 0 LV Size 4.00 GiB Current LE 1024 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 [root@vm227 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 19G 1.3G 17G 8% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 194M 29M 155M 16% /boot /dev/mapper/volume--group1-mysqldata 4.0G 68M 5.6G 2% /lvm-data ####缩减成功####
(七)扩展卷组(VG)
下面介绍扩展卷组的方法,将一个物理卷添加到卷组。假设我们的卷组'volume-group1'已经满了需要扩大。但硬盘(sdb)已经没有空闲容量,增加了另外一个硬盘(sdc),如何把sdc的分区添加到卷组以扩展。
[root@vm227 ~]# vgdisplay volume-group --- Volume group --- VG Name volume-group1 System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 3 Act PV 3 VG Size 16.02 GiB PE Size 4.00 MiB Total PE 4101 Alloc PE / Size 1024 / 4.00 GiB Free PE / Size 3077 / 12.02 GiB VG UUID Z3mTLf-44wM-ZLBM-SySO-7IZE-3xzh-mSDswO ####硬盘/dev/sdc分区/dev/sdc1### ####如何给硬盘/dev/sdc分区,就不介绍了### [root@vm227 ~]# # pvcreate /dev/sdc1
物理卷已经准备好了,将它增加到已存在的卷组'volume-group1'上。
增加VG使用命令:vgextend
vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
[root@vm227 ~]# vgextend volume-group1 /dev/sdc1 ####使用vgdisplay来验证(可以看到卷组大小已经增大)#### [root@vm227 ~]# vgdisplay --- Volume group --- VG Name volume-group1 System ID Format lvm2 Metadata Areas 4 Metadata Sequence No 5 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 4 Act PV 4 VG Size 19.03 GiB PE Size 4.00 MiB Total PE 4871 Alloc PE / Size 1024 / 4.00 GiB Free PE / Size 3847 / 15.03 GiB VG UUID Z3mTLf-44wM-ZLBM-SySO-7IZE-3xzh-mSDswO 以上看到卷组已经成功扩展了。
(八)缩减卷组(VG)
缩减VG使用命令:vgreduce
vgreduce之前先做pvmove 移动PE
pvmove PhysicalDevicePath [PhysicalDevicePath…]
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
(九)快照组(snapshot)
快照卷是将元数据重新复制一份做为快照卷访问入口,当数据本身发生变化时,将数据复制一份到快照空间,然后修改原数据,快照卷主要用于数据备份,创建的快照卷必须要和逻辑卷在同一卷组上,并且快照卷大小要大于等于快照卷存在周期内数据增长量。
创建快照使用命令:lvcreate
lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name(快照卷名字) original_lv_name(原卷名字)
-L:指定快照卷大小
-p: 指权限,一般为只读
-s: 指创建为快照卷
-n:指定快照卷名字
如:# lvcreate -L 6G -p r -s -n snap_mysql /dev/volume-group1/mysqldata
删除快照使用命令:lvremove
lvremove snapshot_lv_name
总结
总结一下,LVM是一个非常给力的工具,用来创建和管理可变大小的分区。本文中,我们介绍了动态分区如何在LVM中创建和使用。我们也介绍了扩展/缩小逻辑卷和卷组的方法和如何增加一个新的磁盘到LVM。
水平有限, 还有许多不足之处,以后慢慢改进,如果有错误及时指出,谢谢!!!~
作者: chrony QQ: 840595308
感谢: MageEdu
原创文章,作者:chrony,如若转载,请注明出处:http://www.178linux.com/15307
评论列表(1条)
最后的联系方式亮了,不担心被爬虫抓?