• LVM逻辑卷管理的知识总结和操作说明


    lvm的步骤
    1:把磁盘或磁盘分区创建为pv物理卷
    2:创建卷组vg,把pv加入已有卷组vg或把pv加入刚创建的卷组
    3:在卷组vg中创建lv并分配空间,或对vg中现有lv扩展空间:
    4:新建的lv必须格式化才能挂载路径使用,如果是已有lv并且已经挂载过路径,扩展空间后不需要格式化

    重要知识点
    1、服务端对磁盘扩展了空间,但是这个扩展的空间并不会在原来已经划分出来的分区/dev/sdb1上自动扩展,而只是扩展了/dev/sdb,这个时候需要重新创建分区/dev/sdb2来使用扩展的磁盘,把/dev/sdb2加到/dev/sdb1对应的lv中
    2、如果是把磁盘分区创建为pv物理卷,磁盘分区类型必须是linux lvm,即通过8e把分区格式从linux改为linux lvm,磁盘创建为pv物理卷没有这个要求
    3、partprobe可以刷新系统分区表的变化
    4、如果是新增空间,第一要先使用pvscan看哪些磁盘或哪些磁盘分区加入了pv,再使用vgscan看哪些pv已经使用了
    5、如果需要扩展lv空间并使lv对应的挂载目录能看到扩展后的空间,必须使用resize2fs,如lvextend -L 9G /dev/vg_1/lv_1 --resizefs
    6、新建lv并分配空间,此空间必须小于等于vgdisplay里面看到的可用空间,所以新建的lv是没有使用过的空间,也就解释了为什么新建的lv必须格式化才能挂载目录
    7、如果lvextend -L 25G /dev/vg_1/lv_1 --resizefs 再执行df -lh发现磁盘的空间没有扩展, 或resize2fs /dev/vg_1/lv_1报错,则使用xfs_growfs /dev/vg_1/lv_1,因为 linux7 文件系统是xfs,所以不能使用resize2fs了,需要用xfs_growfs
    [root@pgdev ~]# resize2fs /dev/vg_1/lv_1
    resize2fs 1.42.9 (28-Dec-2013)
    resize2fs: Bad magic number in super-block while trying to open /dev/vg_1/lv_1
    Couldn’t find valid filesystem superblock.
    8、disk磁盘做PV并使用这个PV创建VG,并用这个VG创建LV,再挂载LV为目录/pgdata,后面直接扩展disk磁盘,lvm配置下该/pgdata目录不会自动扩展,需要pvresize和lvextend -l +100%FREE /dev/vg_name/lv_name --resizefs才能让该挂载目录/pgdata扩展
    9、想把vg的剩余所有空间扩展给名为/dev/vg_1/lv_1,如果执行lv1挂载的目录也自动扩展需要加上–resizefs,即如下
    lvextend -l +100%FREE /dev/vg_1/lv_1
    resize2fs /dev/vg_1/lv_1
    以上两条命令可以合并为lvextend -l +100%FREE /dev/vg_1/lv_1 --resizefs

    LVM的一些查看命令:pvscan、pvdisplay 、vgscan、vgdisplay、lvscan、lvdisplay
    Pv为物理卷,创建方式为pvcreate /sda/sda1
    Vg为卷组,创建方式为vgcreate 卷组名 /sda/sda1
    Lv为逻辑卷,创建方式为lvcreate –n 逻辑卷名 –l 2G卷组名

    查看LVM的VG对应的磁盘分区的命令是pvscan

    新增一个磁盘,建立新的VG

    1、服务器新增一块磁盘/dev/sdb,大小10G,fdisk -l看不到,执行如下后可以看到了

    [root@FRSPGSQLDEV2 ~]# ls /sys/class/scsi_host/
    host0  host1  host2
    [root@FRSPGSQLDEV2 ~]# echo "- - -" > /sys/class/scsi_host/host0/scan
    [root@FRSPGSQLDEV2 ~]# echo "- - -" > /sys/class/scsi_host/host1/scan
    [root@FRSPGSQLDEV2 ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、对这块盘划分为LVM分区,创建分区后,使用8e把分区格式从linux改为linux lvm

    [root@FRSPGSQLDEV2 ~]# fdisk /dev/sdb
    Command (m for help): n
    Select (default p): p
    Partition number (1-4, default 1): 
    First sector (2048-20971519, default 2048):
    Command (m for help): t
    Hex code (type L to list all codes): 8e
    Command (m for help): p
    Command (m for help): w
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3、将该分区创建为物理卷PV

    [root@FRSPGSQLDEV2 ~]# pvcreate /dev/sdb1
    
    • 1

    4、将该物理卷PV创建为卷组VG,名称为vg_1,此时还没有/dev/vg_1这个目录

    [root@FRSPGSQLDEV2 ~]# vgcreate vg_1 /dev/sdb1
    
    • 1

    5、从名为vg_1的VG中创建名为lv_1的lv,并划分3GB,创建成功后可以看到/dev/vg_1/lv_1,之前没有/dev/vg_1这个父目录的

    [root@FRSPGSQLDEV2 ~]# lvcreate -n lv_1 -L 3G vg_1
    
    • 1

    6、格式化lv,并挂载该lv到目录/data

    [root@FRSPGSQLDEV2 ~]# mkfs.ext4 /dev/vg_1/lv_1
    [root@FRSPGSQLDEV2 ~]# mount /dev/vg_1/lv_1 /data
    
    • 1
    • 2

    7、通过vgdisplay、lvdisplay可以看到vg_1还有7G空间,lv1只分配了3G,还有,继续扩展lv1为9G

    [root@FRSPGSQLDEV2 ~]# lvextend -L 9G /dev/vg_1/lv_1
    [root@FRSPGSQLDEV2 ~]# resize2fs /dev/vg_1/lv_1
    
    • 1
    • 2

    –以上只执行第一个命令的话,/data目录的空间不会显示新增空间,需要执行resize2fs
    以上两条命令可以合并为lvextend -L 9G /dev/vg_1/lv_1 --resizefs

    磁盘新增空间,追加空间到已有VG
    1、磁盘/dev/sdb增加10G空间,变成20G,此时无法把新增的10G追加到/dev/sdb1,只能重新创建分区/dev/sdb2

    [root@FRSPGSQLDEV2 ~]# fdisk /dev/sdb
    Command (m for help): n
    Select (default p): p
    Partition number (2-4, default 2):
    First sector (20971520-41943039, default 20971520):
    Command (m for help): t
    Hex code (type L to list all codes): 8e
    Command (m for help): p
    Command (m for help): w
    Select (default p): p
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2、将该分区创建为物理卷PV

    [root@FRSPGSQLDEV2 ~]# partprobe
    [root@FRSPGSQLDEV2 ~]# pvcreate /dev/sdb2
    
    • 1
    • 2

    3、将该物理卷PV扩展到名称为vg_1的卷组VG

    [root@FRSPGSQLDEV2 ~]# vgextend vg_1 /dev/sdb2
    
    • 1

    4、通过vgdisplay、lvdisplay可以看到vg_1还有11G空间,lv1只分配了9G,还有,继续扩展lv1为19G

    [root@FRSPGSQLDEV2 ~]# lvextend -L 19G /dev/vg_1/lv_1 --resizefs
    
    • 1

    新增一块磁盘,追加空间到已有VG,并创建新的lv
    1、新增磁盘/dev/sdc,空间10G,把磁盘创建为物理卷

    [root@FRSPGSQLDEV2 ~]# pvcreate /dev/sdc
    
    • 1

    2、将该物理卷PV扩展到名称为vg_1的卷组VG

    [root@FRSPGSQLDEV2 ~]# vgextend vg_1 /dev/sdc
    
    • 1

    3、通过vgdisplay、lvdisplay可以看到vg_1还有11G空间,lv1只分配了19G,还有,继续扩展lv1为25G,这样vg_1就只剩5G了

    [root@FRSPGSQLDEV2 ~]# lvextend -L 25G /dev/vg_1/lv_1 --resizefs
    
    • 1

    4、vg_1剩余的5G继续创建出一个新的lv2

    [root@FRSPGSQLDEV2 ~]# lvcreate -n lv_2 -L 3G vg_1
    
    • 1

    5、格式化lv2,并挂载该lv到目录/data2

    [root@FRSPGSQLDEV2 ~]# mkfs.ext4 /dev/vg_1/lv_2
    [root@FRSPGSQLDEV2 ~]# mount /dev/vg_1/lv_2 /data2
    
    • 1
    • 2

    disk磁盘做PV并使用这个PV创建VG,并用这个VG创建LV,再挂载LV为目录/pgdata,后面直接扩展disk磁盘,lvm配置下该/pgdata目录会自动扩展吗?
    已经实验,不会自动扩展,需要pvresize和lvextend -l +100%FREE /dev/vg_name/lv_name --resizefs才能让该/pgdata扩展

    1、把10G的磁盘/dev/sdb创建为pv物理卷

    root@FRSBachDEV3:~# fdisk -l |grep sdb
    Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors
    root@FRSBachDEV3:~# pvcreate /dev/sdb
      Physical volume "/dev/sdb" successfully created.
    root@FRSBachDEV3:~# pvscan
      PV /dev/sda3   VG ubuntu-vg       lvm2 [<78.00 GiB / 0    free]
      PV /dev/sdb                       lvm2 [10.00 GiB]
      Total: 2 [<88.00 GiB] / in use: 1 [<78.00 GiB] / in no VG: 1 [10.00 GiB]
    root@FRSBachDEV3:~# pvdisplay
      "/dev/sdb" is a new physical volume of "10.00 GiB"
      --- NEW Physical volume ---
      PV Name               /dev/sdb
      VG Name
      PV Size               10.00 GiB
      Allocatable           NO
      PE Size               0
      Total PE              0
      Free PE               0
      Allocated PE          0
      PV UUID               ZaHTI8-gKcE-ffWa-EX1R-Jhxr-JCJc-rkiczP
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    2、将该物理卷PV /dev/sdb创建为卷组VG vg_postgres

    root@FRSBachDEV3:~# vgcreate vg_postgres /dev/sdb
      Volume group "vg_postgres" successfully created
    root@FRSBachDEV3:~# vgscan
      Found volume group "vg_postgres" using metadata type lvm2
      Found volume group "ubuntu-vg" using metadata type lvm2
    root@FRSBachDEV3:~# vgdisplay
      --- Volume group ---
      VG Name               vg_postgres
      System ID
      Format                lvm2
      Metadata Areas        1
      Metadata Sequence No  3
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               0
      Max PV                0
      Cur PV                1
      Act PV                1
      VG Size               <10.00 GiB
      PE Size               4.00 MiB
      Total PE              2559
      Alloc PE / Size       2559 / <10.00 GiB
      Free  PE / Size       0 / 0
      VG UUID               Wy1OSZ-nfgm-puHx-A0Au-GTzx-nS7v-b3ZErb
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    3、从名为vg_postgres的VG中创建名为lv_postgres的lv,并划分10GB

    root@FRSBachDEV3:~# lvcreate -n lv_postgres -L 10G vg_postgres
      Logical volume "lv_postgres" created.
    root@FRSBachDEV3:~# lvscan
      ACTIVE            '/dev/vg_postgres/lv_postgres' [<10.00 GiB] inherit
      ACTIVE            '/dev/ubuntu-vg/ubuntu-lv' [<78.00 GiB] inherit
    root@FRSBachDEV3:~# lvdisplay
      --- Logical volume ---
      LV Path                /dev/vg_postgres/lv_postgres
      LV Name                lv_postgres
      VG Name                vg_postgres
      LV UUID                6uTT1c-ieXz-SSJE-6dNf-tDdz-XCOe-Fs0y0Y
      LV Write Access        read/write
      LV Creation host, time FRSBachDEV3, 2023-10-13 03:39:11 +0000
      LV Status              available
      # open                 0
      LV Size                <10.00 GiB
      Current LE             2559
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    4、格式化名为lv_postgres的lv,并挂载该lv到目录/pgdata

    [root@FRSPGSQLDEV2 ~]# mkfs.ext4 /dev/vg_postgres/lv_postgres
    [root@FRSPGSQLDEV2 ~]# mount /dev/vg_postgres/lv_postgres /pgdata
    
    • 1
    • 2

    5、给扩展/dev/sdb 20GB使之总容量为30GB,但是pv的空间没有自动扩展还是只有10GB

    root@FRSBachDEV3:~# fdisk -l |grep sdb
    Disk /dev/sdb: 30 GiB, 32212254720 bytes, 62914560 sectors
    root@FRSBachDEV3:/pgdata# lsblk
    NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
    sda                         8:0    0    80G  0 disk
    ├─sda1                      8:1    0     1M  0 part
    ├─sda2                      8:2    0     2G  0 part /boot
    └─sda3                      8:3    0    78G  0 part /
    sdb                         8:16   0    30G  0 disk
    └─vg_postgres-lv_postgres 253:0    0    10G  0 lvm  /pgdata
    root@FRSBachDEV3:/pgdata# pvscan
      PV /dev/sdb    VG vg_postgres     lvm2 [<10.00 GiB / 0    free]
      PV /dev/sda3   VG ubuntu-vg       lvm2 [<78.00 GiB / 0    free]
      Total: 2 [87.99 GiB] / in use: 2 [87.99 GiB] / in no VG: 0 [0   ]
    root@FRSBachDEV3:~# pvdisplay
      --- Physical volume ---
      PV Name               /dev/sdb
      VG Name               vg_postgres
      PV Size               10.00 GiB / not usable 4.00 MiB
      Allocatable           yes (but full)
      PE Size               4.00 MiB
      Total PE              2559
      Free PE               0
      Allocated PE          2559
      PV UUID               ZaHTI8-gKcE-ffWa-EX1R-Jhxr-JCJc-rkiczP
    root@FRSBachDEV3:~# df -h |grep lv_postgres
    /dev/mapper/vg_postgres-lv_postgres  9.8G   44K  9.3G   1% /pgdata
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    6、需要执行pvresize才能使pv扩展的20GB信息展示出来,以此同时vg也自动出现了20GB的可用空间,但是lv没有出现20GB的可用空间,挂载的磁盘/pgdata的总容量也没有扩展

    root@FRSBachDEV3:/pgdata# pvresize /dev/sdb
      Physical volume "/dev/sdb" changed
      1 physical volume(s) resized or updated / 0 physical volume(s) not resized
    root@FRSBachDEV3:/pgdata# pvscan
      PV /dev/sdb    VG vg_postgres     lvm2 [<30.00 GiB / 20.00 GiB free]
      PV /dev/sda3   VG ubuntu-vg       lvm2 [<78.00 GiB / 0    free]
      Total: 2 [107.99 GiB] / in use: 2 [107.99 GiB] / in no VG: 0 [0   ]
    root@FRSBachDEV3:/pgdata# vgdisplay
      --- Volume group ---
      VG Name               vg_postgres
      System ID
      Format                lvm2
      Metadata Areas        1
      Metadata Sequence No  4
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               1
      Max PV                0
      Cur PV                1
      Act PV                1
      VG Size               <30.00 GiB
      PE Size               4.00 MiB
      Total PE              7679
      Alloc PE / Size       2559 / <10.00 GiB
      Free  PE / Size       5120 / 20.00 GiB
      VG UUID               Wy1OSZ-nfgm-puHx-A0Au-GTzx-nS7v-b3ZErb
    root@FRSBachDEV3:/pgdata# lvdisplay
      --- Logical volume ---
      LV Path                /dev/vg_postgres/lv_postgres
      LV Name                lv_postgres
      VG Name                vg_postgres
      LV UUID                6uTT1c-ieXz-SSJE-6dNf-tDdz-XCOe-Fs0y0Y
      LV Write Access        read/write
      LV Creation host, time FRSBachDEV3, 2023-10-13 03:39:11 +0000
      LV Status              available
      # open                 1
      LV Size                <10.00 GiB
      Current LE             2559
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:0
    root@FRSBachDEV3:~# df -h |grep lv_postgres
    /dev/mapper/vg_postgres-lv_postgres  9.8G   44K  9.3G   1% /pgdata
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    7、把名为vg_postgres的vg的剩余所有空间扩展给名为lv_postgres的lv并–resizefs,此时/pgdata的总容量扩展了

    root@FRSBachDEV3:/pgdata# lvextend -l +100%FREE /dev/vg_postgres/lv_postgres --resizefs
      Size of logical volume vg_postgres/lv_postgres changed from <10.00 GiB (2559 extents) to <30.00 GiB (7679 extents).
      Logical volume vg_postgres/lv_postgres successfully resized.
    root@FRSBachDEV3:/pgdata# lvdisplay
      --- Logical volume ---
      LV Path                /dev/vg_postgres/lv_postgres
      LV Name                lv_postgres
      VG Name                vg_postgres
      LV UUID                6uTT1c-ieXz-SSJE-6dNf-tDdz-XCOe-Fs0y0Y
      LV Write Access        read/write
      LV Creation host, time FRSBachDEV3, 2023-10-13 03:39:11 +0000
      LV Status              available
      # open                 1
      LV Size                <30.00 GiB
      Current LE             7679
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:0
    root@FRSBachDEV3:~# df -h |grep lv_postgres
    /dev/mapper/vg_postgres-lv_postgres   30G   44K   29G   1% /pgdata
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
  • 相关阅读:
    网络安全系列-三十七: 针对PCAP数据包进行探索性分析示例
    java毕业设计开题报告javaweb户籍管理系统|户口
    阿里技术大牛亲自编写,将高难度的 Java 高并发知识讲解得浅显易懂
    内存问题难定位,那是因为你没用 ASAN
    运维大数据平台的建设与实践探索
    Stream 流式编程:并行流
    【Camera KMD ISP SubSystem笔记】CAM SYNC与DRQ③
    我的创作纪念日
    Python-sqlparse解析SQL工具库一文详解(二)
    思科 Packet Tracer实验(一)
  • 原文地址:https://blog.csdn.net/lusklusklusk/article/details/133808901