如何查找硬盘驱动器的硬件块读取大小?

Fla*_*ame 49 linux hard-drive dd

我正在尝试使用 dd 从我的硬盘驱动器中找出大副本的最佳大小。我试图找出使用它的最佳块大小,我认为这是该驱动器的硬件块大小。

Tho*_*att 49

lsblk命令这是伟大的:

lsblk -o NAME,PHY-SeC
Run Code Online (Sandbox Code Playgroud)

结果:

NAME   PHY-SEC 
sda        512 
??sda1     512 
??sda2     512 
??sda5     512 
Run Code Online (Sandbox Code Playgroud)

  • 对我有用,PHY-SEC 显示正确的物理大小,LOG-SEC 显示逻辑大小。 (7认同)
  • 它是否区分逻辑大小和物理大小? (3认同)
  • 不会提供实际的物理尺寸。 (2认同)

hlo*_*dal 33

Linux 在文件中公开物理扇区大小/sys/block/sdX/queue/physical_block_size。虽然,为了获得最佳性能,您可能应该使用不同的尺寸和措施进行一些测试。我能不能 找到 一个 明确的 答案中,使用完全相同的物理块大小将得到最佳的结果(虽然我认为它不可能是一个不错的选择)。

  • 我有一个仅在该位置公开 *hw_sector_size* 的 Debian Lenny 系统(2.6.26 内核),以及提供两者的较新 Ubuntu Karmic 系统(2.6.31 内核)。所以这在某种程度上取决于使用的内核。 (2认同)
  • @Hashim 我测试了一些旧硬盘,其中一些有 512b,一些有 4k 扇区大小。 https://superuser.com/a/426015/145072 是实际有效的解决方案。除了“hdparm”之外的所有内容都可能会欺骗您。 (2认同)

小智 30

$ sudo hdparm -I /dev/sda | grep -i physical
Physical Sector size:                  4096 bytes
Run Code Online (Sandbox Code Playgroud)

http://wayback.archive.org/web/20150921015457/https://nxadm.wordpress.com/2010/04/30/4096-physical-block-size-drives/

  • `hdparm -I /dev/sda | grep Sector 更好,因为它会同时显示物理和逻辑大小,以便于比较。 (5认同)
  • 这应该是公认的答案,因为它是唯一提供真实物理价值的答案。 (3认同)

Mar*_*k C 7

我的不是一个完整的答案,但我希望它也有帮助。

这里有一些来自http://mark.koli.ch/2009/05/howto-whole-disk-backups-with-dd-gzip-and-p7zip.html


3 - 确定合适的块大小

为了更快地备份,它可以帮助确定您要备份的磁盘设备的最佳块大小。假设您要备份 /dev/sda,以下是使用 fdisk 命令确定最佳块大小的方法:

rescuecd#/> /sbin/fdisk -l /dev/sda | grep Units

Units = cylinders of 16065 * 512 = 8225280 bytes
Run Code Online (Sandbox Code Playgroud)

请注意 fdisk 输出显示“16065 * 512 的柱面”。这意味着磁盘上每个块有 512 个字节。您可以通过将块大小增加 2 到 4 的倍数来显着提高备份速度。在这种情况下,最佳块大小可能是 1k (512*2) 或 2k (512*4)。顺便说一句,贪婪并使用 5k (512*10) 的块大小或过多的东西无济于事;最终系统将在设备本身出现瓶颈,您将无法从备份过程中挤出任何额外的性能。(强调)


我怀疑给定配置的接近最优和最优块大小之间的性能差异可以忽略不计,除非数据集很大。事实上,FixUnix 的一位用户(2007 年的帖子)声称他的最佳时间只比次优时间快 5%。也许您可以通过使用“集群”大小或文件系统块大小的倍数来提高效率。

当然,如果您移动到最佳块大小的任一侧太远,您就会遇到麻烦。

最重要的是,使用绝对最佳的块大小,您可能只会获得大约 5% 的性能(即每小时 3 分钟),因此请考虑是否值得您花时间和精力进行进一步研究。只要远离极端值,就不应该受苦。

  • IMO 这是最有用的答案,主要是因为最后一个粗体段落。Linux 非常努力地优化磁盘访问,因此只要您为磁盘使用适当的 io 调度程序和脏缓冲区设置,8192 字节的块大小在任何情况下都应该没问题。 (2认同)