背景
线上新加7台服务器,每台除了100G系统盘外,还挂载了4*4T硬盘,准备用LVM做成一块16T逻辑盘。此处记录一下。
步骤如下
说明
安装Parted分区工具,Parted支持2T以上的硬盘,fdisk分区工具最大支持2T硬盘。MBR分区格式最大支持2T空间;gpt分区格式可以支持大于2T。
yum install parted
1、查看软件及磁盘信息
首先查看软件是否安装:
[root@q-bi-01 ~]# rpm -qa |grep lvm
lvm2-2.02.177-4.el7.x86_64
lvm2-libs-2.02.177-4.el7.x86_64
查看磁盘情况
[root@q-bi-05 ~]# fdisk -l
Disk /dev/vda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0005fc9a
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 209715199 104856576 83 Linux
Disk /dev/vdb: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/vdc: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/vdd: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/vde: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
2、使用Parted进行分区
[root@q-bi-03 ~]# parted /dev/vdb
GNU Parted 3.1
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel
New disk label type? gpt
(parted) mkpart
Partition name? []?
File system type? [ext2]? xfs
Start? 0T
End? 4T
(parted) p
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 4001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 4001GB 4001GB
(parted) set 1 lvm on
(parted) p
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 4001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 4001GB 4001GB lvm
(parted) q
Information: You may need to update /etc/fstab.
现在让我们来解释一下操作:
mklabel将磁盘转换为gpt分区,因为MBR分区无法支持TB级硬盘(具体请自行查阅,parted当然也支持TB级以下的操作)
mkpart将转换好的gpt磁盘进行分区,需要提供文件系统类型、开始点、结束点。
输入p 打印出刚才才做后生成的分区。
set 1 lvm on 是将num为1的分区,设置为LVM ,这样才能添加到vm卷组里
3、创建PV、VG、LV
PV
把/dev/vdb1 /dev/vdc1 /dev/vdd1 /dev/vde1设置为PV
pvcreate /dev/vdb1 /dev/vdc1 /dev/vdd1 /dev/vde1
查看已有PV
pvdisplay
VG
创建名称为bi_vg的卷组,包含如下PV:/dev/vdb1 /dev/vdc1 /dev/vdd1 /dev/vde1
vgcreate bi_vg /dev/vdb1 /dev/vdc1 /dev/vdd1 /dev/vde1
查看vg
vgdisplay
LV
创建1个16T的逻辑卷bi_lv从卷组bi_vg
lvcreate –L 16T –n bi_lv bi_vg
把卷组bi_vg所有的空间创建一个逻辑卷bi_lv
lvcreate -l 100%VG -n bi_lv bi_vg
把卷组bi_vg剩余的空间创建一个逻辑卷bi_lv
lvcreate -l 100%FREE -n bi_lv bi_vg
此命令类似上面一个
lvcreate --name bi_lv -l 100%FREE bi_vg
以上4种命令可以任选其一。
查看Lv
lvdisplay
创建了一个名字为bi_lv,容量大小是16T的分区,其中:-L:指定LV的大小 -n:指定LV的名。bi_vg:表示从这个VG中划分LV;
扩容
把剩余的空间都加到/dev/bi_vg/lv_bdata逻辑卷中。
lvextend -l 100%VG /dev/bi_vg/lv_bdata
使扩容生效
xfs_growfs /dev/bi_vg/lv_bdata
resize2fs命令 针对的是ext2、ext3、ext4文件系统
xfs_growfs命令 针对的是xfs文件系统
4、LV格式化及挂载
格式化逻辑卷
mkfs.xfs /dev/bi_vg/bi_lv
创建挂载点
mkdir –p /data
挂载磁盘
mount /dev/bi_vg/bi_lv /data
如果要在系统启动的时候启动LV,可以写入fstab中。
/dev/bi_vg/bi_lv /data xfs noatime,defaults 0 0
5、扩容当前分区
此情况适合服务器上快没有空间了,又新加一块磁盘,这有点扯远了。
pvcreate /dev/hda6
vgdisplay
#查看当前已经存在的VG信息,以存在VG:VolGroup00为例
vgextend VolGroup00 /dev/hda6
#扩展VolGroup00
lvdisplay
#查看已经存在的LV信息,以存在LV:LogVol01为例
lvextend –L +1G /dev/VolGroup00/LogVol01
#扩展LV. ext2/ext3/ext4文件系统的调整命令是resize2fs
resize2fs /dev/VolGroup00/LogVol01
#执行该重设大小,对于当前正在使用的LogVol01有效
df –h
#查看挂载情况,已经扩容
6、 扩展知识
LVM基本术语
LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。首先我们讨论以下几个LVM术语:
物理存储介质(The physical media):这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。
物理卷(physical volume):物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
卷组(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
逻辑卷(logical volume):LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
简单来说就是:
PV:是物理的磁盘分区
VG:LVM中的物理的磁盘分区,也就是PV,必须加入VG,可以将VG理解为一个仓库或者是几个大的硬盘。
LV:也就是从VG中划分的逻辑分区
如下图所示PV、VG、LV三者关系:
当我们在安装系统的时候,由于没有合理分配分区空间,在后续维护过程中,发现有些分区空间不够使用,而有的分区空间却有很多剩余空间。如果这些分区在装系统的时候使用了lvm(前提是这些分区要是lvm逻辑卷分区),那么就可以轻松进行扩容或缩容!不同文件系统类型所对应的创建、检查、调整命令不同,下面就针对xfs和ext2/3/4文件系统的lvm分区空间的扩容和缩容的操作做一记录:
------------------------------------------------------------------------------------------
特别注意的是:
resize2fs命令 针对的是ext2、ext3、ext4文件系统
xfs_growfs命令 针对的是xfs文件系统
------------------------------------------------------------------------------------------
1)ext2/ext3/ext4文件系统的调整命令是resize2fs(增大和减小都支持)
lvextend -L 120G /dev/mapper/centos-home //增大至120G
lvextend -L +20G /dev/mapper/centos-home //增加20G
lvreduce -L 50G /dev/mapper/centos-home //减小至50G
lvreduce -L -8G /dev/mapper/centos-home //减小8G
resize2fs /dev/mapper/centos-home //执行调整
2)xfs文件系统的调整命令是xfs_growfs(只支持增大)
lvextend -L 120G /dev/mapper/centos-home //增大至120G
lvextend -L +20G /dev/mapper/centos-home //增加20G
xfs_growfs /dev/mapper/centos-home //执行调整
如果是XFS文件系统,使用了resize2fs这个命令,则会报错如下:
[root@my-cdh-01 mnt]# resize2fs /dev/bi_vg/bi_lv
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block 当尝试打开 /dev/bi_vg/bi_lv 时
找不到有效的文件系统超级块.
就是说:xfs文件系统只支持增大分区空间的情况,不支持减小的情况(切记!!!!!)。
硬要减小的话,只能在减小后将逻辑分区重新通过mkfs.xfs命令重新格式化才能挂载上,这样的话这个逻辑分区上原来的数据就丢失了。如果有重要文件,那就歇菜喽~~~
[root@localhost ~]# umount /home/umount: /home: device is busy.(In some cases useful info about processes that usethe device is found by lsof(8) or fuser(1))
提示无法卸载,则是有进程占用/home,使用如下命令来终止占用进程:
[root@localhost ~]# fuser -m -k /home
/home: 1409 1519ce 1531e 1532e 1533e 1534e 1535e 1536e 1537e 1538e 1539e 1541e 1543e 1544e 1545e 1546e 1547e 1548e 1549e 1550e 1601m
再次卸载home分区就成功了。
[root@localhost ~]# umount /home/
-k 表示自动把霸占home分区的进程kill掉!
如果你不是很明确是否要杀死所有霸占设备的程序,还可以加一个-i 参数,这样每杀死一个程序前,都会询问!(即fuser -m -v -i -k /home)