您的位置:首页 > 其它

lvm基本应用,扩展及缩减实现

2015-08-29 03:24 211 查看
逻辑卷轴管理员 (Logical Volume Manager)(LVM)
LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境 进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 (volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系 统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘名“sda”和“sdb”。而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的 文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。
LVM 的重点在于可以弹性的调整 filesystem 的容量!而并非在于效能与数据保全上面。 需要文件的读写效能或者是数据的可靠性,LVM 可以整合多个实体 partition 在一起, 让这些 partitions 看起来就像是一个整体一样!而且,还可以在未来新增或移除其他的实体 partition 到这个 LVM 管理的磁盘当中。 如此一来,整个磁盘空间的使用上,实在是相当的具有弹性啊! 既然 LVM 这么好用,我现在就说说LVM的用法

什么是 LVM: PV, PE, VG, LV 的意义
LVM 的全名是 Logical Volume Manager,中文可以翻译作逻辑卷轴管理员。之所以称为卷轴可能是因为可以将 filesystem 像卷轴一样伸长或缩短之故吧!LVM 的做法是将几个实体的 partitions (或 disk) 透过软件组合成为一块看起来是独立的磁盘 (VG) ,然后将这块大磁盘再经过分割成为可使用分割槽 (LV), 最终就能够挂载使用了。但是为什么这样的系统可以进行 filesystem 的扩充或缩小呢?其实与一个称为 PE 的模块有关!
Physical Vloume PV:实体卷轴又叫物理卷轴。
我们实际的partition 需要调整系统识别码 (system ID) 成为 8e (LVM 的识别码),然后再经过 pvcreate 的命令将他转成 LVM 最底层的实体卷轴 (PV) ,之后才能够将这些 PV 加以利用! 调整 system ID 的方法就是fdisk命令。
Volume Group VG ,卷轴群组
所谓的 LVM 就是将许多 PV 整合成这个 VG 的东西就是啦!所以 VG 就是 LVM 组合起来的磁盘!这么想就好了。 那么这个磁盘最大可以到多少容量呢?这与底下要说明的 PE 有关喔~因为每个 VG 最多仅能包含 65534 个 PE 而已。 如果使用 LVM 默认的参数,则一个 VG 最大可达 256GB 的容量啊!
Physical Extend, PE, 实体延伸区块
LVM 默认使用 4MB 的 PE 区块,而 LVM 的 VG 最多仅能含有 65534 个 PE ,因此默认的 LVM VG 会有 4M*65534/(1024M/G)=256G。 这个 PE 很有趣喔!他是整个 LVM 最小的储存区块,也就是说,其实我们的文件数据都是写入PE的。 简单的说,这个 PE 就有点像文件系统里面的 block 大小啦。 这样说应该就比较好理解了吧?所以调整 PE 会影响到 VG 的最大容量喔!
Logical Volume, LV, 逻辑卷轴
最终的 VG 还会被切成 LV,这个 LV 就是最后可以被格式化使用的类似分割槽!那么 LV 是否可以随意指定大小呢? 当然不可以!既然 PE 是整个 LVM 的最小储存单位,那么 LV 的大小就与在此 LV 内的 PE 总数有关。 为了方便使用者利用 LVM 来管理其系统,因此 LV 的装置档名为/dev/vgname/lvname 的样式!此外,我们刚刚有谈到 LVM 可弹性的变更 filesystem 的容量,那是如何办到的?其实他就是通过PE来进行数据转换, 将原本 LV 内的 PE 移转到其他装置中以降低 LV 容量,或将其他装置的 PE 加到此 LV 中以加大容量!如果未来这个 VG 要扩充的话,加上其他的 PV 即可。 而最重要的 LV 如果要扩充的话,也是透过加入 VG 内没有使用到的 PE 来扩充的!

透过 PV, VG, LV 的规划之后,再利用 mkfs就可以将你的 LV 格式化成为可以利用的文件系统了!而且这个文件系统的容量在未来还能够进行扩充或减少, 而且里面的数据还不会被影响!
如此一来,我们就可以利用 LV 这个玩意儿来进行系统的挂载了。不过,你应该要觉得奇怪的是, 那么我的数据写入这个 LV 时,到底他是怎么写入硬盘当中的? 呵呵!好问题~其实,依据写入机制的不同,而有两种方式:
基本上,LVM 最主要的用处是在实现一个可以弹性调整容量的文件系统上, 而不是在创建一个效能为主的磁碟上,所以,我们应该利用的是 LVM 可以弹性管理整个 partition 大小的用途上,而不是著眼在效能上的。因此, LVM 默认的读写模式是线性模式啦! 如果你使用 triped 模式,要注意,当任何一个 partition 损坏时,所有的数据都会丢失的! 所以啦,不是很适合使用这种模式啦!如果要强调效能与备份,那么就直接使用 RAID 即可, 不需要用到 LVM 啊!
LVM2:

现在让我们一步步来创建一个LVM吧,首先让我们创建PV吧,先来看看PV有哪些管理工具。
pv管理工具:
pvs:简要pv信息显示
pvdisplay:显示pv的详细信息
pvscan:搜索目前 系统上任何具有pv的磁盘
pvcreate /dev/DEVICE: 创建pv
pvremove:移除磁盘分区的pv属性。
要创建PV,首先我用fdisk命令对磁盘分四个区出来,把它们的ID都改成8e,要不然LVM识别不出来。




如上图所示,ID号码都改为8e了,现在我们可以创建pv了
1.pvcreate dev/sdb{1,2,3,5}
2.pvs查看简要信息
3.pvscan搜索文件系统中的pv
下图就是我创建pv的过程。


接下来,该创建vg了,我们先来了解一下vg的管理工具吧。
vg管理工具:
vgs:简要Vg信息显示
vgdisplay:详细vg信息显示
vgcreate :创建vg的命令
vgextend :追加pv到vg的命令
vgreduce :移除vg中的pv
vgremove:删除vg中的pv
vgchange:配置vg是否启动

与 PV 不同的是, VG 的名称是自订的!我们知道 PV 的名称其实就是 partition 的装置档名, 但是这个 VG 名称则可以随便你自己取啊!在底下的例子当中,我将 VG 名称取名为 vglirui创建这个 VG 的流程是这样的:



到这里vg创建完成了,接下来创建lv吧,先让我们了解一下lv的管理工具 lv管理工具:
lvs:lv简要信息
lvdisplay:lv详细信息
lvcreate -L #[mMgGtT] -n NAME VolumeGroup
lvremove /dev/VG_NAME/LV_NAME
接下来我们来创建lv,如下图所示:
lvcreate -L 10G -n lvlirui vglirui 创建了一个10G的名字为lvlirui的lv
lvdisplay是查看详细信息的



接下来,就是格式化了,mke2fs -t ext4 /vglirui/lvlirui
mount /dev/vglirui/lvlirui /lirui 将lv挂载在lirui这个目录上
用df 命令可以查看到/dev/mapper/vglirui-lvlirui,其实这个路径和/dev/vglirui/lvlirui是一个路径
不过系统默认路径是前一个。



接下来就是比较重要,而且很危险的两个方面了,一个是扩展逻辑卷,一个是缩减逻辑卷
扩展逻辑卷:
# lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
# resize2fs /dev/VG_NAME/LV_NAME


从上图中可以看出用lvextend命令扩展lv,实际看到lv并没有扩大,而是执行了resize2fs命令lv从10G扩大到了15G,这是因为前一个命令扩大的是逻辑,而后一个才是真正扩大的是物理大小。
接下来我们来看看怎么缩减逻辑卷,这是一个比较危险的动作,一不小心有可能就会删除里面的数据,建议大家小心使用。

缩减逻辑卷:
#cp /etc/issure /lirui 复制文件到lirui这个目录下
# umount /dev/vglirui/lvlirui
# e2fsck -f /dev/vglirui/lvlirui
# resize2fs /dev/vglirui/lvlirui 10G
# lvreduce -L 8G /dev/vglirui/lvlirui
# mount /dev/vglirui/lvlirui /lirui
#ls /lirui看一下里面的内容是否还在,如下图所示,我刚才忘记复制内容了,大家自己去试试吧


以上的这些基本就是LVM操作的基本内容了,除此之外,我们再来看看一个新的知识快照:未来如果你有想要添加某个 LVM 的容量时,就可以透过这个放大、缩小的功能来处理。 那么 LVM 除了这些功能之外,还有什么能力呢?其实他还有一个重要的能力,那就是系统快照 (snapshot)。 什么是系统快照啊?快照就是将当时的系统资讯记录下来,就好像照相记录一般! 未来若有任何数据更动了,则原始数据会被搬移到快照区,没有被更动的区域则由快照区与文件系统共享。
lvcreate -s -L 1G -p r -n snaplirui /dev/vglirui/lvlirui 创建一个快照
mount /dev/vglirui/snaplirui /mnt 挂载到/mnt中去
接下来的各种尝试就简单了,这里不多说了。

会玩 LVM 还不行!你必须要会移除系统内的 LVM 喔!因为你的实体 partition 已经被使用到 LVM 去, 如果你还没有将 LVM 关闭就直接将那些 partition 删除或转为其他用途的话,系统是会发生很大的问题的! 所以,你必须要知道如何将 LVM 的装置关闭并移除才行!会不会很难呢?其实不会啦! 依据以下的流程来处理即可:先卸载系统先卸上面的 LVM 文件系统
使用 lvremove 移除 LV ;

使用 vgchange -a n VGname 让 VGname 这个 VG 不具有 Active 的标志;

使用 vgremove 移除 VG:

使用 pvremove 移除 PV;

最后,使用 fdisk 修改 ID 回来啊!

好吧!那就实际的将我们之前创建的所有 LVM 数据给删除吧!

本文出自 “空白格” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: