美文网首页
Linux配置LVM

Linux配置LVM

作者: 暴走的初号机 | 来源:发表于2019-12-25 09:32 被阅读0次

    Linux LVM概念介绍及相关配置

    LVM简介

    LVM是Linux操作系统的逻辑卷管理器。 现在有两个Linux版本的LVM,分别是 LVM1,LVM2。LVM1是一种已经被认为稳定了几年的成熟产品,LVM2 是最新最好的LVM版本。 LVM2几乎完全向后兼容使用LVM1创建的卷,目前centos7以上版本默认都是使用的LVM2。

    简单来说,就是操作系统把一组物理磁盘先组成卷组,然后在该卷组上划分逻辑卷,不同的逻辑卷可以格式化成不同的文件格式,从而使得操作系统可以统一操作所有的存储资源,屏蔽了不同存储硬件的差异。

    LVM中的概念

    物理存储介质(The physical media)

    这里指系统的存储设备:硬盘,如:/dev/hda、/dev/sda等等,是存储系统最低层的存储单元。可以简单理解为:插在服务器上的一块硬盘设备。硬盘设备及硬盘分区可使用fdisk命令进行管理。

    PV(physical volume)

    物理卷在LVM管理系统最底层,基于整个物理硬盘或实际物理硬盘上的分区进行创建。可使用pvs命令查看pv信息。

    VG(volume group)

    卷组建立在物理卷上,一个卷组中至少要包括一个物理卷,卷组建立后可动态的添加卷到卷组中,一个逻辑卷管理系统工程中可有多个卷组。LVM卷组由一个或多个物理卷组成。通过卷组这个概念,可以方便的把不同的物理卷(对应到不同的物理磁盘)纳入到一个统一的卷组中进行管理。可使用vgs命令查看vg信息。

    LV(logical volume)

    逻辑卷建立在卷组基础上,卷组中未分配空间可用于建立新的逻辑卷,逻辑卷建立后可以动态扩展和缩小空间。在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。注意:xfs文件系统是不能缩减的,只能增加。可使用lvs命令查看lv信息。

    PE(physical extent)

    物理区域是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致,新的pv加入到vg后,pe的大小自动更改为vg中定义的pe大小。

    LE(logical extent)

    逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。卷组描述区域:卷组描述区域存在于每个物理卷中,用于描述物理卷本身、物理卷所属卷组、卷组中逻辑卷、逻辑卷中物理区域的分配等所有信息,它是在使用pvcreate建立物理卷时建立的。

    图1:磁盘分区/物理卷(PV)、卷组(VG)、逻辑卷(LV)之间的关系图

    使用LVM扩展逻辑卷

    下面以在虚拟机中挂载一个新的磁盘设备sdb为例,来看看具体如何在操作系统中扩展逻辑卷。

    1、查看当前目录下子目录占用容量(不是必须的,可以看下目前整体的磁盘使用情况)

    [root@localhost ~]# du -lh --max-depth=1
    8.0K    ./.cache
    4.0K    ./.dbus
    4.0K    ./.config
    4.0K    ./.ssh
    91M     ./docker
    2.0G    ./kubernetes
    4.0K    ./.docker
    0       ./.m2
    11M     ./apache-maven-3.5.4
    213M    ./localRepo
    1.1M    ./.basher
    2.3M    ./.kube
    3.2M    ./.helm
    62M     ./linux-amd64
    185M    ./alpinejre
    108K    ./auto-deploy-app
    208M    ./jre1.8.0_181
    20K     ./.oracle_jre_usage
    163M    ./springcloud
    383M    ./jdk1.8.0_191
    69M     ./.npm
    0       ./.npm-global
    371M    ./node_modules
    137M    ./apache-skywalking-apm-incubating
    333M    ./jira
    56K     ./.java
    11M     ./maven3
    0       ./.pki
    4.7G    .
    

    2、查看当前的磁盘设备使用情况

    [root@localhost ~]# fdisk -l
    
    磁盘 /dev/sda:75.2 GB, 75161927680 字节,146800640 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x000c0092
    
       设备 Boot      Start         End      Blocks   Id  System
    /dev/sda1   *        2048     1026047      512000   83  Linux
    /dev/sda2         1026048   104857599    51915776   8e  Linux LVM
    
    磁盘 /dev/sdb:107.4 GB, 107374182400 字节,209715200 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    
    
    磁盘 /dev/mapper/rhel-root:51.0 GB, 50994348032 字节,99598336 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    
    
    磁盘 /dev/mapper/rhel-swap:2164 MB, 2164260864 字节,4227072 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    [root@localhost ~]# lsblk
    NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    fd0             2:0    1    4K  0 disk 
    sda             8:0    0   70G  0 disk 
    ├─sda1          8:1    0  500M  0 part /boot
    └─sda2          8:2    0 49.5G  0 part 
      ├─rhel-root 253:0    0 47.5G  0 lvm  /
      └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]
    sdb             8:16   0  100G  0 disk 
    sr0            11:0    1 1024M  0 rom  
    [root@localhost ~]# df -hT
    文件系统              类型      容量  已用  可用 已用% 挂载点
    /dev/mapper/rhel-root xfs        48G   45G  3.4G   94% /
    devtmpfs              devtmpfs  5.9G     0  5.9G    0% /dev
    tmpfs                 tmpfs     5.9G  148K  5.9G    1% /dev/shm
    tmpfs                 tmpfs     5.9G   18M  5.9G    1% /run
    tmpfs                 tmpfs     5.9G     0  5.9G    0% /sys/fs/cgroup
    /dev/sda1             xfs       497M  118M  379M   24% /boot
    [root@localhost ~]# vgs
      VG   #PV #LV #SN Attr   VSize  VFree
      rhel   1   2   0 wz--n- 49.51g    0 
    [root@localhost ~]# lvs
      LV   VG   Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
      root rhel -wi-ao---- 47.49g                                             
      swap rhel -wi-ao----  2.02g                                             
    [root@localhost ~]# pvs
      PV         VG   Fmt  Attr PSize  PFree
      /dev/sda2  rhel lvm2 a--  49.51g    0
    

    这边我们先使用fdisk -l命令查看当前的磁盘设备,可以看到有sdasdb两块裸设备,容量分别为70G和100G,其中sda分了两个分区sda1和sda2。使用lsblk命令可以比较直观的看出其中的组织结构关系。系统中有一个名为/dev/sda2的pv,容量为49.5G,有一个名为rhel的vg卷组(目前只有/dev/sda2这个pv组成),rhel这个vg下有两个逻辑卷,分别是root和swap,其中/dev/mapper/rhel-root这个逻辑卷的挂载点为根目录,即意味着除了/dev/run/boot这些特殊目录,其他绝大部分的系统目录使用的都是rhel-root这个逻辑卷,这个lv的文件格式为xfs。所以我们这边的任务就是扩展这个rhel-root逻辑卷的容量

    从上面的信息来分析,可以看到其实sda这个设备的磁盘容量并没有被充分使用,所以我们这边第一步任务是为sda设备先创建新的分区,并把这部分容量扩充到rhel-root这个逻辑卷,第二步是把整个sdb设备加入rhel这个vg,并扩展到rhel-root这个lv。

    3、创建分区,扩展逻辑卷

    [root@localhost ~]# fdisk /dev/sda   //创建分区
     n 新建分区
     p 打印分区列表
     t 修改分区格式,LVM=8e
     w 保存分区信息到磁盘,退出
     q 不保存分区信息到磁盘,退出
    //先使用选项n创建一个名为/dev/sdb3的分区,都用默认选项就好。注意使用选项t修改分区格式,改为8e是lvm支持的格式
    [root@localhost ~]# partprobe  //发现新分区
    [root@localhost ~]# lsblk    //列出设备信息,可以看到有sda3这个分区了,容量为20G,即sda设备的剩余容量
    NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    fd0             2:0    1    4K  0 disk 
    sda             8:0    0   70G  0 disk 
    ├─sda1          8:1    0  500M  0 part /boot
    ├─sda2          8:2    0 49.5G  0 part 
    │ ├─rhel-root 253:0    0 47.5G  0 lvm  /
    │ └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]
    └─sda3          8:3    0   20G  0 part 
    sdb             8:16   0  100G  0 disk 
    sr0            11:0    1 1024M  0 rom  
    [root@localhost ~]# pvcreate /dev/sda3  //使用新分区创建pv
      Physical volume "/dev/sda3" successfully created
    [root@localhost ~]# vgextend rhel /dev/sda3  //将新的pv加入rhel这个vg
      Volume group "rhel" successfully extended
    [root@localhost ~]# lvextend -l +100%free /dev/rhel/root  //按百分比扩展LV
    #[root@localhost ~]# lvextend -L +1G /dev/rhel/root  //按指定容量扩展LV
      Extending logical volume root to 67.49 GiB
      Logical volume root successfully resized
    [root@localhost ~]# xfs_growfs /dev/mapper/rhel-root  //扩展xfs文件系统
    meta-data=/dev/mapper/rhel-root  isize=256    agcount=4, agsize=3112448 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=0
    data     =                       bsize=4096   blocks=12449792, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
    log      =internal               bsize=4096   blocks=6079, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    data blocks changed from 12449792 to 17691648
    [root@localhost ~]# df -hT  //这边看到,rhel-root这个逻辑卷的容量已经扩充为68G
    文件系统              类型      容量  已用  可用 已用% 挂载点
    /dev/mapper/rhel-root xfs        68G   45G   24G   66% /
    devtmpfs              devtmpfs  5.9G     0  5.9G    0% /dev
    tmpfs                 tmpfs     5.9G  148K  5.9G    1% /dev/shm
    tmpfs                 tmpfs     5.9G   18M  5.9G    1% /run
    tmpfs                 tmpfs     5.9G     0  5.9G    0% /sys/fs/cgroup
    /dev/sda1             xfs       497M  118M  379M   24% /boot
    

    4、如果是添加裸磁盘的话就更加方便,可以不分区,直接将整个设备创建为pv(pvcreate /dev/sdb),之后的操作是一样的,以下是将sdb设备加入进来后的最终情况。

    [root@localhost ~]# lsblk
    NAME          MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    fd0             2:0    1     4K  0 disk 
    sda             8:0    0    70G  0 disk 
    ├─sda1          8:1    0   500M  0 part /boot
    ├─sda2          8:2    0  49.5G  0 part 
    │ ├─rhel-root 253:0    0 167.5G  0 lvm  /
    │ └─rhel-swap 253:1    0     2G  0 lvm  [SWAP]
    └─sda3          8:3    0    20G  0 part 
      └─rhel-root 253:0    0 167.5G  0 lvm  /
    sdb             8:16   0   100G  0 disk 
    └─rhel-root   253:0    0 167.5G  0 lvm  /
    sr0            11:0    1  1024M  0 rom 
    [root@localhost ~]# pvs
      PV         VG   Fmt  Attr PSize   PFree
      /dev/sda2  rhel lvm2 a--   49.51g    0 
      /dev/sda3  rhel lvm2 a--   20.00g    0 
      /dev/sdb   rhel lvm2 a--  100.00g    0 
    [root@localhost ~]# vgs
      VG   #PV #LV #SN Attr   VSize   VFree
      rhel   3   2   0 wz--n- 169.50g    0 
    [root@localhost ~]# lvs
      LV   VG   Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
      root rhel -wi-ao---- 167.48g                                             
      swap rhel -wi-ao----   2.02g 
    [root@localhost ~]# df -hT
    文件系统              类型      容量  已用  可用 已用% 挂载点
    /dev/mapper/rhel-root xfs       168G   45G  124G   27% /
    devtmpfs              devtmpfs  5.9G     0  5.9G    0% /dev
    tmpfs                 tmpfs     5.9G  148K  5.9G    1% /dev/shm
    tmpfs                 tmpfs     5.9G   18M  5.9G    1% /run
    tmpfs                 tmpfs     5.9G     0  5.9G    0% /sys/fs/cgroup
    /dev/sda1             xfs       497M  118M  379M   24% /boot
    

    相关文章

      网友评论

          本文标题:Linux配置LVM

          本文链接:https://www.haomeiwen.com/subject/eyiqoctx.html