设为首页 收藏本站
查看: 374|回复: 0

[经验分享] LVM管理、快照卷、dd、diff、patch

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-3 09:01:42 | 显示全部楼层 |阅读模式
涉及到的命令:pvcreate、pvdisplay、pvs、pvremove、pvmove、vgcreate、vgdisplay、vgs、vgscan、vgremove、vgextend、vgreduce、lvcreate、lvdisplay、lvs、lvscan、lvresize、lvextend、lvreduce、lvremove、resize2fs、dd、diff、patch

Logical Volume Manager        逻辑卷管理
======================理论部分=====================
使用DM的机制(device mapper 设备映射)
功用:将一个或多个底层设备(包括RAID)组织一个逻辑存储空间,其边界可以动态扩展或缩减
PE
        pysical  extent 物理块;LVM寻址的最小单元,默认4M,可以修改。所以物理卷是由大小相等基本单元PE组成
LE
        logical  extent 逻辑块;逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应

三个层次组成
PV --> VG --> LV
PV  物理卷,是lvm的基本存储逻辑块
VG  卷组,由多个物理卷(PV)组成,形成一个大的资源池
LV  逻辑卷,建立在卷组之上(VG),可以在LV之上进行建立文件系统,然后挂载使用

可以想像成多个分区创建为PV,然后一个或者多个PV组成VG,在VG中划出一定的空间给到VG,可以针对VG进行格式化文件系统,然后挂载使用

PV相关命令
        pvcreate    pvdisplay    pvs    pvscan    pvremove(删除pv)    pvmove(数据移到别的pv)

VG相关命令
        vgcreate    vgdisplay     vgs    vgscan     vgremove     vgextend(扩展)     vgreduce(缩小)

LV相关命令
        lvcreate    lvdisplay    lvs    lvscan    lvresize    lvextend(扩展)    lvreduce(缩小)    lvremove


注意:创建块设备(分区),其ID要调整为8e  Linux LVM


创建PV:

        /dev/sda6            5419        6724    10487426+  8e  Linux LVM(类型为8e Linux LVM)

        [iyunv@localhost ~]# pvcreate /dev/sda6
        WARNING: software RAID md superblock detected on /dev/sda6. Wipe it? [y/n]: y
          Wiping software RAID md superblock on /dev/sda6.
          Physical volume "/dev/sda6" successfully created


        [iyunv@localhost ~]# pvcreate /dev/sdb1
        WARNING: software RAID md superblock detected on /dev/sdb1. Wipe it? [y/n]: y
          Wiping software RAID md superblock on /dev/sdb1.
          Physical volume "/dev/sdb1" successfully created

                [iyunv@localhost ~]# pvs
          PV         VG   Fmt  Attr PSize  PFree
          /dev/sda6       lvm2 ---  10.00g 10.00g
          /dev/sdb1       lvm2 ---  10.00g 10.00g
        [iyunv@localhost ~]# pvdisplay
          "/dev/sda6" is a new physical volume of "10.00 GiB"
          --- NEW Physical volume ---
          PV Name               /dev/sda6
          VG Name               
          PV Size               10.00 GiB
          Allocatable           NO
          PE Size               0   
          Total PE              0
          Free PE               0
          Allocated PE          0
          PV UUID               PTLDyi-ygp9-uXlm-I5sa-j3zG-iszK-D1BvPl

          "/dev/sdb1" is a new physical volume of "10.00 GiB"
          --- NEW Physical volume ---
          PV Name               /dev/sdb1
          VG Name               
          PV Size               10.00 GiB
          Allocatable           NO
          PE Size               0   
          Total PE              0
          Free PE               0
          Allocated PE          0
          PV UUID               qv5k83-mgj3-UTeG-e326-3mfa-6Mqa-GVqXgU

一个或者多个PV组合创建成VG  
        vgcreate   常用选项
                        -s    指明pe size  大小   ,如果不指明大小,默认为4M
                        -t    仅做测试,不实际创建
                        -v    显示过程

        [iyunv@localhost ~]# vgcreate test_vg /dev/sda6 /dev/sdb1
          Volume group "test_vg" successfully created

        [iyunv@localhost ~]# vgs
          VG      #PV #LV #SN Attr   VSize  VFree
          test_vg   2   0   0 wz--n- 20.00g 20.00g
        [iyunv@localhost ~]# vgdisplay
          --- Volume group ---
          VG Name               test_vg
          System ID            
          Format                lvm2
          Metadata Areas        2
          Metadata Sequence No  1
          VG Access             read/write
          VG Status             resizable
          MAX LV                0
          Cur LV                0
          Open LV               0
          Max PV                0
          Cur PV                2
          Act PV                2
          VG Size               20.00 GiB
          PE Size               4.00 MiB
          Total PE              5120
          Alloc PE / Size       0 / 0   
          Free  PE / Size       5120 / 20.00 GiB
          VG UUID               CPb57B-VPO8-6U53-6wYn-dlrT-7O4T-RBUDB7

在VG中新建LV
        LV  (注意:lv的大小必须为pv的整数倍)
        格式:lvcreate    -L  #[KMGTP]  -n  lv_name    vg_name

        [iyunv@localhost ~]# lvcreate -L 10G -n test_lv test_vg
          Logical volume "test_lv" created.


lv创建后的路径是:/dev/vg_name/lv_name   或者  /dev/mapper/vg_name-lv_name   实际路径为:/dev/dm-#
        [iyunv@localhost ~]# ll /dev/test_vg/test_lv
        lrwxrwxrwx. 1 root root 7 10月 28 23:16 /dev/test_vg/test_lv -> ../dm-0
        [iyunv@localhost ~]# ll /dev/mapper/test_vg-test_lv
        lrwxrwxrwx. 1 root root 7 10月 28 23:16 /dev/mapper/test_vg-test_lv -> ../dm-0


=====================================================

缩减vg:通过vg中移出pv实现
注意:计划移出的pv不能包含已经存储数据的pe,如果有,需要先使用pvmove把数据移到别的pv上
        pvmove /dev/some_pv
        vgreduce VG_NAME  /dev/some_pv

扩展vg,向vg中添加更多的pv来实现
        vgextend  VG_NAME  /dev/some_pv

=====================================================

扩展lv
        可以动态的,不影响数据的情况下,在线扩展

        存储设备有:物理边界  (分区大小)
        文件系统有:逻辑边界

对于扩展而言,要先扩展物理边界,然后拉伸逻辑边界

        扩展lv过程:
        1、确定目标大小,要确保此lv中有足够的空闲空间可用
        2、扩展物理边界(  如果是从2G-->4G,可以直接指定4G,或者+2G;“+”的作用)
                lvextend -L [+]#[bkmgt...]  /dev/vgname/lvname
        3、拉伸逻辑边界
                resizee2fs  /dev/vg_name/lv_name

缩减lv (有风险)
        1、缩减要离线
        2、首先要缩减文件系统大小,再缩减lv的大小

        过程:
                1、确定目标大小,缩减后的大小能够容纳现有数据大小
                2、卸载逻辑卷,并强制做文件系统一致性检查(e2fsck -f  /dev/vg_name/lv_name)
                3、缩减逻辑边界
                        resize2fs   /dev/vg_name/lv_name  #[bKMG...]
                4、缩减物理边界
                        lvreduce  -L [-]#[BKMG...]   /dev/vg_name/lv_name


=====================================================

快照卷
    作用:访问原卷上数据的另一个路径,备份工具可以通过此路径完成数据备份
        原因:通过原卷直接备份,可能会造成时间点不一致,通过快照卷就可以避免此问题,如果数据的时间点未发生改变,则直接从原卷上复制,原卷上的数据改变前复制一份到快照卷,数据时间点发生改变,则从快照卷中复制而不是从原卷中复制
注意:快照卷自身仅是为了备份工具提供一个时间点一致的访问路径

快照卷的生命周期:备份开始之前创建快照卷,完成之后即可删除

如何保证通过快照缩放访问到的数据的时间点一致?
    通过把那些将要发生改变的,位于原卷上的数据自动复制一份到快照卷,因此快照卷上的数据如果有效,则必须能完成存储原卷即将发生改变的所有数据的原来版本。(快照卷只读)

创建快照卷
        1、快照卷要与原卷在同一卷组中,因此创建快照卷无需指定卷组
        2、快照卷的大小要精心设定,另外快照卷是只读的(在复制的时间内,快照卷的大小要能保证超过原卷数据变动的大小)

lvcreate  
        -s  --snapshot快照
        -p  permission [r|rw]  权限只读或读写

格式:lvcreate -L  SIZE  -n  NAME  -p  r   -s  /dev/VGNAME/LVNAME

如:lvcreate -L 50M -n mylv-snapshot -p r -s /dev/myvg/mylv

复制完成以后就可以删除快照卷
        umount   /MNT  挂载点
        lvremove /dev/myvg/mylv-snapshot       



=========================================================

补充部分

dd命令

dd if=  of=   bs=    count=
        if:源文件
        of:目标文件
        bs:block size ,一次io的数据量
        count: 复制多少个bs

如果不指定bs  count 则表示复制整个文件

两个设备文件
        /dev/null     
        /dev/zero   

dd  if=/dev/zero  of=/tmp/test   bs=1M  count=64   #创建一个大小为64M的文件

应用1:
可以把创建的回环文件当作swap分区文件来使用:
        mkswap  /tmp/test
        swapon /tmp/test

应用2:
备份MBR
dd  if=/dev/sda  of=/backup/mbr.bak  bs=512  count=1

应用3:破坏mbr
dd if=/dev/zero  of=/dev/sda   bs=512 count=1



文本比较、补丁制作及打补丁工具
diff  
    diff  -u  file1   file2  (一般把file2代表新文件,放在后面)
patch
   diff -u  file.old   file.new   >  file.patch            制作补丁文件
patch  file.old   <   file.patch      将补丁文件打到原文件上



==============================================================
练习题:
1、创建一个至少有两个物理卷组成的大小为20G的卷组,要求PE大小为8M,而在卷组中创建一个大小为5G的逻辑卷mylv1,格式化为ext4文件系统,开机自动挂载至/users目录,支持acl
        A、创建两个分区,各10G,ID调整为8e Linux LVM,过程略
        B、创建PV
                [iyunv@localhost ~]# pvcreate /dev/sdb2 /dev/sda7
                Physical volume "/dev/sdb2" successfully created
                Physical volume "/dev/sda7" successfully created
                [iyunv@localhost ~]# pvs
                  PV         VG      Fmt  Attr PSize  PFree
                  /dev/sda6  test_vg lvm2 a--  10.00g     0
                  /dev/sda7          lvm2 ---  10.00g 10.00g
                  /dev/sdb1  test_vg lvm2 a--  10.00g 10.00g
                  /dev/sdb2          lvm2 ---  10.00g 10.00g
        C、创建VG,指定PE大小为8M,命名为MYVG
                [iyunv@localhost ~]# vgcreate MYVG -s 8M /dev/sda7 /dev/sdb2
                        Volume group "MYVG" successfully created
        D、在卷组中创建一个大小为5G的逻辑卷MYLV1
                [iyunv@localhost ~]# lvcreate -L 5G -n MYLV1 MYVG
                  Logical volume "MYLV1" created.
                [iyunv@localhost ~]# lvs
                  LV      VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
                  MYLV1   MYVG    -wi-a-----  5.00g                                                   
                  test_lv test_vg -wi-ao---- 10.00g
        E、格式化为ext4文件系统,修改/etc/fstab开机自动挂载并支持acl
                [iyunv@localhost ~]# mkfs.ext4 /dev/MYVG/MYLV1
                [iyunv@localhost ~]# blkid /dev/MYVG/MYLV1
                /dev/MYVG/MYLV1: UUID="968ea16b-f515-4b0e-a8f4-50b4c5dfc825" TYPE="ext4"

                [iyunv@localhost ~]# mkdir /users
                [iyunv@localhost ~]# echo "UUID=968ea16b-f515-4b0e-a8f4-50b4c5dfc825  /users ext4 defaults,acl 0 0" >> /etc/fstab
                [iyunv@localhost ~]# tail -3 /etc/fstab
                proc                    /proc                   proc    defaults        0 0
                UUID=786b54c9-d523-421f-80e3-535618f88b4a /backup ext4 defaults,noatime,acl 0 0
                UUID=968ea16b-f515-4b0e-a8f4-50b4c5dfc825  /users ext4 defaults,acl 0 0

                [iyunv@localhost ~]# mount -a

2、新建用户magedu,其家目录为/users/magedu,而后su切换至此用户,复制多个文件到家目录
        A、新建用户,指定家目录
                [iyunv@localhost ~]# useradd -d /users/magedu magedu
                [iyunv@localhost ~]# ll /users/
                总用量 20
                drwx------. 2 root   root   16384 10月 29 13:54 lost+found
                drwx------. 4 magedu magedu  4096 10月 29 14:01 magedu
        B、su切换到magedu,复制多个文件到家目录
                [iyunv@localhost ~]# su magedu
                [magedu@localhost root]$ cd
                复制过程略
                [magedu@localhost ~]$ ll
                总用量 108
                drwxr-xr-x.  2 magedu magedu  4096 10月 29 14:06 account
                drwxr-xr-x. 15 magedu magedu  4096 10月 29 14:06 cache
                ......太多,省略
                drwxr-xr-x.  6 magedu magedu  4096 10月 29 14:06 www
                drwxr-xr-x.  3 magedu magedu  4096 10月 29 14:06 yp
                [magedu@localhost ~]$ du -sh
                398M        .

3、扩展mylv1至9G,确保扩展完成后原数据完全可用
        扩展可以在线扩展,不影响数据
        A、先扩展LV(从5G扩展至9G 可以:lvextend -L +4G  或者lvextend -L 9G两种方式都可以)
                [iyunv@localhost ~]# lvextend -L +4G /dev/MYVG/MYLV1
                  Size of logical volume MYVG/MYLV1 changed from 5.00 GiB (640 extents) to 9.00 GiB (1152 extents).
                  Logical volume MYLV1 successfully resized
        B、调整文件系统大小       
                [iyunv@localhost ~]# resize2fs /dev/MYVG/MYLV1
                resize2fs 1.41.12 (17-May-2010)
                Filesystem at /dev/MYVG/MYLV1 is mounted on /users; on-line resizing required
                old desc_blocks = 1, new_desc_blocks = 1
                Performing an on-line resize of /dev/MYVG/MYLV1 to 2359296 (4k) blocks.
                The filesystem on /dev/MYVG/MYLV1 is now 2359296 blocks long.

                [iyunv@localhost ~]# lvs
                  LV      VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
                  MYLV1   MYVG    -wi-ao----  9.00g                                                   
                  test_lv test_vg -wi-ao---- 10.00g                                                   

                大小没变,文件内容也正常,数据无损
                [iyunv@localhost ~]# du -sh /users/magedu/
                398M        /users/magedu/


4、缩减mylv1至7G,确保缩减后数据可用
        A、必须先卸载,离线进行
                [iyunv@localhost ~]# umount /users/
        B、磁盘检查
                [iyunv@localhost ~]# e2fsck -f /dev/MYVG/MYLV1
        C、调整文件系统大小
                [iyunv@localhost ~]# resize2fs /dev/MYVG/MYLV1 7G
                resize2fs 1.41.12 (17-May-2010)
                Resizing the filesystem on /dev/MYVG/MYLV1 to 1835008 (4k) blocks.
                The filesystem on /dev/MYVG/MYLV1 is now 1835008 blocks long.
        D、缩减LV大小(从9G缩减至7G,可以:lvreduce -L -2G 或者lvreduce  -L 7G 是一样的)
                [iyunv@localhost ~]# lvreduce  -L -2G /dev/MYVG/MYLV1
                  WARNING: Reducing active logical volume to 7.00 GiB
                  THIS MAY DESTROY YOUR DATA (filesystem etc.)
                Do you really want to reduce MYLV1? [y/n]: y
                  Size of logical volume MYVG/MYLV1 changed from 9.00 GiB (1152 extents) to 7.00 GiB (896 extents).
                  Logical volume MYLV1 successfully resized
        F、挂载后检查数据
                [iyunv@localhost ~]# mount /dev/MYVG/MYLV1 /users/
                [iyunv@localhost ~]# du -sh /users/
                398M        /users/
                [iyunv@localhost ~]# cat /users/magedu/fstab

                #
                # /etc/fstab
                # Created by anaconda on Tue Oct 27 22:23:02 2015
                ......内容略

5、对mylv1创建快照,并通过备份数据,要求保留原有的属主属组等信息
        A、创建快照
                [iyunv@localhost ~]# lvcreate -L 80M -n MYLV1-snapshot -p r -s /dev/MYVG/MYLV1
                Logical volume "MYLV1-snapshot" created.
                可以看出,创建完后文件系统类型同快照源
                [iyunv@localhost mnt]# blkid  /dev/MYVG/MYLV1-snapshot
                /dev/MYVG/MYLV1-snapshot: UUID="968ea16b-f515-4b0e-a8f4-50b4c5dfc825" TYPE="ext4"

        B、挂载验证:
                [iyunv@localhost ~]# mount /dev/MYVG/MYLV1-snapshot /mnt/
                修改一下源文件
                [iyunv@localhost mnt]# echo `date +%F-%H-%M-%S` >> /users/magedu/fstab
                [iyunv@localhost mnt]# tail -3 /users/magedu/fstab
                UUID=786b54c9-d523-421f-80e3-535618f88b4a /backup ext4 defaults,noatime,acl 0 0
                UUID=968ea16b-f515-4b0e-a8f4-50b4c5dfc825  /users ext4 defaults,acl 0 0
                2015-10-29-15-32-15
                源文件修改后,到快照中查看发现,此文件仍是原来的样子,所以通过快照卷进行数据备份就能解决数据时间点不一致的问题
                [iyunv@localhost mnt]# tail -3 /mnt/magedu/fstab
                proc                    /proc                   proc    defaults        0 0
                UUID=786b54c9-d523-421f-80e3-535618f88b4a /backup ext4 defaults,noatime,acl 0 0
                UUID=968ea16b-f515-4b0e-a8f4-50b4c5dfc825  /users ext4 defaults,acl 0 0





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-134350-1-1.html 上篇帖子: Linux系统释放内存, 解除swap分区占用 下篇帖子: RAID设备及mdadm命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表