# 基本概念

参考资料:

# LVM含义

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

# 物理卷

物理卷(Physical Volume,PV),指的是磁盘分区,也可以是整个硬盘或已创建的软RAID,是LVM的基本存储设备。使用pvdisplay或pvscan来查询物理卷列表。

# 卷组

卷组(Volume Group,VG),由一个或多个物理卷所组成的存储池,在卷组上能创建一个或多个逻辑卷。使用vgdisplay或vgscan来查看卷组。

# 逻辑卷

类似于非LVM系统中的硬盘分区,建立在卷组之上,是一个标准的块设备,在逻辑卷上可以建立文件系统。使用lvdisplay或lvscan来查看逻辑卷的列表。

# 相互关系

PV可比作地球的一个板块,VG则是一个地球,我们可以在意识上把一个区域划分成亚洲欧洲美洲,他们就是LV。

lvm

# 相应场景

# 硬盘扩容

虚拟机linux系统硬盘容量不够,如何扩容?

  1. 先在virtualbox或vmware中添加物理内存:

    virtualbox1

    virtualbox2

  2. 进入linux系统,输入下面命令查看目前硬盘状况。

    fdisk -l

    fdisk1

  3. 发现物理内存已经扩充,但是并没有添加到分区里面。现在fdisk /dev/sda来进行操作:

    1. 输入F来查看空闲空间的起始和结束扇区。
    2. 输入n来增加一个分区,输入p来增加primary类型硬盘。
    3. 提示输入起始扇区,输入按F查看的起始扇区数,同样结束扇区也是输入查看得到结束扇区。
    4. 再按F来查看空余空间,如果显示下面这样就OK。

      Unpartitioned space /dev/sda: 0 B, 0 bytes, 0 sectors

    5. 输入wq,保存分区表并退出。
  4. 使用fdisk -l会发现已经有sda3,并且分配好了空间,现在把这部分空间扩展到已有空间中。

    1. 给sda3创建物理卷:pvcreate /dev/sda3。
    2. 使用vgscan来查询逻辑卷名称。
    3. 将sda3的物理卷加入当前物理卷:使用vgextend 物理卷 /dev/sda3 来扩容当前物理卷。

      vgextend debianDevEnv-vg /dev/sda3

    4. 扩展已有逻辑分区:使用lvextend -L +29.77G 要扩容的逻辑分区名。

      lvextend -L +29.77G /dev/debianDevEnv-vg/root
      使用改vg所有剩余空间扩容:
      lvextend -l +100%FREE /dev/vgdata/lv_data

    5. 对文件系统扩容:使用xfs_growfs 要扩容的逻辑分区名 或者 resize2fs –f 要扩容的逻辑分区名来进行扩展。

      resize2fs -f /dev/debianDevEnv-vg/root
      xfs_growfs /dev/debianDevEnv-vg/root

    6. 使用df -h确认已经增加分区容量。

# 增加硬盘

  1. 在Hyper-V中增加一块4t硬盘。注意优化参数:

    New-VHD -Path C:\MyVHDs\test.vhdx -SizeBytes 4096GB -Dynamic -BlockSizeBytes 1MB
    mkfs.ext4 -G 4096 /dev/sdX1

  2. fdisk -l发现已经增加了一块硬盘需要格式化。因为该硬盘超过2t,故使用parted分区。

    parted /dev/sdb
    p # 查看有几个分区
    # 改成gpt格式,mbr最多支持2T
    mklabel gpt
    mkpart primary ext4 2048s 100%
    # 开始分区
    #mkpart
    #sdb1
    #ext4
    #0
    #4398GB
    #Ignore
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
  3. 到此上面的sdb1分区可以挂载使用了,但是担心以后数据盘不够用,所以把它LVM化。

    1. apt install lvm2
    2. 建立PV:

      pvcreate /dev/sdb1

    3. 建立vg:

      vgcreate vg_data /dev/sdb1

    4. 创建lv:

      lvcreate -L 大小 -n lvName VGName
      lvcreate -L 4000G -n maindata vg_data
      lvcreate -l 100%VG -n maindata vg_data
      lsblk

    5. 格式化lv:

      mkfs -t ext4 -G 4096 /dev/vg_data/maindata

    6. 挂载lv:

      mount /dev/vg_data/maindata /root/maindata
      df -h /maindata

    7. 放在fstab中:

      /dev/vg_data/maindata /root/maindata ext4 defaults 0 0

# 常用命令

  • df -h:查看系统文件系统使用情况。

  • 物理卷操作(不常用):pvscan、pvdisplay、pvcreate

  • 卷组操作:vgscan(扫描)、vgdisplay(显示)、vgcreate、vgremove、vgextend(扩容)

  • 逻辑卷操作:lvscan、lvdisplay、lvcreate、lvremove、lvextend

  • 查看逻辑卷的类型:

    lsblk -f
    blkid /dev/mapper/<逻辑卷名称>
    
    1
    2