一、LVM简介
LVM:logical Volume Manager,Version 2
他们的驱动刚好相反
raid用的内核模块是:md
lvm用的是dm:device mapper 设备映射,将一个或多个底层快设备组织成一个逻辑设备的模块
dm:也能实现raid
pv--vg(pe,pe,,,,)-lv
PE:phsical Extent //默认是4M
//把PV所拥有的存储空间划分为n个存储块,
//PV创建后,并没有pe,只有加入到vg后,才会具有pe,每个vg对pe的大小定义是不同的
//pe的大小取决于vg的定义
lv //就是指定多少个pe组成一个fs的过程
//少了可以加,多了可以减去(不损坏已经存在文件)
//默认centos就是使用的lv
LE //一旦PE被分配给某个lv后,pe就变成了logical extent
//可以动态伸缩,但是使用软件实现,一旦数据发生损坏,修复困难,因为文件不是直接存储在硬盘上的,而是在软件上组织的
/dev/mapper/VG_NAME-LV_NAME //例如vg0-root,vg0上一个叫root的vg
/dev/VG_NAME-LV_NAME // /dev/vol0/root 也是可以的,一个链接文件,便于识别
ls -l /dev/mapper/* //都是链接文件,到/dev/dm0.*文件
二、创建和使用逻辑卷
fdisk /dev/sdb (10g,5g,8g) 8e
partx -a /dev/sdb
pv相关命令:
pvck
pvcreate
-f 强制
-v verbose
-u 指定uuid
pvcreate /dev/sdb3
pvdisplay //显示详细信息
pvmove //移动pv上的pe数据,为了移除该pv
pvremove
pvresize
pvs //简要显示pv
pvscan
vg相关命令
vgs
vgdisplay
vgremove
vgextend
vgreduce
vgsplit
vgcreate
-s 指定pe大小,bBsSkKmMgGtTpPeE
vgcreate -s 4M myvg /dev/sdb3
//缩减操作,需要先移动数据,然后操作
vgextend myvg /dev/sdb5 //添加一个新的硬盘
vgdisplay myvg
pvmove /dev/sdb5 //移动pv,sdb5上的数据
vgreduce myvg /dev/sdb5 //先从vg移除
//移除的话,pvmove移动数据,vgreduce,最后pvremove
lv相关命令
lvcreate
-L lv的大小
-n name
-l 指定逻辑盘区的数量pe的数量,-L和-l使用一个就可以
lv的大小必须小于将要使用的vg的大小
lv的大小未必精确,取决于pe的大小,pe默认为4M
lvcreate -L 4G -n lv0 myvg
ls -l /dev/mapper/myvg-lv0
mke2fs -t ext4 -b 1024 -L MYLV /dev/myvg/lv0
mount /dev/myvg/lv0 /tmp/test2
扩展逻辑卷://问题不大
lvextend -L [+][mMgGtT] /dev/VG_name/LV_name
//增加了,和增加到,使用+ 和不使用+
lvextend -L 5G /dev/myvg/lv0
df -h //仍然是4G,已经挂载了,改变lv大小后,不会直接改变
resize2fs /dev/myvg/lv0 //重新计算大小,不需要卸载
//resize2fs修改lv的逻辑边界,lvextend修改的是物理边界
缩减逻辑卷://必须umount
先缩减逻辑边界,然后缩减物理边界
umount /dev/myvg/lv0
e2fsck -f /dev/myvg/lv0 //强制检查
resize2fs /dev/myvg/lv0 3G
lvreduce -L [-][mMgGtT] /dev/VG_NAME/LV_NAME
逻辑{_____} resize2fs
物理{_____________} lvreduce,lvextend
lvs
lvdisplay
lvextend
lvremove
lvmove
lvconf //设置lv的配置文件
lvreduce
lvresize
三、快照
找了一张照片,例如把fs上的所有的元数据备份了一份(不精确)
然后始终监控着元数据,
创建一个快照:意味着创建了一个监视器,监视着元数据
//快照卷是访问源文件的另外一个入口一样,源文件上的数据发生改变的话,相应也会变化
//任何时刻当元数据要发生变化的时候,先复制一份到快照卷上,
//再次访问的时候,没有发生改变的,找原卷,发生改变的,查看快照卷上的复制的那一份
//快照卷上存储的是发生变化的文件
//监视器,监视数据的改变
//快照卷的大小,最好根据
//创建快照卷后,新增加的数据不会需要做增量备份
//同一卷组中,不能跨fs
-p r|rw //快照卷只能是只读的,一般建议
-n|--name 原卷 -s|--snapshot 目标卷
lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name
lvcreate -s -L 512M -n mylv_snap -p r /dev/myvg/lv0
mount /dev/myvg/mylv_snap /mnt/test2
在源卷中修改文件,在这里看是否发生改变
快照卷是在原有vg的基础上创建的,不用格式化
umount /mnt/test2
lvremove /dev/myvg/mylv_snap -y
四、文件系统挂载使用
挂载光盘设备
光盘设备文件:/dev/cdrom,sr0,dvd,sr1,cdrw
mount -r /dev/cdrom /media/cdrom
fdisk -l //查看光盘驱动
五、dd命令
dd if=/PATH/TO/FROM/SRC of=/PATH/TO/DEST
bs=# :block size ,复制单元大小
count=# 复制多少个bs
dd if=/etc/fstab of=/tmp/fstab bs=1 count=100 //1字节,复制前100个字节
磁盘拷贝:
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
dd if=/dev/zero of=/dev/sda bs=512 count=1 //清除mbr
六、LVM设备验证
1.ls /dev/mapper
//这两种类都是lvm
//其中252是主设备好,2,1分别是此设备号
sar -d 1 2 //也可以看到设备号
练习题
1.创建一个至少有两个pv组成的大小为20g的名为testvg的vg,要求PE大小为16MB,而后在卷组中创建大小为5G的逻辑卷testlv,挂载到/usr目录
2.新建用户archlinux,要求其家目录为/users/archlinux,而后su到archlinux用户,复制/etc/pam.d目录至自己的家目录
3.扩展testlv至7G,要求archlinux用户的文件不能丢失
4.收缩testlv至3g,要求archlinux用户的文件不能丢失
5.对testlv创建快照,并尝试基于快照备份数据,验证快照的功能
本文转自MT_IT51CTO博客,原文链接:http://blog.51cto.com/hmtk520/1950136,如需转载请自行联系原作者