LVM那些事

  在我们部署操作系统时,如果没有进行手动分区,采取默认的分区策略的话,就会发现,一些目录挂载的并不是普通磁盘:

  就像图里看到的,出现了LVMmapper的字样,我们通过总结LVM技术来解释下这里看到的LVMmapper是什么。

什么是LVM

  LVM(Logical Volume Manager)是Linux环境下对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。简单来说,LVM技术将若干个磁盘分区连接为一个整块的卷组Volume Group,然后管理员可以在卷组内创建逻辑卷Logical Volume,而逻辑卷可以当做普通的硬盘分区一样格式化,然后将其挂载到我们需要的目录上。正是因为逻辑卷LV的动态可控,从而可以在不影响现有数据的情况下,调整磁盘大小。这里需要明确一下,LVM技术虽然引入了额外的操作,但大部分情况下的使用对硬盘性能的影响是可以忽略不计的(除非使用了LVM的快照功能,会影响写入速度)

LVM工作原理

  LVM技术首先将物理硬盘,格式化成了物理卷Physical Volume,而PV实际上是一块块大小固定的Physical Extend构成的。然后,把一个或多个PV放到一起就形成了卷组VG。最终基于VG创建逻辑卷的过程就是从VG中拿出指定数量的PE。所谓的动态调整,也就是增减PE的数量。

示例分析

  回到一开始我们提到的系统默认安装时使用的LVM技术,我们知道LVM底层依赖PV的存在,通过pvs命令可以查看默认创建的PV:

[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <19.00g    0 
[root@localhost ~]# 

  我们可以通过vgdisplay来查看卷组情况,下面是CentOS默认安装时生成的卷组:

[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <19.00 GiB
  PE Size               4.00 MiB
  Total PE              4863
  Alloc PE / Size       4863 / <19.00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               Bw2jrn-Kqsc-dP0g-J7A6-Bgj2-WrPo-2rtD9X

[root@localhost ~]# 

  查询卷组中创建的逻辑卷命令为lvdisplay,这里我们看到有两块逻辑卷分别是/dev/centos/swap和/dev/centos/root:

[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                h0i0f8-oJ3l-Wj6y-fqt5-Wy2P-bWRD-fT3u2u
  LV Write Access        read/write
  LV Creation host, time localhost, 2019-05-01 14:14:27 -0400
  LV Status              available
  # open                 2
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                P4943K-e0OB-h0Sr-Hair-otF6-uWCW-jDcvXD
  LV Write Access        read/write
  LV Creation host, time localhost, 2019-05-01 14:14:28 -0400
  LV Status              available
  # open                 1
  LV Size                <17.00 GiB
  Current LE             4351
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

[root@localhost ~]# 

  然而,我们一开始看到挂载到根目录的并不是这里的/dev/centos/root,而是/dev/mapper/centos-root,这是为什么呢?实际上这是linux在使用LVM技术管理磁盘时的一种映射方式。/dev/mapper/centos-root表示的是系统当前叫作centos的卷组VG下的root这块LV。而这两个路径下文件实际上最终都指向了同一个块设备dm-0:

清除LVM

  有时候我们可能并不想使用LVM技术,只是单纯地在硬盘上存储数据。虽然通过LVM技术存储数据的硬盘是可以被另一台服务器通过LVM扫描识别到的,但在没有LVM的环境下会很麻烦。做过LVM的磁盘在本机上是无法直接格式化的,这里给出清除LVM的步骤:

# 1、根据df -h的回显获得当前挂载LV的mapper路径,然后使用lvremove对该路径上的映射磁盘进行移除LV
# 2、根据vgdisplay的回显获得当前磁盘所在VG的名称,然后执行vgremove移除这个卷组VG
# 3、现在就可以对硬盘使用mkfs -f进行强制格式化操作了

发表评论

评论列表,共 0 条评论

    暂无评论