微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CentOS分区大于2TB的磁盘以及格式化大于16TB分区的解决方案

一、内容介绍

1、问题描述

1)、问题一
CentOS 6.x 在格式化大于16TB的ext4分区时,会提示如下错误

mke2fs1.41.12(17-May-2010)
mkfs.ext4:Sizeofdevice/dev/sda1toobigtobeexpressed
in32bitsusingablocksizeof4096.123123

2)、问题二
CentOS 6.x 无法使用fdisk分区大于2TB的磁盘。

2、原因分析

1)、问题一:
原因在于CentOS 自带的 e2fsprogs 版本为1.41.12较低,无法创建16TB以上的文件系统。
2)、问题二:
原因在于MBR分区表只支持2T磁盘。

3、解决方

1)、问题一:
解决方案为手工下载最新的e2fsprogs源码包,进行编译安装,然后使用mkfs.ext4 命令使用64位的方式进行磁盘格式化。
2)、问题二:
使用parted命令将MBR分区表,改为GPT分区表。

二、解决方案的实现

下面通过在VirtualBox上进行实验来验证上面方案的可行性:

1、在VB虚拟机上添加硬盘

这里假设你的VB虚拟机的CentOS已经通过yum update将全部软件升级到最新版本

在VB虚拟机中添加10块2TB的硬盘(此时虚拟机须处于关机状态),如下图:

这里写<a href=图片描述" title="" style="border:none;" src="http://img.blog.csdn.net/20170109203035666">

每个虚拟硬盘都是“动态分配存储”,总计容量为20TB,这样就做成raid5最量就会超过16TB了。

2、生成软RAID磁盘阵列

1)、硬盘分区

启动虚拟机登录系统后输入lsblk命令查看虚拟机可识别的硬盘

[root@localhost~]#lsblkNAMEMAJ:MINRMSIZEROTYPEMOUNTPOINT
sr011:011024M0rom
sda8:0050G0disk
├─sda18:101G0part/boot
├─sda28:202G0part[SWAP]
└─sda38:3047G0part/
sdb8:1602T0disk
sdc8:3202T0disk
sdd8:4802T0disk
sde8:6402T0disk
sdf8:8002T0disk
sdg8:9602T0disk
sdh8:11202T0disk
sdi8:12802T0disk
sdj8:14402T0disk
sdk8:16002T0disk12345678910111213141516171234567891011121314151617

可以看到10块硬盘已经全部识别,但是还没有进行分区, 这里我们使用fdisk逐一进行分区,以便制作软RAID.
这里需要注意的是:如果是在真实的服务器上,是不会看到这么多硬盘的。因为服务器通过RAID卡,将多块硬盘合并为一块硬盘。在本文后面会提到如何使用parted分区超过2TB的硬盘
sdb这块硬盘为例,进行分区:

[root@localhost~]#fdisk/dev/sdb
Command(mforhelp):n
Commandaction
eextended
pprimarypartition(1-4)
p
Partitionnumber(1-4):1Firstcylinder(1-267349,default1):
Usingdefaultvalue1Lastcylinder,+cylindersor+size{K,M,G}(1-267349,default267349):
Usingdefaultvalue267349Command(mforhelp):t
Selectedpartition1Hexcode(typeLtolistcodes):fd
Changedsystemtypeofpartition1tofd(Linuxraidautodetect)

Command(mforhelp):p
DeviceBootStartEndBlocksIdSystem
/dev/sdb112673492147480811fdLinuxraidautodetect

Command(mforhelp):w1234567891011121314151617181920212212345678910111213141516171819202122

上面的步骤基本上就是我们平时进行分区时需要进行操作的步骤。只有t命令平时不太用到.t命令的意思就是“修改分区类型“,将标准的linux分区修改fd“Linux raid autodetect”以便供软RAID使用。

下面逐一再将其他磁盘进行分区,全部分区完成后,使用lsblk查看分区情况:

[root@localhost~]#lsblkNAMEMAJ:MINRMSIZEROTYPEMOUNTPOINT
sr011:011024M0rom
sda8:0050G0disk
├─sda18:101G0part/boot
├─sda28:202G0part[SWAP]
└─sda38:3047G0part/
sdb8:1602T0disk
└─sdb18:1702T0part
sdc8:3202T0disk
└─sdc18:3302T0part
sdd8:4802T0disk
└─sdd18:4902T0part
sde8:6402T0disk
└─sde18:6502T0part
sdf8:8002T0disk
└─sdf18:8102T0part
sdg8:9602T0disk
└─sdg18:9702T0part
sdh8:11202T0disk
└─sdh18:11302T0part
sdi8:12802T0disk
└─sdi18:12902T0part
sdj8:14402T0disk
└─sdj18:14502T0part
sdk8:16002T0disk
└─sdk18:16102T0part123456789101112131415161718192021222324252627123456789101112131415161718192021222324252627
2)、建立RAID5

使用mdadm建立RAID5磁盘阵列:

[root@localhost~]#mdadm-C/dev/md5\-ayes-l5-n10-x0\
/dev/sd[b,c,d,e,f,g,h,i,j,k]1mdadm:Defaultingtoversion1.2Metadata
mdadm:array/dev/md5started.123456123456

可以使用如下命令查看RAID5状态:

mdadm-D/dev/md511

3、格式化磁盘阵列

如果现在使用mkfs.ext4格式化/dev/md5将会出现如下错误

[root@localhost~]#mkfs.ext4/dev/md5mke2fs1.41.12(17-May-2010)
mkfs.ext4:Sizeofdevice/dev/md5toobigtobe
expressedin32bitsusingablocksizeof4096.12341234

报错原因在文章开头已经介绍了,这里我们先下载最新的e2fsprogs源码包,下载地址如下:
ftp://ftp.ntu.edu.tw/linux/kernel/people/tytso/e2fsprogs/

当前版本为1.43.3,下载后,进行编码安装:

tar-zxvfe2fsprogs-1.43.3.tar.gzcde2fsprogs-1.43.3mkdirbuild

cdbuild/

../configure

make

makeinstall1234567891011121312345678910111213

编译完成后使用如下命令格式化:

mke2fs-O64bit,\has_journal,extents,\huge_file,flex_bg,uninit_bg,\dir_nlink,\extra_isize\-i4194304\/dev/md512345671234567

或者:

mkfs.ext4-O64bit/dev/md511

挂载磁盘到/mnt

mount/dev/md5/mnt11

查看磁盘挂载情况:

[root@localhostbuild]#df-hFilesystemSizeUsedAvailUse%Mountedon/dev/sda347G1.1G43G3%/tmpfs939M0939M0%/dev/shm/dev/sda1976M56M870M6%/boot/dev/md518T24K17T1%/mnt12345671234567

OK! 问题1顺利解决。证明这个方案还是可行的!

4、使用parted 分区2TB以上磁盘

上面第1和第2步骤,是我们为了进行实验是否能格式化16TB以上分区而搭建的实验环境。在生产环境下,一般不会用到软RAID,服务器是通过RAID卡将多块磁盘形成一个磁盘阵列。在启动系统后,有会一个没有分区的大磁盘。这种情况下就不能使用fdisk命令进行分区了。在这里,我们使用parted来进行分区。

这里我用一个2TB的磁盘来估演示,如果使用parted将整个磁盘阵列分为一个分区的情况(这也是生产环境中经常遇到的情况):
先使用lsblk查看系统中可使用的磁盘:

[root@localhost~]#lsblkNAMEMAJ:MINRMSIZEROTYPEMOUNTPOINTsr011:011024M0rom
sda8:0050G0disk
├─sda18:101G0part/boot
├─sda28:202G0part[SWAP]
└─sda38:3047G0part/
sdb8:1602T0disk123456789123456789

这时系统里有一个sdb的磁盘,容量为2TB。

[root@localhost~]#parted/dev/sdb(parted)mklabelgpt#将MBR磁盘格式化为GPT(parted)mkpartprimary0-1#将整块磁盘划分为一个分区警告:Theresultingpartitionisnotproperly
alignedforbestperformance.
忽略/Ignore/放弃/Cancel?I#忽略警告(parted)p#打印当前分区Model:ATAVBoxHARDdisK(scsi)
disk/dev/sdb:2199GB
Sectorsize(logical/physical):512B/512B
PartitionTable:gpt

NumberStartEndSizefilesystemName标志117.4kB2199GB2199GBprimary

(parted)quit#退出信息:Youmayneedtoupdate/etc/fstab.12345678910111213141516171234567891011121314151617

再使用lsblk查看磁盘分区情况:

11024M0rom
sda8:0050G0disk
├─sda18:101G0part/boot
├─sda28:202G0part[SWAP]
└─sda38:3047G0part/
sdb8:1602T0disk
└─sdb18:1702T0part12345671234567

格式化并挂载磁盘:

mkfs.ext4/dev/sdb1
mount/dev/sdb1/mnt1212

[root@localhost~]#df-hFilesystemSizeUsedAvailUse%Mountedon/dev/sda347G851M43G2%/tmpfs939M0939M0%/dev/shm/dev/sda1976M56M870M6%/boot/dev/sdb12.0T71M1.9T1%/mnt123456123456

OK!问题2完美解决

原文地址:https://www.jb51.cc/centos/378065.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。