一、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创建快照,并尝试基于快照备份数据,验证快照的功能