前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >4KB 扇区磁盘上的 Linux:实际建议

4KB 扇区磁盘上的 Linux:实际建议

作者头像
小小科
发布2018-05-02 16:21:48
3.3K2
发布2018-05-02 16:21:48
举报
文章被收录于专栏:北京马哥教育北京马哥教育

为何更改为 4096 字节扇区?

如果您熟悉磁盘结构,就知道磁盘是被分解成扇区 的,大小通常是 512 字节;所有读写操作均在成倍大小的扇区中进行。仔细查看,就会发现硬盘事实上在扇区之间包括大量额外数据,这些额外字节由磁盘固件使用,以检测和纠正每个扇区内的错误。随着硬盘变得越来越大,越来越多的数据需要存储在磁盘的每一单位面积上,导致更多低级别错误,从而增加了固件纠错功能的负担。

解决该问题的一个方法是将扇区大小从 512 字节增加为更大的值,以使用功能更强大的纠错算法。这些算法可使每个字节使用较少的数据,从而比使用 512 字节扇区能纠正更多严重问题。因此,更改为较大尺寸的扇区有两个实际好处:提高可靠性且增加磁盘容量 — 至少从理论上讲是这样。

不同于增加的显示器大小或提高的中央处理单元(CPU)速度,对终端用户的现实获益可能没有这么明显。不过,专用于奇偶检验的空间减少了,可能加快较大磁盘的引入或提高磁盘可靠性。

遗憾的是,关于 512 字节扇区的假设潜藏在整个软件链中,在基本输入/输出系统(BIOS)、引导装载程序、操作系统内核、文件系统代码和磁盘工具等工具中。尽管向 4096 字节扇区的转变已经酝酿了多年,有些工具仍未做好准备。Microsoft? Windows? XP 经常被提出有故障隐患,即使在 Linux 中,有些问题也只是暂时得到纠正。

为帮助实现这种过渡,带 4096 字节分区的第一批磁盘将每个物理 扇区转换成 8 个 512 字节的逻辑 扇区。对于 BIOS、操作系统和所有磁盘工具,磁盘看起来有 512 字节扇区,但实际上底层物理扇区大小是 4096 字节。Western Digital 是第一家生产这种磁盘的制造商,它使用术语 Advanced Format 来代表带 4096 字节物理扇区且向 512 字节逻辑扇区转换的磁盘。本文对 Western Digital 的磁盘和使用类似技术的其他制造商的磁盘都使用同一术语。

回页首

为何有性能影响?

遗憾的是,在固件中改变表面扇区大小会降低性能。要了解个中原因,首先应了解文件系统数据结构以及如何进行磁盘分区。

最新的文件系统使用 4096 字节或更大尺寸的数据结构。因此,大部分磁盘 I/O 操作占用成倍数量的大小。想一下,当 Linux 想在一个带 4096 字节扇区的新磁盘上读写这些数据结构时,会发生什么事情。如果文件系统数据结构正好与底层物理分区大小一致,对 4096 字节数据结构的读写会产生对单一扇区的读写。硬盘的固件不需要做任何特别的事;但是当文件系统数据结构与底层物理扇区不完全一致时,读写操作必须使用两个物理扇区。对于读操作,这基本上不会花费很多额外时间,因为磁盘上的读/写头极可能连续通过两个扇区,且固件可丢弃它不需要的数据。另一方面,对不一致数据结构的写操作需要磁盘的固件首先读取两个扇区,修改两个扇区的分区,然后写两个扇区。该操作所需时间比 4096 字节占用一个扇区时所需时间多。因此,性能下降。

如何判断数据结构是否得到合理对齐? 大多数文件系统将其数据结构与包含其本身的分区开头对齐。因此,如果一个分区起始于一个 4096 字节(8 个扇区)边界,则表示它得到合理对齐。遗憾的是,直到最近,大多数 Linux 分区工具还没有创建以这种方式对齐的分区。下一小节 对齐分区,描述如何使用普通 Linux 分区软件对齐分区。

回页首

基准测试结果

您可能不了解合理的分区对齐有多重要。为此,我们对已对齐和未对齐分区以及若干 Linux 文件系统使用了一个 1TB Western Digital WD-10EARS Advanced Format 驱动。磁盘是通过全局唯一标识符(GUID)Partition Table (GPT) 系统进行分区的,其中已对齐的分区起始于逻辑扇区 40,而未对齐的分区起始于逻辑扇区 34(使用 GPT 磁盘与默认大小的分区表时的第一个可用扇区)。受测试的文件系统是 ext3fs、ext4fs、ReiserFS(第 3 版)、JFS、XFS 和 Btrfs。计算机运行一个 64 比特 2.6.32.3 Linux 内核。

一个脚本执行了一系列磁盘 I/O 操作,包括创建一个新文件系统、提取一个未压缩的 Linux 内核原始码到测试驱动上、复制原始码到驱动、读取测试驱动上刚才未压缩的文件、从驱动上读取原始码、删除 Linux 内核目录。源 Linux 内核原始码存储在另一个磁盘上,对于读测试,输出指向 /dev/null。在每个写测试之后,测试磁盘被卸载,以确保在 Linux 的磁盘缓存中没有操作。所报告的数字包括执行卸载操作所需的时间。内核原始码的大小是 365MB — 远远大于磁盘 64MB 的缓存。每个测试序列对每个文件系统运行 6 次,对合理对齐的分区运行 3 次,对未合理对齐的分区运行 3 次。隔次操作的变动很小。用平均未对齐时间除以平均对齐时间所得的值来确定所应用的不合理对齐对性能的影响程度。大于 1.00 的值表示不合理对齐产生一些性能损失。

许多测试产生适度的损失。针对文件系统创建的值介于 0.96(对于 XFS)到 7.94(对于 ReiserFS)之间,平均值为 2.79。由于文件系统不常创建,所以该损失不是那么重要。读测试生成的值介于 0.95 到 1.25 之间,这表示速度损失不超过 25%,如图 1 中所示。值为 1.00 时表示没有损失;更高的值则意味着性能下降。

图 1. 使用未对齐分区的读性能损失

大型文件写性能也受到适度损失。这些值介于 1.10(对于 XFS 和 JFS)到 6.02(对于 ReiserFS)之间,平均值为 2.10。一般情况下该值较高都归咎于 ReiserFS 的敏感性。删除它之后,其余 5 个文件系统的平均值为 1.31。文件检测效果类似,从 1.04(对于 XFS)到 4.78(对于 JFS),平均值为 1.97。将 JFS 作为离群值删除之后,平均值变为 1.40。

小型文件创建操作会产生最大的写性能影响(提取内核原始码)。对原始码提取的影响范围为 1.04(对于 ext4fs)到 25.53(对于 ReiserFS),平均值为 10.9。该测试中第二大性能影响者是 XFS,值为 1.82。由于这些数字是未对齐性能与对齐性能之比,值为 10.9 时表示一个原始码提取在合理对齐的分区上需时 10 秒,而在未合理对齐的分区上需时 109 秒 — 一个巨大的差别!对于 XFS,值为 1.82 时表示这个 10 秒钟的操作在未合理对齐的分区上需要花 18.2 秒的时间。

图 2 总结了所有文件系统的这些写性能损失。与前面相同,值为 1.00 时表示没有性能损失;更高的值表示性能下降。

图 2. 使用未对齐分区的写性能损失

注意,这些测试不反映文件系统的总体性能。例如,您不应该因为 ReiserFS 产生一些最大的性能差异,就认为它对性能的影响不好。不过,ReiserFS 对不合理的对齐比其他文件系统更敏感。

除了在分区中对文件系统运行测试之外,在一个 LVM 配置中还对文件系统执行了抽样检查,不管 LVM 分区是否经合理对齐。这些结果类似于原始分区结果。

实际情况是,到底这一切意味着什么?您应该首先确定您磁盘的物理扇区大小。如果您有 Advanced Format 驱动,就应该合理对齐您的分区。

回页首

确定物理扇区大小

从理论上,Linux 内核应该在 /sys/block/sdX/queue/physical_block_size pseudo-file 中返回物理扇区大小相关信息,在 /sys/block/sdX/queue/logical_block_size pseudo-file 中返回逻辑扇区大小相关信息,其中 sdX 是您设备的节点名称(通常为 sda、sdb 等)。但是在实践中,物理块大小信息是假的,至少对于第一代 Western Digital Advanced Format 驱动是这样的。遗憾的是,这表示磁盘工具不能合理检测这种磁盘的存在。

那么从实际来看,您必须在制造商的 Web 站点或通过其他方式查找您的驱动的规格。/sys/block/sdX/device/model 伪文件含有设备型号,因此您可以在这里查找,然后与制造商核对。

对于目前的第一代 Advanced Format 驱动,Western Digital 在驱动上贴有标签,以表明它们是 Advanced Format 驱动。遗憾的是,这些标签表示,只有 Windows XP 上的这些驱动有问题。以上基准测试结果显示,Linux 用户必须非常谨慎地对待这些驱动。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2014-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马哥Linux运维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为何更改为 4096 字节扇区?
  • 为何有性能影响?
  • 基准测试结果
  • 确定物理扇区大小
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档