在创建系统时,我使用默认参数创建了一个XFS文件系统。现在看看xfs_info
的输出,它显示sunit
和swidth
的值为0。在这种情况下,我似乎找不到对0的解释。(我发现sunit
和swidth
的讨论集中在为这些参数设置正确的值,而不是将它们设置为0。)
# xfs_info .
meta-data=/dev/mapper/centos-root isize=256 agcount=8, agsize=268435455 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=1927677952, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=521728, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
这一定是一个无知的问题,我对此表示歉意,因为我是XFS新手,但是0值对于sunit
和swidth
意味着什么呢?如何才能找到XFS对这些参数值真正使用的内容,以及这些值与RAID数组中合适的值之间的关系?(这是一个位于LVM之上的硬件RAID上的XFS系统。)
发布于 2022-06-18 21:18:39
这是一个老问题,但我认为一个更全面的答案是有用的。
简而言之:当使用软件RAID时,让XFS自动检测底层数组几何。如果在最近的内核上使用硬件RAID,XFS应该能够自动检测正确的参数;如果没有,则可以使用su/sw/sunit/swidth
来指定它们。
了解底层的几何结构有助于XFS分配器在可能的情况下避免跨越两个磁盘,为其他工作保存IOPS (即:占用较少的数据磁盘)。
在上面的具体示例中,mkfs.xfs
报告了sunit=0
和swidth=0
,这意味着XFS没有检测到创建文件系统的块设备上的任何特定RAID几何。
长篇大论:让我们从su
和sw
开始。来自(有些过时的) XFS常见问题:
su = <RAID controllers stripe size in BYTES (or KiBytes when used with k)>
sw = <# of data disks (don't count parity disks)>
请注意,在这种情况下,“条带大小”指的是单个条带单元大小,也称为Linux中的块大小。同样来自于常见问题:
如果RAID条带大小为256 sw,且RAID-10超过16个磁盘,则应使用su =256 k sw=8 (RAID-10的16个磁盘中有8个数据磁盘)。
sunit
和swidth
是另一种表示相同RAID几何形状的方法,这一次是在512 B扇区。来自mkfs.xfs手册页:
sunit
用于指定RAID设备或逻辑卷的条带单元。该值必须以512个字节块单元swidth
指定,用于指定RAID设备或带条带的逻辑卷的条带宽度。该值必须以512字节块单元指定.
简言之:
su * sw = entire data stripe size
swidth / sunit = number of data disk
如您所见,它们是两种不同的方法,用于通知XFS底层RAID几何学。然而,faq告诉我们mkfs.xfs
如何报告sunit
和swidth
的一个问题:
请注意,xfs_info和mkfs.xfs将sunit和swidth解释为在512 B扇区的单元中指定;不幸的是,这并不是它们所报告的单元。xfs_info和mkfs.xfs以基本块大小(bsize)的倍数报告它们,而不是在512 B扇区。例如: swidth 1024 (在mkfs.xfs命令行指定;so 1024在512 B扇区)和4096块大小(输出时由mkfs.xfs报告)。您应该看到sWidth128(由mkfs.xfs在输出处报告)。128 * 4096 == 1024 * 512
基本上,在创建文件系统时,您可以在512 B扇区中指定sunit
和swidth
,而相同的mkfs.xfs
报告它们的块大小为4K。这种差异是造成混淆的一个常见原因。
发布于 2015-11-21 13:05:52
如果不使用RAID,则sunit
和swidth
选项已过时,用于RAID优化
有关sunit
和swidth
的更多信息,请参阅XFS常见问题
发布于 2022-01-17 11:10:33
零意味着范围分配的零优化wrt底层RAID结构,这是正确的。
因此,如果您关注性能,并且只需重新创建FS,那么就可以在raid集/控制器中分析驱动器的#及其块大小,并在sunit
中相应地设置mkfs.xfs
和swidth
。
如果(也只有当)您需要在RAID LUN上创建分区(S),请确保第一个分区开始于1 MByte边界(2048 s如果扇区= 512字节),因为这是大多数RAID块大小可以被除以的。
https://serverfault.com/questions/737924
复制相似问题