1、EXT文件系统限制
线上的kafka机器配置为12快盘做raid10,约24T。用mkfs.ext4格式化磁盘时,出现以下错误。
mkfs.ext4: Size of device /dev/iscsi/test too big to be expressed in 32 bit susing a blocksize of 4096.
对于64位系统,理论上EXT4文件系统支持单分区最大上线为1EiB(1024TB)。实际mkfs.ext4发现最大支持的分区只有16TB,主要原因文件系统工具仍然是32为系统模式。借鉴MySQL的Flash卡使用XFS系统使用经验,决定放弃EXT4而使用XFS文件系统。大盘的格盘和挂载的步骤如下,磁盘卷为/dev/sdb,格式化为一个主分区,使用GPT分区。
另外,挂载磁盘时使用noatime,nodiratime等优化参数。
2、XFS格式化脚本
#!/bin/env bash
## parted disk ##
yum install -y xfsprogs kmod-xfs xfsdump xfsprogs-devel
modprobe xfs
lsmod |grep xfs
umount /dev/sdb1
echo "cleaning /dev/sdb ..."
parted /dev/sdb --script rm 1
echo "formating /dev/sdb ..."
parted /dev/sdb --script mklabel gpt
parted /dev/sdb --script mkpart primary 0% 100%
sleep 3
## format ##
if [ -b /dev/sdb ];then
echo "formating /dev/sdb ... "
mkfs.xfs -f -i attr=2 -l size=128m,lazy-count=1,sectsize=4096 -b size=4096 -d sectsize=4096 -L data /dev/sdb1
fi
sleep 3
## mount ##
mkdir -p /dbdat
echo "/dev/sdb1 /dbdat xfs rw,noatime,nodiratime,noikeep,nobarrier,allocsize=100M,attr2,largeio,inode64,swalloc 0 0" >> /etc/fstab
mount -a
4、磁盘挂在错误
mount挂载磁盘是提示“mount: Structure needs cleaning”。
使用 “xfs_repair -L /dev/sdb1″修复所挂在的分区。