一直想尝试用LVM(Logical Volume Manager)分区实现动态分配….因为Linux的分区管理个人觉得还是很操蛋的,虽然软件安装和临时文件的目录都做了严格的要求,但难免会出现分配了空间到时候出现某个挂载点空间不够的现象。

插一句题外话:OPPO Find7 使用onmi ROM就可以支持LVM分区,不过我没采用

目录:

基本概念

1、 物理卷—–PV(Physical Volume)
物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘。

2、 卷组——–VG(Volumne Group)
卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。

3、 逻辑卷—–LV(Logical Volume)
逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷要以属于同一个卷组,也可以属于不同的多个卷组。

4、 物理区域–PE(Physical Extent)
物理区域是物理卷中可用于分配的最小存储单元,物理区域的大小可根据实际情况在建立物理卷时指定。物理区域大小一旦确定将不能更改,同一卷组中的所有物理卷的物理区域大小需要一致。

5、 逻辑区域―LE(Logical Extent)
逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。

6、 卷组描述区域—–(Volume Group Descriptor Area)
卷组描述区域存在于每个物理卷中,用于描述物理卷本身、物理卷所属卷组、卷组中的逻辑卷及逻辑卷中物理区域的分配等所有信息,卷组描述区域是在使用pvcreate建立物理卷时建立的。


操作环境

Xubuntu 18.04 LTS
Xfce 4

一、划分LVM空间

首先为了简单上手,先打开GUI分区软件GParted
这里写图片描述
选择要使用LVM动态管理的分区,格式化为lvm2pv(LVM To Physical Volume )物理分区格式。
这里写图片描述
图中/dev/sda2 是fat32格式,到时候做EFI分区用于UEFI引导。
此时我只做了一个lvm2pv分区,所以只有一个pv,可以使用sudo fdisk -l查看
这里写图片描述

我们还可以用 sudo pvscan 看看到底有哪些pv
这里写图片描述

然后我们创建一个vg (Volume Group) 卷组,我个人的理解是:同一个vg中的空间大小是可以动态分配的,不论你插了多少个硬盘,只要他们在同一个vg中,就可以很简单的进行空间的改动。(类似于raid)

vgcreate用法:vgcreate vg名字 需要加入这个vg的pv分区

sudo vgcreate disk_lvm /dev/sda1

这里我创建了一个叫做disk_lvm的vg,并且加入了/dev/sda1这个pv分区
如果以后需要加入新的pv分区,可以使用:

sudo vgextend  vg名称  pv分区

之后我们可以用vgdisplay看看这个vg的详细内容

sudo vgdisplay

这里写图片描述

二、对卷组进行分区

接下来的操作和普通的分区十分相似,只是我们现在是在一个vg里面创建不同的lv (Logical Volume)逻辑卷。
我准备分为: / /home /usr /opt /swap

sudo lvcreate -L 分区大小+单位  -n  lv分区名称   vg名称  //创建分区
sudo lvremove 分区位置(/dev/disk_lvm/name)  //删除分区

这玩意貌似没有图形化工具可以用…
分区名字一定要自己看到就能知道这是啥分区….不然到时候有你受的

sudo lvcreate -L 30g -n root disk_lvm  // 创建了30G待会挂载到 /
sudo lvcreate -L 50g -n usr disk_lvm   // 创建了50G待会挂在到 /usr
sudo lvcreate -L 50g -n home disk_lvm   // 创建了50G待会挂在到 /home
//再来一个swap吧....不过我个人习惯是 /swap 直接用一个文件代替...不过lvm可以随便调整大小,分一个也问题不大
sudo lvcreate -L 2g -n swap disk_lvm

这里写图片描述
GParted里面不会直接显示lvm内的分区,但是能够通过LVM所在的lvm2pv分区属性中看到相应的逻辑卷
这里写图片描述
当然,我们还是可以使用lvdisplay查看信息
这里写图片描述

三、安装系统

这个大家肯定都会了,就不再赘述了。网上教程也一大把。安装的时候记得选择其他选项
这里写图片描述
不过我不知道如何选其他选项的时候能加密系统

进入磁盘分区界面:
这里写图片描述
此时我们的硬盘分区已经不再是/dev/sda这种格式了,已经变成了/dev/mapper/vg名称-lv名称
顺带把之前空出来的200M点FAT32分区变成EFI分区(我是GPT+UEFI)
这里写图片描述
这里的/dev/sda1就是我们用作lvm2pv的磁盘,可以看到大小就是整个pv的大小
这里写图片描述
和之前安装一样,根据需要设置不同的挂载点(因为大小可以随时更改..所以我分的有点随意)
这里写图片描述



附录.LVM常用命令

1、 物理卷命令

一般维护命令:

pvscan #在系统的所有磁盘中搜索已存在的物理卷
pvdisplay 物理卷全路径名称 #用于显示指定物理卷的属性。
pvdata 物理卷全路径名称 #用于显示物理卷的卷组描述区域信息,用于调试目的。
pvchange Cx|--allocation {y|n} 物理卷全路径名 #用于改变物理卷的分配许可设置物理卷的创建与删除命令
pvcreate 设备全路径名 #用于在磁盘或磁盘分区上创建物理卷初始化信息,以便对该物理卷进行逻辑卷管理。
pvmove 源物理卷全路径我[目的物理卷全路径名] #用于把某物理卷中的数据转移到同卷组中其他的特刊卷中。

2、 卷组命令

一般维护命令

vgscan #检测系统中所有磁盘
vgck [卷组名] #用于检查卷组中卷组描述区域信息的一致性。
vgdisplay [卷组名] #显示卷组的属性信息
vgrename 原卷组名 新卷组名
vgchange -a y|n [卷组名] #改变卷组的相应属性。是否可分配
vgchange -l 最大逻辑卷数 #卷组可容纳最大逻辑卷数
vgchange -x y|n [卷组名] #卷是否有效
vgmknodes [卷组名|卷组路径] #用于建立(重新建立)已有卷组目录和其中的设备文件卷组配置的备份与恢复命令
vgcfgbackup [卷组名] #把卷组中的VGDA信息备份到“/etc/lvmconf”目录中的文件
vgcfgrestore -n 卷组名 物理卷全路命名 #从备份文件中必得指定物理卷的信息卷组的建立与删除命令
vgcreate 卷组名 物理卷全路径名[物理卷全路径名]
vgmove 卷组名

卷组的扩充与缩小命令

vgextend 卷组名 物理卷全路径名[物理卷全路径名]
vgreduce 卷组名 物理卷全路径名[物理卷全路径名]

卷组的合并与拆分

vgsplit 现有卷组 新卷组 物理卷全路径名[物理卷全路径名]

卷组的输入与输出命令

vgexport 卷组名
vgimport 卷组名 卷组中的物理卷[卷组中的物理卷]

3、 逻辑卷命令

一般命令

lvscan
lvdisplay 逻辑卷全路径名[逻辑卷全路径名]
lvrename 旧逻辑卷全路径名 新逻辑卷全路径名
lvrename 卷组名 旧逻辑卷名 新逻辑卷名
lvchange
e2fsadm -L +|- 逻辑卷增减量 逻辑卷全路径名

逻辑卷的创建与删除命令

lvcreate
lvremove

逻辑卷的扩充与缩小命令

lvextend -L|--size +逻辑卷大小增量 逻辑卷全路径名
lvreduce q -L|--size +逻辑卷减小量 逻辑卷全路径名

4、 逻辑卷管理命令

lvmdiskscan #检测所有的SCSI、IDE等存储设备
lvmchange -R|--reset #复位逻辑卷管理器
lvmsadc [日志文件全路径名] #收信逻辑卷管理器读写统计信息,保存到日志文件中。
lvmsar 日志文件全路径名 #从lvmsadc命令生成的日志文件中读取并报告逻辑卷管理器的读写统计信息。

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐