特殊的filesystem:LVM

如果在安装初期,没有做好整个硬盘的规划,那么未来要新增磁盘空间,会很麻烦。这个问题在LVM面前,似乎影响不大,因LVM可以整合多个实体partition在一起,让这些partitions看起来就像是一个磁盘一样,而且,还可以在未来新增其它的实体partition到这个LVM管理的磁盘中,如此一来,整个磁盘空间的使用上,具有弹性。

 

1、PV(Physical Volume)物理卷

  (1) 实体磁盘,必须要将原本的磁盘,例:/dev/hda5, /dev/hda6等分区,利用fdisk命令,将他们的ID改为LVM(8e),并且修改磁盘的相关信息,称为LVM可使用的磁盘。ID定义:当使用fdisk -l看到

  的数据,ID83是Linux的partition,82则是Swap的代号,8e是LV代号 

2、VG(Volume Group)卷组

  (1) LVM主要目的就是建立VG,作用就是将刚刚一个或多个PV组合成为一个大磁盘,此最大容量与底下PE有关,如完全使用LVM默认参数,那么最大的LVM磁盘可达到256G

3、PE(Physical Extend)物理扩展

  (1) 默认大小4M,当PE为4M时,BG最大容量为256G,PE大小会影响到VG的最大值,如VG默认大于256G时,需改PE值

  (2) 注:一个VG最大可容65534个PE

4、LV(Logical Volume)LV 逻辑卷

  (1) LV最后被挂载到文件系统的parition,LV有VG分割,他会建立一个装置代号, 例:/dev/vgname/lvname

 

LV如何把数据写入硬盘中: 

1、线性模式(linear):假如我将 /dev/hda1, /dev/hdb1 这两个partition加入到VG中,并且整个VG只有一个LV时,那么所谓的线性模式就是:当 /dev/hda1的容量用完之后 /dev/hdb1的硬盘才会被使用到

2、交错模式(triped):就是我将一笔数据拆分成两部,分别写入 /dev/hda1 与 /dev/hdb1的意思,如此,一份数据用两颗硬盘来写入,理论上,读写的效能会比较好 

 注:LVM主要的用处是制造一个大磁盘,不是建立一个效能为主的磁盘,我们应该利用的是LVM可以弹性管理整个partition大小的用途上。一般使用线性模式,如使用交错模式,需注意,当任何一个partition【挂掉】时,所有的数据都会【损坏】。如强调备份与效能,直接使用RAID即可,不使用LVM

  

好了上面讲了这么多理论,下面来实践一下

1、我们先准备已经分好区硬盘,分别如下,磁盘分区可参考:https://www.cnblogs.com/xiangbing123/p/13680103.html

linux逻辑卷管理(LVM)

修改Id为8e,这里的Id上面已经说明,哈哈,就不啰嗦了

linux逻辑卷管理(LVM)

我想要制作一个LVM的磁盘出来,首先将 /dev/hdb1, hdb2这个两个partition加入到LVM中。

 

2、建立PV 

PV相关命令: 

 (1)pvcreate:将实体partition建立为PV

 (2)pvscan:搜寻目前系统里面任何具有PV的磁盘

 (3)pvdisplay:显示出目前系统上面的PV状态

 (4)pvremove:将PV属性移除,让改partition不具有PV属性

 (5)partprobe:这个命令可以让核心立刻读入最新的partition table而不需reboot

linux逻辑卷管理(LVM)

这里我们建立了两个PV,可以通过pvscan 与 pvdisplay查看

linux逻辑卷管理(LVM)

  

3、建立VG

相关命令:

(1)vgcreate:建立VG命令

(2)vgsan:搜寻系统上面是否有VG

(3)vgdisplay:显示目前系统上面的VG状态

(4)vgextend:在VG内增加额外的PV

(5)vgreduce:在VG内移除PV

(6)vgchange:设定VG是否启动(active)

(7)vgremove:删除一个VG

注:VG名称可自己取,PV名称就是partition的装置代号

linux逻辑卷管理(LVM)

linux逻辑卷管理(LVM)

linux逻辑卷管理(LVM)

  

4、建立LV

定义:

将创造出VG大磁盘后,在建立分割区,这个分割区就是所谓的LV

相关命令:

(1)lvcreate:建立LV

(2)lvscan:查询系统上面的LV

(3)lvdisplay:显示系统上面的LV状态

(4)lvextend:在LV里添加容量

(5)lvreduce:在LV里减少容量

(6)lvremove:删除一个LV

(7)lvresize:对LV进行容量大小的调整

将整个vbirdvg分配给vbirdlv

格式:lvcreate -L [sizeMG] -n [LVname] VGname

参数:

-L:后面接容量,容量的单位可以是M,G等

-n:后面接的就是LV的名称

linux逻辑卷管理(LVM)

现在整个partition准备好了,只需格式化,挂载就可使用啦

 

5、partition格式化与挂载

格式化为 ext4格式

mkfs -t ext4 /dev/vbirdvg/vbirdlv

mkdir /mnt/lvm

mount -t ext4 /dev/vbirdvg/vbirdlv /mnt/lvm

哈哈,上面做了这么多,终于可以验收成果了,快使用以下命令查看吧

df :查看磁盘使用情况

linux逻辑卷管理(LVM)

fdisk -l /dev/hdb:查看/dev/hdb分区

linux逻辑卷管理(LVM) 

6、增加逻辑卷

如果中途需要增加分区怎么办呢,步骤基本一致,创建好之后。细心的会发现 lv 已经增加了,但是 /dev/vbirdvg/vbirdlv 却没有加大。这是因为我们的ext4主要信息在最初规划时,就已经写入super block,同时 inode 与 block 数量优势固定的,所以没有变化。我们可以通过 resize2fs命令处理

格式:resize2fs [-f] [device] [size]

参数:

-f:强制进行 resize 的动作

[device]:装置代号

[size]:可加可不加,如加上需要给一个单位,M 或 G ,如不加默认【整个分区partition】的容量来处理

linux逻辑卷管理(LVM) 

7、删除步骤:

上面讲了这么多创建与增加逻辑卷,假如某一天我们不使用了怎么删除呢,其实删除很简单,我们按照创建顺序倒着删除即可。

1、取消挂载

2、使用lvremove移除LV

3、使用vgchange -a n VGname 让 VGname 这个 VG 不具有Active标志

4、使用vgremove移除VG

5、使用pvremove移除PV

6、最后,使用fdisk修改ID即可

linux逻辑卷管理(LVM)

linux逻辑卷管理(LVM)