CentOS下LVM分区简介

    LVM 是逻辑盘卷管理器( Logical Volume Manager )的简称,是一种分区管理机制。LVM 是建立在硬盘 和分区 之上的一个逻辑层,为文件系统屏蔽下层磁盘分区布局,从而提高磁盘分区管理的灵活性

要配置LVM,可以按以下步骤进行

  • 创建和初始化物理卷(Physical Volume),通过pvcreate建立pv,即pv阶段;
  • 添加物理卷到卷组(Volume Group),使用vgcreate加入多个pv成为vg,即vg阶段;
  • 在卷组上创建逻辑卷(logical volume),使用lvcreate划分vg,成为一个或多个lv,即lv阶段;

CentOS下LVM分区简介


将若干个磁盘分区连接为一个整块的卷组( Vloume group ),管理员可以在卷组上随意创建逻辑卷( logical volumes ),并进一步在逻辑卷上创建文件系统

xxx

物理区域 (Physical Extent, PE)

  • 每个 PV 又是由 PE 组成 类似于 Windows 下的分区格式化中的“簇”概念

  • PE 的大小默认为 4MB

  • PE 的大小一旦确定不能改变,同一 LG 中的所有 PV 的 PE 的大小又要一致

逻辑区域 (Logical Extent , LE )

  • LE 一一对映 PE ,所以 PE 单元为多大,映射到 LE 单元就是多大
  • 当 LVM 执行完成之后, LV 及 VG 的相关元数据保留在位于 PV 起始处的卷组描述符区域 Volume Group Descriptor Area ←这和 Windows 下的分区表是一样的
  • /boot 分区不能位于 LG 中,因为引导装载程序无法从逻辑卷中读取。必须为 /boot 单独分配一个主分区

XXX

物理卷 (Physical Volume, PV)

    PV 在 LVM 系统中处于最底层,PV 一般是整个硬盘、或硬盘上一个可用分区

卷组 (Volume Group, VG)

    建立在 PV 之上,可以由多个 PV 组成一个 VG ,也可以是单个.VG 创建之后,可以动态地添加 PV 到 VG 中,在 VG 上一个创建多个 LVM 分区(逻辑卷)

    一个 LVM 系统中可以包含多个 VG(注释:在这 LVM 系统中你可以把 VG 理解为实际的物理硬盘)

逻辑卷 ( Logical Volume, LV)

    LV 建立在 LV 之上(类似于 Windows下的对物理硬盘分区,或者是Linux下分出 /boot, /, Swap, /usr, /var, /tmp, /home等区域

    LV 创建后,大小可以改变.在 LV 上可以建立文件系统用于不同的分区,如/usr, /home

创建LVM


[root@Catdexin-PC ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    5G  0 disk
sdc               8:32   0    5G  0 disk
sdd               8:48   0    5G  0 disk

创建LVM要经过下面几步

  • 创建(标记)一个物理卷(PV)

    # pvcreate 盘路径
    [root@Catdexin-PC ~]# pvcreate /dev/sdb
      Physical volume "/dev/sdb" successfully created.
    
  • 创建卷组(VG)

    # vgcreate 组名 盘路径
    [root@Catdexin-PC ~]# vgcreate vg1 /dev/sdb
      Volume group "vg1" successfully created
    
  • 创建逻辑卷(LV)

    # lvcreate -L大小 -n 卷名 组名
    [root@Catdexin-PC ~]# lvcreate -L4G -n lv1 vg1
      Logical volume "lv1" created.
    
  • 格式化文件类型

    [root@Catdexin-PC ~]# mkfs.ext4 /dev/vg1/lv1
    
  • 创建挂载点

    [root@Catdexin-PC ~]# mkdir /mnt/lv1
    
  • 挂载

    [root@Catdexin-PC ~]# mount /dev/vg1/lv1 /mnt/lv1/
    
观察一下效果
[root@Catdexin-PC ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb               8:16   0    5G  0 disk
└─vg1-lv1       253:2    0    4G  0 lvm  /mnt/lv1
sdc               8:32   0    5G  0 disk

扩展LVM

准备工作

我们首先写满一个磁盘

[root@Catdexin-PC ~]# dd if=/dev/zero of=/mnt/lv1/1.txt bs=1M count=4000
dd: 写入"/mnt/lv1/1.txt" 出错: 设备上没有空间
记录了3872+0 的读入
记录了3871+0 的写出
4059762688字节(4.1 GB)已复制,3.50458 秒,1.2 GB/秒

现在 磁盘已经满了 可以使用语句查看一下

[root@Catdexin-PC ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/vg1-lv1  ext4      3.9G  3.8G   0  100% /mnt/lv1

查看PV信息

[root@Catdexin-PC ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <19.00g       0
  /dev/sdb   vg1    lvm2 a--   <5.00g 1020.00m

查看VG信息

[root@Catdexin-PC ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <19.00g    0
  vg1      1   1   0 wz--n-   3.99g 0.99g

VG扩容

  • 步骤一 创建PV卷

    [root@Catdexin-PC ~]# pvcreate /dev/sdc
      Physical volume "/dev/sdc" successfully created.
    
  • 步骤二 将PV卷添加到VG组中

    # vgextend 目标vg 目标pv
    [root@Catdexin-PC ~]# vgextend vg1 /dev/sdc
      Volume group "vg1" successfully extended
    

LV扩容

  • 步骤一 观察vg是否有剩余空间

    [root@Catdexin-PC ~]# vgs
      VG     #PV #LV #SN Attr   VSize   VFree
      centos   1   2   0 wz--n- <19.00g    0
      vg1      2   1   0 wz--n-   9.99g 5.99g
    
  • 步骤二 扩容lv

    # lvextend -L +4G 目标lv
    [root@Catdexin-PC ~]# lvextend -L +4G /dev/vg1/lv1
      Size of logical volume vg1/lv1 changed from 4.00 GiB (1024 extents) to 8.00 GiB (2048 extents).
      Logical volume vg1/lv1 successfully resized.
    
  • 步骤三 文件系统扩容

    # resize2fs 目标lv
    [root@Catdexin-PC ~]# resize2fs /dev/vg1/lv1
    resize2fs 1.42.9 (28-Dec-2013)
    Filesystem at /dev/vg1/lv1 is mounted on /mnt/lv1; on-line resizing required
    old_desc_blocks = 1, new_desc_blocks = 1
    The filesystem on /dev/vg1/lv1 is now 2097152 blocks long.
    
查看下效果
[root@Catdexin-PC ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/vg1-lv1     ext4      7.8G  3.8G  3.6G   52% /mnt/lv1

[root@Catdexin-PC ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb               8:16   0    5G  0 disk
└─vg1-lv1       253:2    0    8G  0 lvm  /mnt/lv1
sdc               8:32   0    5G  0 disk
└─vg1-lv1       253:2    0    8G  0 lvm  /mnt/lv1
上一篇:C++ void类型指针的使用


下一篇:C语言实现PV操作典型程序