lvm应用
lvm的重点在于可以弹性的调整filesystem的容量! 而并非在于数据的存储效率及安全上面。
需要文件的读写效能或者是数据的可靠性是RAID所考虑的问题。
lvm:逻辑卷管理器
允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小
允许在多个物理设备间重新组织文件系统
-
将设备指定为物理卷
-
用一个或者多个物理卷来创建一个卷组
-
物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的
-
在物理卷上创建的逻辑卷是由物理区域(PE)组成
-
可以在逻辑卷上创建文件系统
lvm介绍
lvm:logical volume manager,version 2
dm:device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块
设备名:/dev/dm-#
-
软链接:
/dev/mapper/VG_NAME-LV_NAME /dev/mapper/vol0-root /dev/VG_NAME/LV_NAME /dev/vol0/root
LVM如何更改文件系统的容量?
LVM可以弹性的更改LVM的容量,是如何做到的?
是通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备中的PE加到LV中以加大容量!
创建和使用新的LVM逻辑卷的步骤:
1、建立LVM类型的分区 (fdisk t) 2、建立LVM物理卷 (pv) 3、建立LVM卷组 (vg) 4、建立LVM逻辑卷 (lv) 5、建立文件系统 (mkfs.ext2,3,4) 6、挂载文件系统 (mount) 7、使用文件系统
pv管理工具
命令行中输入pv 按两次TAB自动补全即可查看所有的pv命令
vg管理工具
和pv相似,在命令行中输入lv 按两次TAB即可查看所有的vg命令
注意: 删除卷组时: 先做pvmove,再做vgremove
lv管理工具
扩展和缩减逻辑卷
-
扩展逻辑卷:
# lvextend-L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME # resize2fs /dev/VG_NAME/LV_NAME
-
缩减逻辑卷:
# umount/dev/VG_NAME/LV_NAME # e2fsck -f /dev/VG_NAME/LV_NAME # resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] # lvreduce-L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME # mount
逻辑卷管理器快照
-
快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝
-
对于需要备份或者复制的现有数据集临时拷贝以及其它操作来说,快照是最合适的选择。
-
快照只有在它们和原来的逻辑卷不同时才会消耗空间
由于快照区与原本的LV共用很多PE的区块,因此快照去与被快照的LV必须要要在同一个VG上!系统恢复的时候的文件数量不能高于快照区的实际容量
实战案例:
1、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录
2、新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录
3、扩展testlv至7G,要求archlinux用户的文件不能丢失
4、收缩testlv至3G,要求archlinux用户的文件不能丢失
5、对testlv创建快照,并尝试基于快照备份数据,验正快照的功能
本实验基于 centos 7
首先介绍下我们的实现环境
如图:我们使用sdb的4个分区做LVM
第一问
第一步创建pv [root@redhat7 ~]# pvcreate /dev/sdb{1,5,6,7} [root@redhat7 ~]# pvs
第二步创建vg [root@redhat7 ~]# vgcreate -s 16MB testvg /dev/sdb{1,5,6} [root@redhat7 ~]# vgs [root@redhat7 ~]# vgdisplay
第三步创建lv [root@redhat7 ~]# lvcreate -L 5G -n testlv testvg [root@redhat7 ~]# lvs [root@redhat7 ~]# lvdisplay
第四步创建文件系统并挂载 [root@redhat7 ~]# mkfs -t ext4 /dev/testvg/testlv [root@redhat7 ~]# mkdir /users [root@redhat7 ~]# mount /dev/testvg/testlv /users/ [root@redhat7 ~]# [root@redhat7 ~]# df -h | tail -1 /dev/mapper/testvg-testlv 4.8G 20M 4.6G 1% /users
第二问
[root@redhat7 ~]# useradd -d /users/archlinux archlinux [root@redhat7 ~]# su - archlinux hi,dangerous! [archlinux@redhat7 ~]$ pwd /users/archlinux [archlinux@redhat7 ~]$ whoami archlinux [archlinux@redhat7 ~]$ cp /etc/pam.d/ ./ -r [archlinux@redhat7 ~]$ ls pam.d [archlinux@redhat7 ~]$ du -sh pam.d/ 156K /etc/pam.d/
第三问
前提:lv所在的vg容量要足够; [root@redhat7 ~]# lvextend -L 7G /dev/testvg/testlv Size of logical volume testvg/testlv changed from 5.00 GiB (320 extents) to 7.00 GiB (448 extents). Logical volume testlv successfully resized. [root@redhat7 ~]# df -h | tail -1 /dev/mapper/testvg-testlv 4.8G 21M 4.6G 1% /users [root@redhat7 ~]# resize2fs /dev/testvg/testlv resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/testvg/testlv is mounted on /users; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/testvg/testlv is now 1835008 blocks long. [root@redhat7 ~]# df -h | tail -1 /dev/mapper/testvg-testlv 6.8G 23M 6.4G 1% /users [root@redhat7 ~]# su - archlinux Last login: Mon Aug 29 20:14:12 CST 2016 on pts/0 [archlinux@redhat7 ~]$ pwd /users/archlinux [archlinux@redhat7 ~]$ ls pam.d [archlinux@redhat7 ~]$ du -sh pam.d/ //和扩展前大小一样,说明数据没有丢失 156K pam.d/
第四问:
注意:缩减lvm必须严格按照前面我们所说的步骤,顺序很重要!! 这里我们再次强调下 1、卸载文件系统 2、使用e2fsck强制检测文件系统(这里只针对ext系列的文件系统) 3、首先缩减文件系统边界 4、缩减lvm 5、挂载使用 [root@redhat7 ~]# umount /users/ [root@redhat7 ~]# e2fsck -f /dev/testvg/testlv [root@redhat7 ~]# resize2fs /dev/testvg/testlv 3G [root@redhat7 ~]# lvreduce -L 3G /dev/testvg/testlv //此处有个提示,我们选择y即可(如下图所示) [root@redhat7 ~]# mount /dev/testvg/testlv /users/ [root@redhat7 ~]# df -h | tail -1 /dev/mapper/testvg-testlv 2.9G 16M 2.7G 1% /users [root@redhat7 ~]# su - archlinux Last login: Mon Aug 29 20:30:30 CST 2016 on pts/0 [archlinux@redhat7 ~]$ ls pam.d [archlinux@redhat7 ~]$ du -sh pam.d/ //大小没变,说明数据保存完整 156K pam.d/
第五问:
[root@redhat7 ~]# lvcreate -s -L 512M -n snap_testlv /dev/testvg/testlv Logical volume "snap_testlv" created. [root@redhat7 ~]# ll /dev/testvg/snap_testlv //查看快照设备 lrwxrwxrwx. 1 root root 7 Aug 29 20:45 /dev/testvg/snap_testlv -> ../dm-3 [root@redhat7 ~]# mount -r /dev/testvg/snap_testlv /mnt //快照卷挂载为只读,它不需要写数据 [root@redhat7 ~]# df -h | tail -2 /dev/mapper/testvg-testlv 2.9G 16M 2.7G 1% /users /dev/mapper/testvg-snap_testlv 2.9G 16M 2.7G 1% /mnt //这里注意:我们指定的大小为512M ;这里显示和原卷大小一样,但实际为512M [root@redhat7 ~]# ll /mnt total 20 drwx------. 6 archlinux archlinux 4096 Aug 29 20:16 archlinux drwx------. 2 root root 16384 Aug 29 20:09 lost+found [root@redhat7 ~]# ll /users/ total 20 drwx------. 6 archlinux archlinux 4096 Aug 29 20:16 archlinux drwx------. 2 root root 16384 Aug 29 20:09 lost+found //和原卷数据完全一样 [root@redhat7 ~]# cd /users/archlinux/pam.d/ [root@redhat7 pam.d]# echo "Hello world" >> atd //修改原卷中的atd文件;向最后一行添加一个字符串 [root@redhat7 pam.d]# tail -1 atd //查看原卷中atd文件的最后一行,可以看到已经修改成功 Hello world [root@redhat7 pam.d]# cd /mnt/archlinux/pam.d/ //进入快照卷内 [root@redhat7 pam.d]# tail -1 atd //查看快照卷中的atd文件的最后一行,数据并没有发生变化 session include password-auth //至此,说明快照卷使用成功
原创文章,作者:sixijie,如若转载,请注明出处:http://www.178linux.com/42722