标签:lock 使用 不同 python hunk cow stl 放大 vol
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中以加大
    对物理设备新建物理卷   pvcreate /dev/md1 /dev/md5
    对新建的物理卷组成一个卷组  vgcreate vgmage /dev/md1 /dev/md5 /dev/sdi 
    对新建的物理卷组创建逻辑卷  lvcreate -L 38M -n lvlinux31 vgmage
                                      lvcreate -l 20 -n lvpython8 vgmage
                                                          -s  8M  指定PE大小
    对新建好的逻辑卷格式化ext4的文件系统  mkfs.ext4 /dev/vgmage/lvlinux31
    对新建好的逻辑卷格式化xfs的文件系统    mkfs.xfs /dev/mapper/vgmage-lvpython8
    将新建好的文件系统进行挂载                   mount /dev/vgmage/lvlinux31 /app/lvmdata2
                                              mount /dev/vgmage/lvpython8 /app/lvmdata2
    练习:创建一个2G大小的逻辑卷,要求PE大小16M,逻辑卷名为lvcentos,将其格式化为xfs,并挂载到/app/testdata
逻辑卷的在线扩展
    注:逻辑卷可以直接在线扩展,不用卸载文件系统,当缩小逻辑卷时,需要卸载文件系统。
    扩展逻辑卷:
    lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
    resize2fs /dev/VG_NAME/LV_NAME
    lvresize -r -l +100%FREE /dev/VG_NAME/LV_NAME
情况1:卷组大小足够扩展
方法一:
lvextend -L +1G /dev/vgmage/lvlinux31
resize2fs /dev/vgmage/lvlinux31
方法二:
lvextend -L 1.5G /dev/vgmage/lvlinux31 -r
pvcreate /dev/sdj vgextend vgmage /dev/sdj lvextend -L +3G -r /dev/vgmage/lvlinux31
        XFS
lvextend -r -L 1G /dev/vgmage/lvpython8 xfs_growfs /dev/vgmage/lvpython8
        注:resize2fs 命令只适用于ext的文件系统,xfs系统不生效,另外,xfs系统使用xfs_growfs命令,并且只能扩展,没有合适的缩减命令。
逻辑卷减小
    1.卸载
    2.扫描
    3.减小文件系统大小
    4.减小逻辑卷大小
umount /app/data0/ e2fsck -f /dev/vgmage/lvlinux31 resize2fs /dev/vgmage/lvlinux31 50M lvreduce -L 50M /dev/vgmage/lvlinux31
    如果顺序反了,先执行了减逻辑卷,则扩展回去,再重新扫描
lvextend -L 500M /dev/vg_mage/lv_home
e2fsck -f /dev/vg_mage/lv_home
resize2fs /dev/vg_mage/lv_home 200M
lvreduce -L 200M /dev/vg_mage/lv_home
实验:将逻辑卷迁移到其他主机
        1.增加一个独立文件的虚拟磁盘到源主机
        2.将该磁盘做为PV,扩展进卷组
        3.将所有数据都移动到将要拆卸的物理卷上
        pvmove /dev/md5 /dev/sdk
        4.将源卷组设置为非激活
    vgchange -an vgmage
        5.如果卷组中除了要拆卸的硬盘外还有其他的PV,则进行lvreduce,如没有,直接第6步
        vgreduce vgmage /dev/md1 /dev/md5 /dev/sdi /dev/sdj
        6.将源卷组设置为export状态
        vgexport vgmage
        7.拔硬盘,并加到目标主机
        8.把vgmage设置为import
        vgimport vgmage
        9.把卷组设置为激活
        lvchange -ay vgmage  (vgchange -ay vgmage)
        10.挂载
l逻辑卷管理器快照
    快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝
    对于需要备份或者复制的现有数据集临时拷贝以及其它操作来说,快照是最合
    适的选择
    快照只有在它们和原来的逻辑卷不同时才会消耗空间
    – 在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照
    有所改变才会使用这些空间
    – 当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。
    – 快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更
    改的数据
    – 建立快照的卷大小只需要原始逻辑卷的15%~20%就够了,也可以使用
        lvextend放大快照
copy on write = COW 写时复制
何时写COW
1.当源发生变化时,如A-Version1 变化为A-Version2,则把A-Version1拷至COW
2.对于可写的快照,快照发生改变,直接写入COW
    快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数
    据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和
    文件系统共享
    由于快照区与原本的LV共用很多PE的区块,因此快照去与被快照的LV必须
    在同一个VG.系统恢复的时候的文件数量不能高于快照区的实际
为现有逻辑卷创建快照
    lvcreate -l 64 -s -n data-snapshot -p r /dev/vg0/data 只读权限的快照
    ? 挂载快照
    mkdir -p /mnt/snap
    mount -o ro /dev/vg0/data-snapshot /mnt/snap
    ? 恢复快照
    umount /dev/vg0/data-snapshot
    umount /dev/vg0/data
    lvconvert --merge /dev/vg0/data-snapshot
    ? 删除快照
    umount /mnt/databackup
    lvremove /dev/vg0/databackup
作业:
1:创建一个可用空间为1G的RAID1设备,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录
2:创建由三块硬盘组成的可用空间为2G的RAID5设备,要求其chunk大小为256k,文件系统为ext4,开机可自动挂载至/mydata目录
作业:
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创建快照,并尝试基于快照备份数据,验证快照的功能
标签:lock 使用 不同 python hunk cow stl 放大 vol
原文地址:http://blog.51cto.com/11912662/2134927