• Linux学习(十五)LVM


    一、前言

    LVM,逻辑卷管理工具,它的作用是提供一种灵活的磁盘管理办法。通常我们的某个分区用完了,想要扩容,很麻烦。但是用lvm就可以很方便的扩容,收缩。

    看它的原理图:

    它的原理大致是:首先将磁盘做成物理卷,然后物理卷再组成卷组,卷组下面再划分逻辑卷。

    二、实现一个lvm

    步骤:

    2.1 做物理卷。

    首先看看我们的磁盘/dev/sdb的分区情况:

    [root@ruanwenwu02 ~]# fdisk -l /dev/sdb
    
    磁盘 /dev/sdb:4294 MB, 4294967296 字节,8388608 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x2f45f776
    
       设备 Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048     2099199     1048576   83  Linux
    /dev/sdb2         6293504     7931903      819200   83  Linux
    /dev/sdb3         2099200     6293503     2097152    5  Extended
    /dev/sdb5         2101248     4198399     1048576   83  Linux
    /dev/sdb6         4200448     5838847      819200   83  Linux

    接下来,我们把sdb1,sdb2,sdb5的分区id修改为8e:

    [root@ruanwenwu02 ~]# fdisk /dev/sdb
    欢迎使用 fdisk (util-linux 2.23.2)。
    
    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。
    
    
    命令(输入 m 获取帮助):t
    分区号 (1-3,5,6,默认 6):1
    Hex 代码(输入 L 列出所有代码):8e
    已将分区“Linux”的类型更改为“Linux LVM”
    
    命令(输入 m 获取帮助):t
    分区号 (1-3,5,6,默认 6):2
    Hex 代码(输入 L 列出所有代码):8e
    已将分区“Linux”的类型更改为“Linux LVM”
    
    命令(输入 m 获取帮助):t
    分区号 (1-3,5,6,默认 6):5
    Hex 代码(输入 L 列出所有代码):8e
    已将分区“Linux”的类型更改为“Linux LVM”
    
    命令(输入 m 获取帮助):p
    
    磁盘 /dev/sdb:4294 MB, 4294967296 字节,8388608 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x2f45f776
    
       设备 Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048     2099199     1048576   8e  Linux LVM
    /dev/sdb2         6293504     7931903      819200   8e  Linux LVM
    /dev/sdb3         2099200     6293503     2097152    5  Extended
    /dev/sdb5         2101248     4198399     1048576   8e  Linux LVM
    /dev/sdb6         4200448     5838847      819200   83  Linux
    
    Partition table entries are not in disk order

    如果是新创建的分区,找不到的话,使用partprobe命令刷新一下。

    运行pvcreate命令,创建物理卷(physical volum)

    [root@ruanwenwu02 ~]# pvs
    -bash: pvs: 未找到命令
    [root@ruanwenwu02 ~]# pvdisplay
    -bash: pvdisplay: 未找到命令

    发现这些命令都没有的话,那么就需要安装lvm2:

    [root@ruanwenwu02 ~]# yum install lvm2
    已加载插件:fastestmirror
    base                                                                                    | 3.6 kB  00:00:00     
    extras                                                                                  | 3.4 kB  00:00:00     
    updates                                                                                 | 3.4 kB  00:00:00     
    (1/2): extras/7/x86_64/primary_db                                                       | 129 kB  00:00:00     
    (2/2): updates/7/x86_64/primary_db  

    安装好之后,就可以使用pvcreate命令了:

    [root@ruanwenwu02 ~]# pvcreate /dev/sdb1
    WARNING: ext2 signature detected on /dev/sdb1 at offset 1080. Wipe it? [y/n]: y
      Wiping ext2 signature on /dev/sdb1.
      Physical volume "/dev/sdb1" successfully created.
    [root@ruanwenwu02 ~]# pvcreate /dev/sdb2
      Physical volume "/dev/sdb2" successfully created.
    [root@ruanwenwu02 ~]# pvcreate /dev/sdb5
      Physical volume "/dev/sdb5" successfully created.

    运行pvs或者pvdisplay命令能查看当前的物理卷:

    [root@ruanwenwu02 ~]# pvs
      PV         VG Fmt  Attr PSize   PFree  
      /dev/sdb1     lvm2 ---    1.00g   1.00g
      /dev/sdb2     lvm2 ---  800.00m 800.00m
      /dev/sdb5     lvm2 ---    1.00g   1.00g
    [root@ruanwenwu02 ~]# pvdisplay
      "/dev/sdb2" is a new physical volume of "800.00 MiB"
      --- NEW Physical volume ---
      PV Name               /dev/sdb2
      VG Name               
      PV Size               800.00 MiB
      Allocatable           NO
      PE Size               0   
      Total PE              0
      Free PE               0
      Allocated PE          0
      PV UUID               FS2sy9-BTxn-XzCz-6ZBH-fL04-r1mB-p2EH91
       
      "/dev/sdb5" is a new physical volume of "1.00 GiB"
      --- NEW Physical volume ---
      PV Name               /dev/sdb5
      VG Name               
      PV Size               1.00 GiB
      Allocatable           NO
      PE Size               0   
      Total PE              0
      Free PE               0
      Allocated PE          0
      PV UUID               6iKVQF-W01Z-1aMF-m1af-jmhX-Ff7c-r5QHcD
       
      "/dev/sdb1" is a new physical volume of "1.00 GiB"
      --- NEW Physical volume ---
      PV Name               /dev/sdb1
      VG Name               
      PV Size               1.00 GiB
      Allocatable           NO
      PE Size               0   
      Total PE              0
      Free PE               0
      Allocated PE          0
      PV UUID               lttH1f-3tce-mEpF-2ULq-nqmL-15SI-2ImIxc

    2.2 创建卷组

    [root@ruanwenwu02 ~]# vgcreate vg1 /dev/sdb
    sdb   sdb1  sdb2  sdb3  sdb5  sdb6  
    [root@ruanwenwu02 ~]# vgcreate vg1 /dev/sdb1 /dev/sdb2
      Volume group "vg1" successfully created
    [root@ruanwenwu02 ~]# vgcreate vg2 /dev/sdb5
      Volume group "vg2" successfully created
    [root@ruanwenwu02 ~]# vgs
      VG  #PV #LV #SN Attr   VSize    VFree   
      vg1   2   0   0 wz--n-    1.77g    1.77g
      vg2   1   0   0 wz--n- 1020.00m 1020.00m
    [root@ruanwenwu02 ~]# vgdisplay
      --- Volume group ---
      VG Name               vg2
      System ID             
      Format                lvm2
      Metadata Areas        1
      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                1
      Act PV                1
      VG Size               1020.00 MiB
      PE Size               4.00 MiB
      Total PE              255
      Alloc PE / Size       0 / 0   
      Free  PE / Size       255 / 1020.00 MiB
      VG UUID               aDXygA-rltJ-JWCQ-Nbvb-JML9-W3Hf-cVjG63
       
      --- Volume group ---
      VG Name               vg1
      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               1.77 GiB
      PE Size               4.00 MiB
      Total PE              454
      Alloc PE / Size       0 / 0   
      Free  PE / Size       454 / 1.77 GiB
      VG UUID               qxqwsD-oNGT-8ltJ-1Itj-IZfO-0rui-Yxvhh7

    使用vgs或者vgdisplay可以看到卷组。

    2.3 创建逻辑卷

    现在我们创建了两个卷组,一个是vg1的1.7G,一个是vg2的1G。接下来我们创建逻辑卷:

    [root@ruanwenwu02 ~]# lvcreate -L 200M -n lv1 vg1
      Logical volume "lv1" created.

    创建的逻辑需要被格式化之后才可以使用:

    [root@ruanwenwu02 ~]# mke2fs -t ext4 /dev/vg1/lv1 
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    块大小=1024 (log=0)
    分块大小=1024 (log=0)
    Stride=0 blocks, Stripe width=0 blocks
    51200 inodes, 204800 blocks
    10240 blocks (5.00%) reserved for the super user
    第一个数据块=1
    Maximum filesystem blocks=33816576
    25 block groups
    8192 blocks per group, 8192 fragments per group
    2048 inodes per group
    Superblock backups stored on blocks: 
            8193, 24577, 40961, 57345, 73729
    
    Allocating group tables: 完成                            
    正在写入inode表: 完成                            
    Creating journal (4096 blocks): 完成
    Writing superblocks and filesystem accounting information: 完成 

    我们采用的ext4的文件系统格式化的,使用xfs的文件系统格式化也是可以的。

    我们把格式化完成之后/dev/vg1/lv1挂载到/mnt目录下

    [root@ruanwenwu02 ~]# mkdir /mnt/vg1
    [root@ruanwenwu02 ~]# mount /dev/vg1/lv1 /mnt/vg1/
    [root@ruanwenwu02 ~]# df -h
    文件系统             容量  已用  可用 已用% 挂载点
    /dev/sda3             18G  1.4G   17G    8% /
    devtmpfs             479M     0  479M    0% /dev
    tmpfs                489M     0  489M    0% /dev/shm
    tmpfs                489M  6.8M  482M    2% /run
    tmpfs                489M     0  489M    0% /sys/fs/cgroup
    /dev/sda1            197M  109M   88M   56% /boot
    tmpfs                 98M     0   98M    0% /run/user/0
    /dev/mapper/vg1-lv1  190M  1.6M  175M    1% /mnt/vg1
    [root@ruanwenwu02 ~]# cat /etc/passwd >> /mnt/vg1/passwd
    [root@ruanwenwu02 ~]# cat !$
    cat /mnt/vg1/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    polkitd:x:998:996:User for polkitd:/:/sbin/nologin
    tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    ruanwenwu:x:1000:1000::/home/ruanwenwu:/bin/bash

    到这里,我们的逻辑卷创建也结束了。

    如果,我们要删除一个物理卷怎么操作呢?

    [root@ruanwenwu02 ~]# pvremove /dev/sdb2
      PV /dev/sdb2 is used by VG vg1 so please use vgreduce first.
      (If you are certain you need pvremove, then confirm by using --force twice.)
      /dev/sdb2: physical volume label not removed.
    [root@ruanwenwu02 ~]# man vdreduce
    没有 vdreduce 的手册页条目
    [root@ruanwenwu02 ~]# man vgreduce
    [root@ruanwenwu02 ~]# man vgreduce
    [root@ruanwenwu02 ~]# vgreduce vg1 /dev/sdb2
      Removed "/dev/sdb2" from volume group "vg1"
    [root@ruanwenwu02 ~]# vgs
      VG  #PV #LV #SN Attr   VSize    VFree   
      vg1   1   1   0 wz--n- 1020.00m  820.00m
      vg2   1   0   0 wz--n- 1020.00m 1020.00m
    [root@ruanwenwu02 ~]# pvs
      PV         VG  Fmt  Attr PSize    PFree   
      /dev/sdb1  vg1 lvm2 a--  1020.00m  820.00m
      /dev/sdb2      lvm2 ---   800.00m  800.00m
      /dev/sdb5  vg2 lvm2 a--  1020.00m 1020.00m
    [root@ruanwenwu02 ~]# pvremove /dev/sdb2
      Labels on physical volume "/dev/sdb2" successfully wiped.
    [root@ruanwenwu02 ~]# pvs
      PV         VG  Fmt  Attr PSize    PFree   
      /dev/sdb1  vg1 lvm2 a--  1020.00m  820.00m
      /dev/sdb5  vg2 lvm2 a--  1020.00m 1020.00m

    代码里碰到一个问题。如果一个物理卷已经被加入一个卷组里,需要使用vgreduce命令把这个物理卷从卷组里删除,然后再运行pvremove命令。

    除了删除物理卷之外,逻辑卷也是可以删除的,使用命令lvremove /dev/vg1/lv1。

    [root@ruanwenwu02 ~]# lvs
      LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv1  vg1 -wi-ao---- 200.00m                                                    
    [root@ruanwenwu02 ~]# lvremove /dev/vg1/lv1
      Logical volume vg1/lv1 contains a filesystem in use.
    [root@ruanwenwu02 ~]# pwd
    /root
    [root@ruanwenwu02 ~]# rm -rf /dev/vg1/lv1/*
    [root@ruanwenwu02 ~]# !lv
    lvremove /dev/vg1/lv1
      Logical volume vg1/lv1 contains a filesystem in use.
    [root@ruanwenwu02 ~]# umount /dev/vg1/lv1
    [root@ruanwenwu02 ~]# !lv
    lvremove /dev/vg1/lv1
    Do you really want to remove active logical volume vg1/lv1? [y/n]: y
      Logical volume "lv1" successfully removed
    [root@ruanwenwu02 ~]# lvs
    [root@ruanwenwu02 ~]# pvs
      PV         VG  Fmt  Attr PSize    PFree   
      /dev/sdb1  vg1 lvm2 a--  1020.00m 1020.00m
      /dev/sdb5  vg2 lvm2 a--  1020.00m 1020.00m

    现在我们再次将逻辑卷加回来:

    [root@ruanwenwu02 ~]# history|grep lvcreate
      235  lvcreate -L 200M -n lv1 vg1
      273  history|lvcreate
      274  history|grep lvcreate
    [root@ruanwenwu02 ~]# lvcreate -L 200M -n lv1 vg1
    WARNING: ext4 signature detected on /dev/vg1/lv1 at offset 1080. Wipe it? [y/n]: y
      Wiping ext4 signature on /dev/vg1/lv1.
      Logical volume "lv1" created.
    [root@ruanwenwu02 ~]# mke2fs -t ext4 /dev/vg1/lv1
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    块大小=1024 (log=0)
    分块大小=1024 (log=0)
    Stride=0 blocks, Stripe width=0 blocks
    51200 inodes, 204800 blocks
    10240 blocks (5.00%) reserved for the super user
    第一个数据块=1
    Maximum filesystem blocks=33816576
    25 block groups
    8192 blocks per group, 8192 fragments per group
    2048 inodes per group
    Superblock backups stored on blocks: 
            8193, 24577, 40961, 57345, 73729
    
    Allocating group tables: 完成                            
    正在写入inode表: 完成                            
    Creating journal (4096 blocks): 完成
    Writing superblocks and filesystem accounting information: 完成 
    
    [root@ruanwenwu02 ~]# lvs
      LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv1  vg1 -wi-a----- 200.00m                                                    
    [root@ruanwenwu02 ~]# mount /dev/vg1/lv1 /mnt/vg1/
    [root@ruanwenwu02 ~]# df -h
    文件系统             容量  已用  可用 已用% 挂载点
    /dev/sda3             18G  1.4G   17G    8% /
    devtmpfs             479M     0  479M    0% /dev
    tmpfs                489M     0  489M    0% /dev/shm
    tmpfs                489M  6.8M  482M    2% /run
    tmpfs                489M     0  489M    0% /sys/fs/cgroup
    /dev/sda1            197M  109M   88M   56% /boot
    tmpfs                 98M     0   98M    0% /run/user/0
    /dev/mapper/vg1-lv1  190M  1.6M  175M    1% /mnt/vg1

    到这里,我们的LVM基本上做完了。我们来梳理一下我们现有有了那些东西:

    物理卷:

    [root@ruanwenwu02 ~]# pvs
      PV         VG  Fmt  Attr PSize    PFree   
      /dev/sdb1  vg1 lvm2 a--  1020.00m  820.00m
      /dev/sdb5  vg2 lvm2 a--  1020.00m 1020.00m

    卷组:

    [root@ruanwenwu02 ~]# vgs
      VG  #PV #LV #SN Attr   VSize    VFree   
      vg1   1   1   0 wz--n- 1020.00m  820.00m
      vg2   1   0   0 wz--n- 1020.00m 1020.00m

    物理卷:

    [root@ruanwenwu02 ~]# lvs
      LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv1  vg1 -wi-ao---- 200.00m            

    三、接下来讲如何扩容。

    (先以ext4文件系统举例)

    [root@ruanwenwu02 ~]# lvs
      LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv1  vg1 -wi-ao---- 200.00m                                                    
    [root@ruanwenwu02 ~]# lvresize -L 300M /dev/vg1/lv1 
      Size of logical volume vg1/lv1 changed from 200.00 MiB (50 extents) to 300.00 MiB (75 extents).
      Logical volume vg1/lv1 successfully resized.
    [root@ruanwenwu02 ~]# df -h
    文件系统             容量  已用  可用 已用% 挂载点
    /dev/sda3             18G  1.4G   17G    8% /
    devtmpfs             479M     0  479M    0% /dev
    tmpfs                489M     0  489M    0% /dev/shm
    tmpfs                489M  6.8M  482M    2% /run
    tmpfs                489M     0  489M    0% /sys/fs/cgroup
    /dev/sda1            197M  109M   88M   56% /boot
    tmpfs                 98M     0   98M    0% /run/user/0
    /dev/mapper/vg1-lv1  190M  1.6M  175M    1% /mnt/vg1
    [root@ruanwenwu02 ~]# e2fsck -f /dev/vg1/lv1
    e2fsck 1.42.9 (28-Dec-2013)
    /dev/vg1/lv1 is mounted.
    e2fsck: 无法继续, 中止.

    这说明ext4文件系统扩容的话需要先umount:

    [root@ruanwenwu02 ~]# lvresize -L 300M /dev/vg1/lv1 
      Size of logical volume vg1/lv1 changed from 200.00 MiB (50 extents) to 300.00 MiB (75 extents).
      Logical volume vg1/lv1 successfully resized.
    [root@ruanwenwu02 ~]# df -h
    文件系统             容量  已用  可用 已用% 挂载点
    /dev/sda3             18G  1.4G   17G    8% /
    devtmpfs             479M     0  479M    0% /dev
    tmpfs                489M     0  489M    0% /dev/shm
    tmpfs                489M  6.8M  482M    2% /run
    tmpfs                489M     0  489M    0% /sys/fs/cgroup
    /dev/sda1            197M  109M   88M   56% /boot
    tmpfs                 98M     0   98M    0% /run/user/0
    /dev/mapper/vg1-lv1  190M  1.6M  175M    1% /mnt/vg1
    [root@ruanwenwu02 ~]# e2fsck -f /dev/vg1/lv1
    e2fsck 1.42.9 (28-Dec-2013)
    /dev/vg1/lv1 is mounted.
    e2fsck: 无法继续, 中止.
    
    [root@ruanwenwu02 ~]# umount /dev/vg1/lv1
    [root@ruanwenwu02 ~]# df -h
    文件系统        容量  已用  可用 已用% 挂载点
    /dev/sda3        18G  1.4G   17G    8% /
    devtmpfs        479M     0  479M    0% /dev
    tmpfs           489M     0  489M    0% /dev/shm
    tmpfs           489M  6.8M  482M    2% /run
    tmpfs           489M     0  489M    0% /sys/fs/cgroup
    /dev/sda1       197M  109M   88M   56% /boot
    tmpfs            98M     0   98M    0% /run/user/0
    [root@ruanwenwu02 ~]# lvresize -L 300M /dev/vg1/lv1
      New size (75 extents) matches existing size (75 extents).
    [root@ruanwenwu02 ~]# df -h
    文件系统        容量  已用  可用 已用% 挂载点
    /dev/sda3        18G  1.4G   17G    8% /
    devtmpfs        479M     0  479M    0% /dev
    tmpfs           489M     0  489M    0% /dev/shm
    tmpfs           489M  6.8M  482M    2% /run
    tmpfs           489M     0  489M    0% /sys/fs/cgroup
    /dev/sda1       197M  109M   88M   56% /boot
    tmpfs            98M     0   98M    0% /run/user/0
    [root@ruanwenwu02 ~]# mount /dev/vg1/lv1
    mount: 在 /etc/fstab 中找不到 /dev/vg1/lv1
    [root@ruanwenwu02 ~]# e2fsck /dev/vg1/lv1
    e2fsck 1.42.9 (28-Dec-2013)
    /dev/vg1/lv1: clean, 11/51200 files, 12115/204800 blocks
    [root@ruanwenwu02 ~]# resize2fs /dev/vg1/lv1
    resize2fs 1.42.9 (28-Dec-2013)
    请先运行 'e2fsck -f /dev/vg1/lv1'.
    
    [root@ruanwenwu02 ~]# resize2fs -f /dev/vg1/lv1
    resize2fs 1.42.9 (28-Dec-2013)
    Resizing the filesystem on /dev/vg1/lv1 to 307200 (1k) blocks.
    The filesystem on /dev/vg1/lv1 is now 307200 blocks long.
    
    [root@ruanwenwu02 ~]# lvs
      LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv1  vg1 -wi-a----- 300.00m                                                    
    [root@ruanwenwu02 ~]# mount /dev/vg1/lv1
    mount: 在 /etc/fstab 中找不到 /dev/vg1/lv1
    [root@ruanwenwu02 ~]# e2fsck -f /dev/vg1/lv1
    e2fsck 1.42.9 (28-Dec-2013)
    第一步: 检查inode,块,和大小
    第二步: 检查目录结构
    第3步: 检查目录连接性
    Pass 4: Checking reference counts
    第5步: 检查簇概要信息
    /dev/vg1/lv1: 11/77824 files (0.0% non-contiguous), 15987/307200 blocks
    [root@ruanwenwu02 ~]# lvresize /dev/vg1/lv1
      No command with matching syntax recognised.  Run 'lvresize --help' for more information.
    [root@ruanwenwu02 ~]# resize2fs /dev/vg1/lv1
    resize2fs 1.42.9 (28-Dec-2013)
    The filesystem is already 307200 blocks long.  Nothing to do!
    
    [root@ruanwenwu02 ~]# ls -ld /dev/vg1/lv1
    lrwxrwxrwx. 1 root root 7 11月  4 12:42 /dev/vg1/lv1 -> ../dm-0
    [root@ruanwenwu02 ~]# mount /dev/vg1/lv1 /mnt/vg1/
    [root@ruanwenwu02 ~]# df -h
    文件系统             容量  已用  可用 已用% 挂载点
    /dev/sda3             18G  1.4G   17G    8% /
    devtmpfs             479M     0  479M    0% /dev
    tmpfs                489M     0  489M    0% /dev/shm
    tmpfs                489M  6.8M  482M    2% /run
    tmpfs                489M     0  489M    0% /sys/fs/cgroup
    /dev/sda1            197M  109M   88M   56% /boot
    tmpfs                 98M     0   98M    0% /run/user/0
    /dev/mapper/vg1-lv1  287M  2.1M  266M    1% /mnt/vg1

    总结一下步骤:

     lvresize -L 300M  /dev/vg1/lv1  重新设置卷大小
    
     e2fsck -f /dev/vg1/lv1 检查磁盘错误  (ext4执行)
    
     resize2fs /dev/vg1/lv1 更新逻辑卷信息(ext4执行)
    
     xfs_growfs /dev/vg1/lv1  xfs文件系统需要执行

    到这里扩容就成功了。

    四、缩容

    步骤:

    缩减逻辑卷(xfs不支持)
     先umount
    
     e2fsck -f /dev/vg1/lv1 检查磁盘错误(ext)
    
     resize2fs /dev/vg1/lv1 100M 更新逻辑卷信息(ext)
    
     lvresize -L 100M  /dev/vg1/lv1  重新设置卷大小

    实验:

    [root@ruanwenwu02 ~]# umount /dev/vg1/lv1
    [root@ruanwenwu02 ~]# lvs
      LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv1  vg1 -wi-a----- 100.00m                                                    
    [root@ruanwenwu02 ~]# e2fsck -f /dev/vg1/lv1
    e2fsck 1.42.9 (28-Dec-2013)
    第一步: 检查inode,块,和大小
    第二步: 检查目录结构
    第3步: 检查目录连接性
    Pass 4: Checking reference counts
    第5步: 检查簇概要信息
    /dev/vg1/lv1: 11/25688 files (9.1% non-contiguous), 8896/102400 blocks
    [root@ruanwenwu02 ~]# resize2fs /dev/vg1/lv1 100M
    resize2fs 1.42.9 (28-Dec-2013)
    The filesystem is already 102400 blocks long.  Nothing to do!
    
    [root@ruanwenwu02 ~]# resize2fs /dev/vg1/lv1 50M
    resize2fs 1.42.9 (28-Dec-2013)
    Resizing the filesystem on /dev/vg1/lv1 to 51200 (1k) blocks.
    The filesystem on /dev/vg1/lv1 is now 51200 blocks long.
    
    [root@ruanwenwu02 ~]# lvresize -L 50M /dev/vg1/lv1
      Rounding size to boundary between physical extents: 52.00 MiB.
      WARNING: Reducing active logical volume to 52.00 MiB.
      THIS MAY DESTROY YOUR DATA (filesystem etc.)
    Do you really want to reduce vg1/lv1? [y/n]: y
      Size of logical volume vg1/lv1 changed from 100.00 MiB (25 extents) to 52.00 MiB (13 extents).
      Logical volume vg1/lv1 successfully resized.
    [root@ruanwenwu02 ~]# mount /dev/vg1/lv1 /mnt/vg1/
    [root@ruanwenwu02 ~]# df -h
    文件系统             容量  已用  可用 已用% 挂载点
    /dev/sda3             18G  1.4G   17G    8% /
    devtmpfs             479M     0  479M    0% /dev
    tmpfs                489M     0  489M    0% /dev/shm
    tmpfs                489M  6.8M  482M    2% /run
    tmpfs                489M     0  489M    0% /sys/fs/cgroup
    /dev/sda1            197M  109M   88M   56% /boot
    tmpfs                 98M     0   98M    0% /run/user/0
    /dev/mapper/vg1-lv1   45M  1.1M   40M    3% /mnt/vg1

    五、扩展卷组

    步骤:

    fdisk /dev/sdb  新增/dev/sdb5(逻辑分区8e)  2G
    
     pvcreate /dev/sdb5
    
     vgextend vg1 /dev/sdb5
    
     lvresize -L 100M  /dev/vg1/lv1  重新设置卷大小

    先创建一个分区,创建物理分区,将物理分区添加到卷组,然后重新分配卷大小。

    [root@ruanwenwu02 ~]# fdisk /dev/sdb
    欢迎使用 fdisk (util-linux 2.23.2)。
    
    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。
    
    
    命令(输入 m 获取帮助):t
    分区号 (1-3,5,6,默认 6):6
    Hex 代码(输入 L 列出所有代码):8e
    已将分区“Linux”的类型更改为“Linux LVM”
    
    命令(输入 m 获取帮助):q
    
    [root@ruanwenwu02 ~]# pvcreate /dev/sdb6
    WARNING: ext4 signature detected on /dev/sdb6 at offset 1080. Wipe it? [y/n]: y
      Wiping ext4 signature on /dev/sdb6.
      Physical volume "/dev/sdb6" successfully created.
    [root@ruanwenwu02 ~]# vgex
    vgexport  vgextend  
    [root@ruanwenwu02 ~]# vgex
    vgexport  vgextend  
    [root@ruanwenwu02 ~]# vgextend vg1 /dev/sdb6
      Volume group "vg1" successfully extended
    [root@ruanwenwu02 ~]# vgdisplay -v
      --- Volume group ---
      VG Name               vg2
      System ID             
      Format                lvm2
      Metadata Areas        1
      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                1
      Act PV                1
      VG Size               1020.00 MiB
      PE Size               4.00 MiB
      Total PE              255
      Alloc PE / Size       0 / 0   
      Free  PE / Size       255 / 1020.00 MiB
      VG UUID               aDXygA-rltJ-JWCQ-Nbvb-JML9-W3Hf-cVjG63
       
      --- Physical volumes ---
      PV Name               /dev/sdb5     
      PV UUID               6iKVQF-W01Z-1aMF-m1af-jmhX-Ff7c-r5QHcD
      PV Status             allocatable
      Total PE / Free PE    255 / 255
       
      --- Volume group ---
      VG Name               vg1
      System ID             
      Format                lvm2
      Metadata Areas        2
      Metadata Sequence No  9
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               1
      Max PV                0
      Cur PV                2
      Act PV                2
      VG Size               1.77 GiB
      PE Size               4.00 MiB
      Total PE              454
      Alloc PE / Size       13 / 52.00 MiB
      Free  PE / Size       441 / 1.72 GiB
      VG UUID               qxqwsD-oNGT-8ltJ-1Itj-IZfO-0rui-Yxvhh7
       
      --- Logical volume ---
      LV Path                /dev/vg1/lv1
      LV Name                lv1
      VG Name                vg1
      LV UUID                x6wfyb-ZMDC-eGmK-8TRH-cVX5-JZB2-u0ZYID
      LV Write Access        read/write
      LV Creation host, time ruanwenwu02, 2017-11-04 11:52:34 +0800
      LV Status              available
      # open                 1
      LV Size                52.00 MiB
      Current LE             13
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:0
       
      --- Physical volumes ---
      PV Name               /dev/sdb1     
      PV UUID               lttH1f-3tce-mEpF-2ULq-nqmL-15SI-2ImIxc
      PV Status             allocatable
      Total PE / Free PE    255 / 242
       
      PV Name               /dev/sdb6     
      PV UUID               QsRgrb-3vmW-Jte1-o5Qv-JvgZ-oNnO-MJkOoG
      PV Status             allocatable
      Total PE / Free PE    199 / 199

    六、命令整理:

    6.1 fdisk diskname -> t ->8e

    修改磁盘分区为lvm类型。

    6.2 pvcreate partionname

    创建物理分区

    6.4 pvremove 

    删除物理分区

    6.3 vgcreate vg1 /dev/sdb1 /dev/sdb2

    创建卷组

    6.4 vgremove

    移除卷组

    6.5 lvcreate -L 200M -n lv1 vg1

    创建逻辑卷

    6.6 lvresize -L 300M /dev/vg1/lv1

    扩容逻辑卷大小

    6.7 扩容之后的操作 

     e2fsck -f /dev/vg1/lv1 检查磁盘错误  (ext4执行)
    
     resize2fs /dev/vg1/lv1 更新逻辑卷信息(ext4执行)
    
     xfs_growfs /dev/vg1/lv1  xfs文件系统需要执行

    6.8 缩容操作

    先umount
    
     e2fsck -f /dev/vg1/lv1 检查磁盘错误(ext)
    
     resize2fs /dev/vg1/lv1 100M 更新逻辑卷信息(ext)
    
     lvresize -L 100M  /dev/vg1/lv1  重新设置卷大小

    6.9 列出卷组的详细信息

    [root@ruanwenwu02 ~]# vgdisplay -v
      --- Volume group ---
      VG Name               vg2
      System ID             
      Format                lvm2
      Metadata Areas        1
      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                1
      Act PV                1
      VG Size               1020.00 MiB
      PE Size               4.00 MiB
      Total PE              255
      Alloc PE / Size       0 / 0   
      Free  PE / Size       255 / 1020.00 MiB
      VG UUID               aDXygA-rltJ-JWCQ-Nbvb-JML9-W3Hf-cVjG63
       
      --- Physical volumes ---
      PV Name               /dev/sdb5     
      PV UUID               6iKVQF-W01Z-1aMF-m1af-jmhX-Ff7c-r5QHcD
      PV Status             allocatable
      Total PE / Free PE    255 / 255
       
      --- Volume group ---
      VG Name               vg1
      System ID             
      Format                lvm2
      Metadata Areas        2
      Metadata Sequence No  9
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               1
      Max PV                0
      Cur PV                2
      Act PV                2
      VG Size               1.77 GiB
      PE Size               4.00 MiB
      Total PE              454
      Alloc PE / Size       13 / 52.00 MiB
      Free  PE / Size       441 / 1.72 GiB
      VG UUID               qxqwsD-oNGT-8ltJ-1Itj-IZfO-0rui-Yxvhh7
       
      --- Logical volume ---
      LV Path                /dev/vg1/lv1
      LV Name                lv1
      VG Name                vg1
      LV UUID                x6wfyb-ZMDC-eGmK-8TRH-cVX5-JZB2-u0ZYID
      LV Write Access        read/write
      LV Creation host, time ruanwenwu02, 2017-11-04 11:52:34 +0800
      LV Status              available
      # open                 1
      LV Size                52.00 MiB
      Current LE             13
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:0
       
      --- Physical volumes ---
      PV Name               /dev/sdb1     
      PV UUID               lttH1f-3tce-mEpF-2ULq-nqmL-15SI-2ImIxc
      PV Status             allocatable
      Total PE / Free PE    255 / 242
       
      PV Name               /dev/sdb6     
      PV UUID               QsRgrb-3vmW-Jte1-o5Qv-JvgZ-oNnO-MJkOoG
      PV Status             allocatable
      Total PE / Free PE    199 / 199

    七、总结

    LVM的命令还是比较多的,有机会多看看多练练吧。

    坚持!
  • 相关阅读:
    23种设计模式
    Java实现动态代理的两种方式
    jQuery easyui combobox级联及内容联想
    使用Spring MVC统一异常处理
    springmvc下使用kaptcha做验证码
    Hadoop及spark介绍
    jQuery easyui 之 expend row
    Http 1.1协议
    公钥、私钥、CA认证、数字签名、U盾
    SOA架构介绍
  • 原文地址:https://www.cnblogs.com/doubilaile/p/7783123.html
Copyright © 2020-2023  润新知