一、引言
写这篇文章的初衷是因为自己研究的项目驱动,具体情况如下:我我现在搭建了一个三节点的hadoop集群,然后每个节点除了一个128GB的SSD之外,还有9个SATA的插槽,现在上面有三块3TB的SATA,我把Hadoop的生态系统部署在了SSD上,然后想把hdfs的数据全部存储到SATA上,所以就需要对现有的SATA进行整合,我在磁盘阵列和LVM两项技术之中选择了LVM。这篇文章就是介绍如何使用LVM技术管理多块SATA物理存储盘。
二、具体操作
注意:
1)下述所有操作均在root账户下操作
2)每个节点我有4块盘,分别为/dev/sda、/dev/sdb、/dev/sdc和/dev/sdd,sda为centos 7挂载盘,现在我要通过LVM技术将sdb、sdc和sdd三块盘进行整理
1.使用fdisk命令对每一块物理盘进行分区,并将分区类型设为LVM,下面以sdb为例具体命令如下
fdisk /dev/sdb
之后会进入到磁盘管理命令行,在Command (m for help):处使用如下fdisk指令:
n
l
t
8e
w
其中,
- n:表示添加一个新的分区,要求输入分区的起始和终止位置,由于我是想利用全部磁盘空间,所以我没有输入分区的起始和终止位置,使用的其默认的位置(即直接按enter即可)。
- l:表示显示可用的分区类型,此处我是用来查看LVM的分区系统ID(8e)
- t:改变分区系统ID
- 8e:为LVM分区系统ID
- w:将分区表写入磁盘
通过上述方法,就在sdb中建好了一个分区为sdb1。同理,分别在剩下的sdc和sdd两块盘中新建分区sdc1和sdd1。
2.创建物理卷
通过pvcreate命令创建物理卷:
pvcreate /dev/sdb1
pvcreate /dev/sdc1
pvcreate /dev/sdd1
可以通过pvs命令查看已有的物理卷,如下所示:
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 111.30g 4.00m
/dev/sdb1 vg lvm2 a-- 2.00t 2.00t
/dev/sdc1 vg lvm2 a-- 2.00t 2.00t
/dev/sdd1 vg lvm2 a-- 2.00t 2.00t
3.创建卷组
通过命令vgcreate创建卷组,并通过命令vgextend将其他的物理卷加至卷组中:
vgcreate vg /dev/sdb1
vgextend vg /dev/sdc1
vgextend vg /dev/sdd1
其中vg为卷组名,可通过vgs命令查看已有卷组,如下所示:
VG #PV #LV #SN Attr VSize VFree
centos 1 3 0 wz--n- 111.30g 4.00m
vg 3 0 0 wz--n- 6.00t 6.00t
4.创建逻辑卷
通过lvcreate命令创建逻辑卷,如下所示:
lvcreate -l 100%FREE -n lv vg
lv为逻辑卷名称,vg为物理卷名称。其中,
- -l:指定分配给新逻辑卷的逻辑块数,或者要用的逻辑块的百分比,此处我选择的是100%全用
- -n:指定逻辑卷的名称
可以通过lvs命令查看已有的逻辑卷,如下所示:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- 53.36g
root centos -wi-ao---- 50.06g
swap centos -wi-ao---- 7.88g
lv vg -wi-a----- 6.00t
5.为4中创建的逻辑卷创建文件系统
mkfs.xfs /dev/vg/lv
6.在系统上挂载上述创建的逻辑卷
mkdir /mnt/mylv
mount /dev/vg/lv /mnt/mylv/
修改/etc/fstab文件,设为开机自动挂载,在末尾添加如下这一行
/dev/vg/lv /mnt/mylv xfs defaults 0 0
7.将/home/hadoop用户目录下的hadoopdir移至/mnt/mylv中
cp -r /home/hadoop/hadoopdir /mnt/mylv/
8.给/mnt/mylv/hadoopdir目录设置权限
chown -R hadoop:hadoop /mnt/mylv/hadoopdir
9.将/home/hadoop目录下的hadoopdir目录删除或者设为.bak文件
mv /home/hadoop/hadoopdir /home/hadoop/hadoopdir.bak
10.在/home/hadoop目录下创建指向/mnt/mylv/hadoopdir的软链接
ln -s /mnt/mylv/hadoopdir /home/hadoop/hadoopdir
在/home/hadoop目录下可通过ll命令查看此软链接
至此,就完成了多块物理磁盘的空间整合了。
可以用pvdisplay,vgdisplay和lvdisplay命令查看物理卷、卷组和逻辑卷。下面是lvdisplay的结果,只截取了我创建的lv逻辑卷的相关信息:
--- Logical volume ---
LV Path /dev/vg/lv
LV Name lv
VG Name vg
LV UUID X2B1Dk-pA9K-LOpj-3y4i-hdXi-1V0a-0sHtDq
LV Write Access read/write
LV Creation host, time slave1, 2016-12-15 19:28:51 +0800
LV Status available
# open 0
LV Size 6.00 TiB
Current LE 1572861
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:3
三、相关说明及思考
1.上述使用到的命令可以查看文档了解如何使用
2.在上述LVM过程中有一个奇怪的现象,我的3块3TB的SATA盘在LVM之后,显示的都是有2TB了,剩下的1TB被吃掉了,我暂时没有找到原因,先记一笔,后面再探究的时候找原因。