在如今,每台服务器空间都会因为我们的需求增长而不断扩展。逻辑卷可以用于RAID,SAN。单个物理卷将会被加入组以创建卷组,在卷组中,我们需要切割空间以创建逻辑卷。在使用逻辑卷时,我们可以使用某些命令来跨磁盘、跨逻辑卷扩展,或者减少逻辑卷大小,而不用重新格式化和重新对当前磁盘分区。卷可以跨磁盘抽取数据,这会增加I/O数据量。
逻辑卷管理LVM是一个多才多艺的硬盘系统工具。无论在Linux或者其他类似的系统,都是非常的好用。传统分区使用固定大小分区,重新调整大小十分麻烦。但是,LVM可以创建和管理“逻辑”卷,而不是直接使用物理硬盘。可以让管理员弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据。可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷。LVM并不需要重启就可以让内核知道分区的存在。
LVM使用分层结构,如下图所示。
图中顶部,首先是实际的物理磁盘及其划分的分区和其上的物理卷(PV)。一个或多个物理卷可以用来创建卷组(VG)。然后基于卷组可以创建逻辑卷(LV)。只要在卷组中有可用空间,就可以随心所欲的创建逻辑卷。文件系统就是在逻辑卷上创建的,然后可以在操作系统挂载和访问。
操作系统 —— 安装有LVM的CentOS 6.5
在此,我们可以使用下列命令查看到物理卷(PV),卷组(VG),逻辑卷(LV)。
# pvs
# vgs
# lvs
在使用新磁盘前,我们需要使用fdisk来对磁盘分区。通过使用fdisk,创建磁盘分区。我们需要创建3个1G分区,注意,并不要求分区的大小一致。同样,分区需要使用‘8e’类型来使他们可用于LVM。
# fdisk -cu /dev/sda
Command (m for help): n ## 新建
Command action
e extended
p primary partition (1-4)
p ## 主分区
Partition number (1-4): 1 ## 分区号
First cylinder (1-1044, default 1): ## 回车用默认的1
Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): +1G ## 大小
Command (m for help): t ## 改变类型
Selected partition 1
Hex code (type L to list codes): 8e ## LVM 的分区代码
Changed system type of partition 1 to 8e (Linux LVM)
接下来,请遵循以下步骤来创建新分区。
重复以上步骤,为另外2个磁盘sdb和sdc创建新分区。然后重启机器,使用fdisk命令来验证分区表。
# fdisk -l
现在,该使用3个磁盘来创建物理卷了。这里,我已经使用pvs命令将物理磁盘列了出来,现在只有一个默认的pvs被列出来了。
# pvs
然后,使用命令创建新的物理磁盘。
# pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1
或者
# pvcreate /dev/sda1
# pvcreate /dev/sdb1
# pvcreate /dev/sdc1
再次列出磁盘来查看新创建物理磁盘。
# pvs
或者
# pvdisplay
查看更详细信息
使用下列命令可以删除物理卷。
# pvremove /dev/sda1
使用可用的空闲PV来创建名为tecmintaddvg的卷组,PE大小为32。显示当前卷组,我们可以看到只有带有1个PV的一个卷组在使用。
# vgs
这将使用上面创建的3个物理卷创建名为tecmintaddvg的卷组,PE大小为32MB。
# vgcreate -s 32M tecmint_add_vg /dev/sda1 /dev/sdb1 /dev/sdc1
接下来,再次运行vgs命令来验证卷组。
# vgs
或者
# vgdisplay
从输出中,我们可以看见卷组的使用量/总量。物理卷给卷组提供空间。只要在这个卷组中还有可用空间,我们就可以随意创建逻辑卷。
理解vgs命令输出:
# vgs -v
# vgdisplay tecmint_add_vg
# vgremove tecmint_add_vg
现在,创建3个名为tecmint_documents,tecmint_manager和tecmint_public的逻辑卷。这里,我们可以看到如何分别以PE为单位和GB为单位来创建逻辑卷。
首先,使用以下命令来列出当前逻辑卷。
# lvs
这些逻辑卷处于vg_tecmint卷组中使用pvs命令来列出并查看有多少空闲空间可以创建逻辑卷。
# pvs
卷组大小为54GB,而且未被使用,所以我们可以在该组内创建LV。让我们将卷组平均划分大小来创建3个逻辑卷,就是说54GB/3 = 18GB,创建出来的单个逻辑卷应该会是18GB。
首先,让我们使用物理扩展(PE)为单位来创建逻辑卷。我们需要知道分配到该卷组的默认PE大小,以及总的可用PE大小来创建新的逻辑卷,运行下面的命令来获取使用中的卷组信息。
# vgdisplay tecmint_add_vg
只要用bc命令做一点小小的计算来看看就知道了。
# bc
1725PE/3 = 575 PE.
575 PE x 32MB = 18400 --> 18GB
按CRTL+D退出bc。现在让我们使用575个PE来创建3个逻辑卷。
# lvcreate -l (Extend size) -n (name_of_logical_volume) (volume_group)
# lvcreate -l 575 -n tecmint_documents tecmint_add_vg
# lvcreate -l 575 -n tecmint_manager tecmint_add_vg
# lvcreate -l 575 -n tecmint_public tecmint_add_vg
使用lvs命令来列出创建的逻辑卷。
# lvs
在使用GB大小创建逻辑卷时,我们不能获得精确的大小。因此,最好的办法是用扩展。
# lvcreate -L 18G -n tecmint_documents tecmint_add_vg
# lvcreate -L 18G -n tecmint_manager tecmint_add_vg
# lvcreate -L 18G -n tecmint_public tecmint_add_vg
# lvcreate -L 17.8G -n tecmint_public tecmint_add_vg
使用lvs命令来列出创建的逻辑卷。
# lvs
这里,我们可以看到,当创建第三个LV的时候,我们不能收集到18GB空间。这是因为尺寸有小小的改变,但在使用或者尺寸来创建LV时,这个问题会被忽略。
要使用逻辑卷,我们需要格式化。这里我使用ext4文件系统来创建卷,并打算挂载到/mnt。
# mkfs.ext4 /dev/tecmint_add_vg/tecmint_documents
# mkfs.ext4 /dev/tecmint_add_vg/tecmint_public
# mkfs.ext4 /dev/tecmint_add_vg/tecmint_manager
让我们在/mnt下创建目录,并将已创建好文件系统的逻辑卷挂载上去。
# mount /dev/tecmint_add_vg/tecmint_documents /mnt/tecmint_documents/
# mount /dev/tecmint_add_vg/tecmint_public /mnt/tecmint_public/
# mount /dev/tecmint_add_vg/tecmint_manager /mnt/tecmint_manager/
使用下面的命令来列出并确认挂载点。
# df -h
现在,这些逻辑卷是临时挂载上去的,要永久挂载,我们需要添加条目到fstab中。要达到这个目的,让我们使用下面的命令来获取挂载条目
# cat /etc/mtab
在输入来自mtab中的挂载条目内容时,我们需要在fstab中做些小小的改变,修改rw为默认。
# vim /etc/fstab
我们的fstab条目应该和下面的类似,使用wq!保存并退出fstab。
/dev/mapper/tecmint_add_vg-tecmint_documents /mnt/tecmint_documents ext4 defaults 0 0
/dev/mapper/tecmint_add_vg-tecmint_public /mnt/tecmint_public ext4 defaults 0 0
/dev/mapper/tecmint_add_vg-tecmint_manager /mnt/tecmint_manager ext4 defaults 0 0
获取mtab挂载条目*
打开fstab文件
添加自动挂载条目
重启前,执行mount -a命令来检查fstab条目。
# mount -av
验证fstab条目
这里,我们已经了解了怎样来使用逻辑卷构建灵活的存储,从使用物理磁盘到物理卷,物理卷到卷组,卷组再到逻辑卷。