> CentOS > CentOS教程 >

CentOS平台使用LVM扩展大容量存储(大于16T)

0. 说明

因为公司存储需求的增长,需要在原有服务器上挂载一个大容量存储。原有服务器使用比较久,数据不能动,只能猜用动态扩容的方式进行更改。

操作系统:CentOS 6.7 x86_64

文件系统使用LVM进行管理。

1. 查看现有存储布局

1.1 使用pvdisplay 查看挂载在lvm上的硬盘

显示挂载的设备是/dev/sdb2,还有一个/dev/sda1的新物理设备没有挂载。这次操作就是要将新设备挂载到vg_mail上面。

2. 格式化/dev/sda

因为是大容量存储,传统的mbr分区表格式只能支持最大2T的单个分区不能满足需求,故而才有GPT分区表格式。fdisk工具不支持gpt分区,要使用parted工具。

2.1 安装parted

1
yum install parted

2.2 使用parted查看/dev/sda

因为前面已经对这个存储做过分区,故而显示的分区表格式就是gpt。

2.3 使用parted给硬盘分区

2.4 使用fdisk 设定分区格式,以为要将其加入LVM,故而使用8e标签。

3. 将新硬盘挂添加到vg_mail卷组中。

3.1 创建新物理卷

3.2 将新物理卷添加到vg_mail卷组中

3.3 查看当前逻辑卷

3.4 将新硬盘扩展到lv_root中(26T的硬盘只有23.65T的大小,这帮奸商!!!!)

3.5 使用resize2fs在线扩容分区

3.6 添加成功。

4 New size too large to be expressed in 32 bits问题的解决

3.4 及3.5的步骤在分区超过16T的时候是不会成功的。虽然ext4支持1EB的分区大小,但是CentOS系统中当分区超过16T时执行resize2fs的时候就会报出“New size too large to be expressed in 32 bits”的错误,导致扩容失败。所以第一教训,不要偷懒直接扩容root分区,否则只能关机使用救援盘手动缩小容量,并且一不小心就会导致硬盘挂掉,重装系统了事。(别问我是怎么知道的,我想静静,也别问我静静是谁~~~~~)

4.1 经过上次的失败后,笔者学乖了,将扩充容量放在/home下,这样就可以顺利执行umount命令进行操作。对于超过16T的分区扩展,CentOS下可以使用升级版的e2fsprogs进行操作。具体安装步骤如下:

1
2
3
4
5
6
7
yum install gcc g++ git
git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
cd e2fsprogs
mkdir build ; cd build/
../configure
make
make install

4.2 使用e2fsprogs进行扩容操作(以/home为例)

 
 
 
 
 
 
Shell
1
2
3
4
5
6
7
8
umount /home
lvextend  -L +23T /dev/vg_mail/lv_home
e2fsck -f /dev/vg_mail/lv_home
resize2fs /dev/vg_mail/lv_home
mke2fs -O64bit,has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize -i4194304 /dev/vg_mail/lv_home
resize2fs /dev/vg_mail/lv_home
lvdisplay
mount /dev/vg_mail/lv_home /home/

4.3 done。

P.S. 因为该过程实在是经历了很多次,所以前后截图不一致,并非我故意戏弄各位则个。



(责任编辑:IT)