首页 > 代码库 > LVM
LVM
Linux下LVM(逻辑卷管理)
在Linux系统安装伊始,Linux用户就会面临一个问题:如何给系统各个分区分配足够使用的磁盘空间。这个问题,当系统的存储空间即将用尽时显得尤为棘手。解决的办法通常是使用符号链接,或者一些调整分区大小的工具(如parted)对分区大小进行调整,但这只是一个暂时性的解决办法,不久后,我们又会面临同样的问题。
此外,每次这样的更改,都需要对分区表进行修改,又要对机器进行关机重启操作。这样的话,会对服务器上正在跑的业务造成一定的损失。LVM(逻辑卷管理)能够帮助我们解决这个问题。
一、LVM简介
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区添加其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。
与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储。它使系统管理员可以更方便的为应用与用户分配存储空间。在LVM管理下的存储卷可以按需要随时改变大小或添加移除(可能需对文件系统工具进行升级)。LVM也允许按用户组对存储卷进行管理,允许用户使用更直观的名称(如"sales‘、 ‘development‘)代替物理磁盘名(如‘sda‘、‘sdb‘)来标识存储卷。
因此,使用LVM主要是方便了对存储系统的管理,增加了系统的扩展性。
注:由四个磁盘分区可以组成一个很大的空间,然后在这些空间上划分一些逻辑分区,当一个逻辑分区的空间不够用的时候,可以从剩余空间上划分一些空间给空间不够用的分区使用。
二、LVM的基本术语
LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。首先我们要清楚以下几个术语所代表的含义:
物理存储介质(The physical media):
指硬盘,如:/dev/hda1、/dev/sda等,是存储系统最底层的存储单元。
物理卷PV(physicalvolume):
指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
卷组VG(Volume Group):
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
逻辑卷LV(logicalvolume):
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
PE(physical extent):
每一个物理卷被划分为大小相等的、称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
LE(logical extent):
逻辑卷也被划分为被称为LE(LogicalExtents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
简单来说就是:
PV:是物理的磁盘分区
VG:LVM中的物理的磁盘分区,也就是说PV必须加入VG,可以将VG理解为一个仓库或者是几个大的硬盘,一个VG中包含多个PV
LV:也就是从VG中划分的逻辑分区
注:每个PV有大小相等的PE组成(默认为4M);每个LV有大小相等的LE组成(默认为4M)
三、安装LVM
lsmod| grep dm_mod #查看device-mapper模块是否已经加载
若出现以下输出,即表明加载成功:
dm_mod 63097 4 dm_mirror,dm_multipath,dm_raid45,dm_log
否则,使用以下命令加载device-mapper模块:
modprobedm_mod
yuminstall lvm2 #安装LVM2
四、创建和管理LVM
1、创建分区
fdisk /dev/sdb #创建新分区,将整个磁盘都创建为两个个分区,分区号为sdb1和sdb2
t #更改分区类型为8e
w #保存分区设置
partprobe #使分区立即生效,否则需要重启系统
*LVM创建的大致过程
从硬盘驱动器分区中创建物理卷(physicalvolumes-PV)。
从物理卷中创建卷组(volumegroups-VG)
从卷组中创建逻辑卷(logicalvolumes-LV),并分派逻辑卷挂载点,其中只有逻辑卷才可以写数据。
2、创建PV
相关命令:
pvcreate 创建PV
pvscan 扫描PV
pvdisplay 显示PV
pvremove 删除PV
pvcreate /dev/sdb1
pvcreate /dev/sdb2 #使用pvcreate进行转换
pvdisplay #查看创建好的pv
3、创建VG(这里我们的VG中目前只有/dev/sdb1,如果以后VG的空间使用完,我们可以在添加其他硬盘扩充VG)
相关命令:
vgcreate 创建VG
vgscan 扫描目前系统上是否有VG存在
vgdispaly 显示VG状态
vgextend 在目前的VG中添加pv,即扩展VG
vgreduce 减小VG,即在目前的VG中移除pv
vgchange 配置VG是否启动(active)
vgremove 删除VG
vgcreate VG0 /dev/sdb1 /dev/sdb2 … #vgcreate 卷组名 物理卷1 物理卷2 …
vgdisplay #查看创建的VG状态
vgchange–ay VG0 #激活卷组
4、创建LV
lvcreate -L 800M –n LV1 VG0 #创建一个大小为800M,名为LV1的逻辑卷。其中L指定大小,n指定逻辑卷名称,VG0表示从VG0卷组中划分LV1
lvdisplay #查看创建的LV
5、LV格式化及挂载
mkfs.ext4 /dev/VG0/LV1
或者mkfs –text4 /dev/VG0/LV1 #格式化LV1
mkdir/mnt/lvm #创建逻辑卷挂载目录
mount/dev/VG0/LV1 /mnt/lvm #挂载
df–Thl #查看逻辑卷是否挂载上
最好是将LV1写入fstable文件中,放边其在启东市就能挂载。
eg:/dev/VG0/LV1 /mnt/lvm ext4 defaults 1 2
到此,LVM的完整过程已经创建完毕。
五、LVM容量调整
下面的这些内容,才是LVM真正强大的地方。LVM的容量调整可以再多个环节进行,无论是在PV卷,VG卷组还是LV上,都可以方便快速的进行容量调整。
一般情况下,我们对LVM分区大小的调整,都是从VG的剩余空间来扩展的。如果VG中没有剩余空间了,那么我们要通过添加PV给VG扩容。在没有现成的PV时,我们需要通过添加硬盘来创建PV。
1、使用fdisk添加一块物理分区,修改其分区类型为8e。
fdisk /dev/sdc
n
l #新建逻辑分区
1 #分区号设为1
t 8e #分区类型更改为8e
w #写入分区表
partprobe #重读分区表
mkfs.ext4 /dev/sdc1 #格式化
partx/dev/sdc #查看当前硬盘的分区表及使用情况
具体步骤,参见“创建和管理LVM”中的“创建分区”。
这里需要首先卸载掉原来挂载的LV1:
umount /dev/VG0/LV1
2、添加物理卷(这里假定新添加的物理分区为/dev/sdc1)
pvcreate /dev/sdc1
pvscan #浏览创建的物理卷,或者使用pvdisplay
3、对卷组进行扩容
vgdisplay
vgextend VG0 /dev/sdc1
4、对原来的LV进行扩容
这里我们已经对卷组VG0扩容完毕,也就是说,VG0中已经有空闲的空间可以提供给LV进行扩容。
lvdisplay
lvextend -L +500M /dev/VG0/LV1 #对LV1扩容500M
lvscan
resize2fs -f /dev/VG0/LV1 #使系统识别到更改容量后的系统
mount /dev/VG0/LV1 /mnt/lvm #对刚才卸载掉的LV1进行重新挂载
六、卸载LVM的方法
如果不想使用LVM的话,可以卸载它, 卸载的方法与分区的删除方法类似,就是最后创建的最先删除。顺序如下:
先删除LV
再删除VG
最后PV
以前的LVM的分区应用fdisk转换成其它类型的文件系统,当普通分区使用。
eg:1、df
2、umount/mnt/lvm
3、lvremove /dev/VG0/LV1 #删除逻辑卷
4、vgchange –a n VG0 #更改VG0为休眠状态
vgremove VG0 #删除卷组
5、pvscan
pvremove /dev/sdb1 /dev/sdb2 /dev/sdc1
6、使用fdisk修改磁盘的分区类型。一般的Linux文件系统类型为83。
LVM