• 磁盘管理 -- LVM


    •  LVM
    • 概念
    • 创建操作
    • 分区监控
    • 扩容与缩容
    • 将数据快速转移到相同的卷组
    • 删除整个逻辑卷

    LVM


    LVM (Logical Volume Manage) , 逻辑卷管理

    • 作用: 整合分散的空间, 动态调整磁盘容量, 从而提高磁盘管理的灵活性;
    • WARN: /boot 分区存放引导文件, 不能使用 LVM 创建, 必须独立出来;

    概念


    将众多的物理卷 (PV) 组成 卷组 (VG) , 再从卷组中划分出逻辑卷(LV)

     零散空间存储 --> 整合的虚拟磁盘 --> 虚拟分区

       物理卷(PV)           卷组(VG)          逻辑卷(LV)

    • PV (Physical Volume), 物理卷

        整个硬盘, 或使用fdisk 等工具简历的普通分区, 包括许多默认 4M 大小的 PE (Physical Extent, 基本单元/物理单元);

                   

    • VG (Volume Group), 卷组

                    

    • LV (Logical Volume), 逻辑卷

        从卷组中分割出一块空间, 用于建立分区

    创建操作


    常用的命令

    • 扫描 scan
      • pvscan      vgscan      lvscan
    • 建立 create
      • pvcreate      vgcreate      lvcreate
    • 显示 display
      • pvdisplay      vgdisplay      lvdisplay
    • 删除 remove
      • pvremove      vgremove      lvremove
    • 扩展 extend
      • vgextend      lvextend
    • 减少 reduce
      • vgreduce      lvreduce
         

    创建物理卷 ( 物理卷可以不用建立 ) 

    // 可以跟多个分区, 连贯的话可以使用 /dev/sdb[1234]
    pvcreate /dev/sdb5 
      Physical volume "/dev/sdb5" successfully created

     创建卷组 VG

    // 创建卷组, -s 指定PE的大小, 默认 4M; 下面使用的是四个分区;
    vgcreate -s 8 vg0 /dev/sdb[1234]
      Volume group "vg0" successfully created
    
    // 查看卷组
    vgdisplay /dev/vg0
      --- Volume group ---
      VG Name               vg0
      System ID             
      Format                lvm2
      Metadata Areas        4
      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                4
      Act PV                4
      VG Size               99.99 GiB
      PE Size               8.00 MiB
      Total PE              25597
      Alloc PE / Size       0 / 0   
      Free  PE / Size       25597 / 99.99 GiB
      VG UUID               fYBKCi-YraR-7ABL-NkBR-hpii-lTIC-jGDD0y

    创建逻辑卷

    // 创建逻辑卷 -L 给的大小 -n 逻辑卷名称
    lvcreate -L 10G -n tian vg0
      Logical volume "tian" created
    
    // 或者可以使用 -l 指定 PE 个数
    lvcreate -l 2500 -n tian vg0
    
    // 查看逻辑卷
    lvdisplay /dev/vg0/tian 
      --- Logical volume ---
      LV Path                /dev/vg0/tian
      LV Name                tian
      VG Name                vg0
      LV UUID                kcJcqI-E2xU-phrt-c0RM-cBLa-p1h9-gmI1rx
      LV Write Access        read/write
      LV Creation host, time localhost.localdomain, 2019-03-25 21:57:43 -0400
      LV Status              available
      # open                 0
      LV Size                19.53 GiB
      Current LE             2500
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:3

    格式化逻辑卷

    // 格式化(创建)文件系统;
    mkfs.ext4 /dev/vg0/tian 
        mke2fs 1.41.12 (17-May-2010)
        Filesystem label=
        OS type: Linux
        Block size=4096 (log=2)
        Fragment size=4096 (log=2)
        Stride=0 blocks, Stripe width=0 blocks
        1281120 inodes, 5120000 blocks
        256000 blocks (5.00%) reserved for the super user
        First data block=0
        Maximum filesystem blocks=4294967296
        157 block groups
        32768 blocks per group, 32768 fragments per group
        8160 inodes per group
        Superblock backups stored on blocks: 
            32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
            4096000
    
        Writing inode tables: done                            
        Creating journal (32768 blocks): done
        Writing superblocks and filesystem accounting information: done
    
        This filesystem will be automatically checked every 30 mounts or
        180 days, whichever comes first.  Use tune2fs -c or -i to override.

    挂载分区

    // 挂载到需要的目录, 或者创建挂载点进行挂载
    mkdir /tian
    mount /dev/vg0/tian /tian/
    
    // 配置开机自动挂载, 查看 UUID , 使用 UUID进行挂载, 防止重启后盘符变化导致加载不了磁盘错误;
    blkid /dev/vg0/tian 
        /dev/vg0/tian: UUID="dd0ca91d-aefb-46fd-97d9-7158f9668b20" TYPE="ext4" 
    vim /etc/fstab
        ... ...
        UUID="dd0ca91d-aefb-46fd-97d9-7158f9668b20" /tian     ext4    defaults        1 2

    分区监控


    查看命令

    // 查看物理卷
    pvs                    // 查看所有
    pvs /dev/sdb1        // 指定分区
      PV         VG   Fmt  Attr PSize  PFree 
      /dev/sdb1  vg0  lvm2 a--  10.00g 10.00g
    pvs /dev/sdb*        // 通配符匹配
    
    // 查看物理卷组
    vgs                    // 查看所有卷组
    vgs /dev/vg0        // 指定卷组查看
      VG   #PV #LV #SN Attr   VSize  VFree 
      vg0    4   1   0 wz--n- 99.99g 80.46g
      
    // 查看逻辑卷        
    lvs                    // 查看所有逻辑卷
    lvs /dev/vg0/tian     // 查看指定的逻辑卷
      LV   VG   Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
      tian vg0  -wi-ao---- 19.53g 
     
    // 查看pv , vg , lv 及指定挂载点
     pvs ; echo ------------------------;vgs ; echo ------------------------;lvs ; echo ------------------------;df -hT /tian
      PV         VG         Fmt  Attr PSize   PFree  
      /dev/sda3  vg_centos6 lvm2 a--  147.80g      0 
      /dev/sdb1  vg0        lvm2 a--   10.00g  10.00g
      /dev/sdb2  vg0        lvm2 a--   20.01g 488.00m
      /dev/sdb3  vg0        lvm2 a--   30.00g  30.00g
      /dev/sdb4  vg0        lvm2 a--   39.98g  39.98g
    ------------------------
      VG         #PV #LV #SN Attr   VSize   VFree 
      vg0          4   1   0 wz--n-  99.99g 80.46g
      vg_centos6   1   3   0 wz--n- 147.80g     0 
    ------------------------
      LV       VG         Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
      tian     vg0        -wi-ao---- 19.53g                                             
      LogVol00 vg_centos6 -wi-ao---- 40.00g                                             
      LogVol01 vg_centos6 -wi-ao---- 40.00g                                             
      LogVol02 vg_centos6 -wi-ao---- 67.80g                                             
    ------------------------
    Filesystem           Type  Size  Used Avail Use% Mounted on
    /dev/mapper/vg0-tian ext4   20G  201M   19G   2% /tian

    实时监控

    // 动态实时查看, 用于监控; watch -n 选项表示多少秒刷新一次;
    watch -n 1 ' pvs ; echo ------------------------;vgs ; echo ------------------------;lvs ; echo ------------------------;df -hT /tian'
    
    // 动态查看只针对与挂载点
    watch -n 1 'df -h /tian'
        Every 10.0s: df -h /tian                                                           Mon Mar 25 23:02:01 2019                        // 实时时间
    
        Filesystem            Size  Used Avail Use% Mounted on
        /dev/mapper/vg0-tian   20G  352M   18G   2% /tian            // 存储空间使用

    扩容与缩容


      xfs 类型的设备只能扩容, 不能缩容 !!

    VG容量够, 扩容 逻辑卷

    // 查看文件系统本来大小
    df -hT
        Filesystem                      Type   Size  Used Avail Use% Mounted on
        ... ...
        /dev/mapper/vg0-tian            ext4    20G  172M   19G   1% /tian
    
    // 扩容 20个 G
    lvextend -L +20G /dev/vg0/tian 
      Extending logical volume tian to 39.53 GiB
      Logical volume tian successfully resized
    // 扩容到 50G
    lvextend -L 50G /dev/vg0/tian
    
    // 调整(刷新)逻辑卷分区大小
    resize2fs /dev/vg0/tian 
        resize2fs 1.41.12 (17-May-2010)
        Filesystem at /dev/vg0/tian is mounted on /tian; on-line resizing required
        old desc_blocks = 2, new_desc_blocks = 3
        Performing an on-line resize of /dev/vg0/tian to 10362880 (4k) blocks.
        The filesystem on /dev/vg0/tian is now 10362880 blocks long.
    // 再次查看扩容后的大小    
    df -hT
        Filesystem                      Type   Size  Used Avail Use% Mounted on
        ... ...
        /dev/mapper/vg0-tian            ext4    39G  176M   37G   1% /tian
        
    // CentOS 7 上的xfs文件系统调整大小
    xfs_growfs /dev/vg0/tian

    逻辑卷缩小

    // xfs 格式的文件系统不能缩小
    
    // 查看没有缩小的时候的大小
    df -hT
        Filesystem                      Type  Size  Used Avail Use% Mounted on
        ... ...
        /dev/mapper/vg0-tian            ext4   30G  233M   28G   1% /tian
    
    // 首先,需要卸载文件系统的挂载
    umount /tian
    
    // 使用 e2fsck 强制检查逻辑卷, 并关注使用空间, 默认块是 4 K;
    e2fsck -f /dev/vg0/tian 
        e2fsck 1.41.12 (17-May-2010)
        Pass 1: Checking inodes, blocks, and sizes
        Pass 2: Checking directory structure
        Pass 3: Checking directory connectivity
        Pass 4: Checking reference counts
        Pass 5: Checking group summary information
        /dev/vg0/tian: 13/1966080 files (15.4% non-contiguous), 182818/7864320 blocks
    
    // 使用resize2fs 将文件系统减小到 10 G;
    resize2fs /dev/vg0/tian 10G
        resize2fs 1.41.12 (17-May-2010)
        Resizing the filesystem on /dev/vg0/tian to 2621440 (4k) blocks.
        The filesystem on /dev/vg0/tian is now 2621440 blocks long.
        
    // 根据使用的大小缩小, 可以预留出足够使用的大小; 两种方式缩小到 10 G;
    lvreduce -L -20G /dev/vg0/tian
    lvreduce -L 10G /dev/vg0/tian
    
    // 挂载
    mount /dev/vg0/tian /tian
    
    // 查看挂在后的大小
    df -hT
        Filesystem                      Type  Size  Used Avail Use% Mounted on
        ... ...
        /dev/mapper/vg0-tian            ext4  9.9G  225M  9.2G   3% /tian

    扩大卷组 (VG)

    // 环境: 硬盘分区sdb[1234] , 123做卷组, 逻辑卷使用满, 卷组空间不足, 需要使用sdb4 进行扩容;
    vgextend vg0 /dev/sdb4 
      Volume group "vg0" successfully extended
    
    // 查看sdb[1234]各个分区的大小
    lsblk /dev/sdb
        NAME                MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
        sdb                   8:16   0  100G  0 disk 
        ├─sdb1                8:17   0   10G  0 part 
        │ └─vg0-tian (dm-3) 253:3    0   60G  0 lvm  /tian
        ├─sdb2                8:18   0   20G  0 part 
        │ └─vg0-tian (dm-3) 253:3    0   60G  0 lvm  /tian
        ├─sdb3                8:19   0   30G  0 part 
        │ └─vg0-tian (dm-3) 253:3    0   60G  0 lvm  /tian
        └─sdb4                8:20   0   40G  0 part
    
    // 查看扩容后的卷组; 大小 100 GiB;    
    vgdisplay /dev/vg0
      --- Volume group ---
      VG Name               vg0
      System ID             
      Format                lvm2
      Metadata Areas        4
      Metadata Sequence No  3
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               1
      Max PV                0
      Cur PV                4
      Act PV                4
      VG Size               99.99 GiB
      PE Size               4.00 MiB
      Total PE              25597
      Alloc PE / Size       15360 / 60.00 GiB
      Free  PE / Size       10237 / 39.99 GiB
      VG UUID               5DtUCI-dMDj-FVjX-dPZH-wCgf-o5Y1-e04kG5
      
    // 再扩容逻辑卷正常按上面扩容就好

    将数据快速转移到相同的卷组


    // 将一个新的分区扩容卷组,sdb4 扩容 sdb[123] 的 vg0 卷组;
    // 通过 pvmove 命令转移空间数据 sdb1 --> sdb4
    // 使用 vgreduce 将损坏的磁盘或者分区从卷组中移除 --> sdb1
    // 使用 pvremove 将坏的磁盘或者分区从系统中删除(可选) --> sdb1
    // 使用一些工具修复磁盘或者手动更换损坏磁盘
    vgextend vg0 /dev/sdb4
    pvs
      PV         VG         Fmt  Attr PSize   PFree 
      /dev/sda3  vg_centos6 lvm2 a--  147.80g     0 
      /dev/sdb1  vg0        lvm2 a--   10.00g 12.00m
      /dev/sdb2  vg0        lvm2 a--   20.01g     0 
      /dev/sdb3  vg0        lvm2 a--   30.00g     0 
      /dev/sdb4  vg0        lvm2 a--   39.98g 39.98g
    pvmove /dev/sdb1 /dev/sdb4
    vgreduce vg0 /dev/sdb1
      Removed "/dev/sdb1" from volume group "vg0"
    pvremove /dev/sdb1
      Labels on physical volume "/dev/sdb1" successfully wiped
    pvs
      PV         VG         Fmt  Attr PSize   PFree 
      /dev/sda3  vg_centos6 lvm2 a--  147.80g     0 
      /dev/sdb2  vg0        lvm2 a--   20.01g     0 
      /dev/sdb3  vg0        lvm2 a--   30.00g     0 
      /dev/sdb4  vg0        lvm2 a--   39.98g 29.99g
      
    // 挂载逻辑卷, 并查看内容, 没有问题

    删除整个逻辑卷


    // 先卸载mount挂载
    // 删除 /etc/fstab 中配置的开机自动挂载
    // lvremove 删除逻辑卷
    // vgremove 删除卷组
    // pvremove 删除物理卷
    // 使用fdisk更改硬盘物理分区
  • 相关阅读:
    python并发编程之gevent协程(四)
    python并发编程之asyncio协程(三)
    python并发编程之multiprocessing进程(二)
    python并发编程之threading线程(一)
    python设计模式之内置装饰器使用(四)
    python设计模式之装饰器详解(三)
    python设计模式之迭代器与生成器详解(五)
    EF code First数据迁移学习笔记
    15.02.13-代码小技巧
    Route学习笔记之Area的Route注册
  • 原文地址:https://www.cnblogs.com/haorong/p/10594841.html
Copyright © 2020-2023  润新知