背景
西部数据“Ultrastar® DC HC530 14TB HDD”(型号:WUH721414ALE6L4)(SATA 接口)默认仅有 512e 扇区大小。
根据以下两份西部数据文件,“**512e 型号可以转换为 4Kn 格式,反之亦然。“:
a) WD 部件编号选择器(请参阅脚注 1)(https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/product/data-center-drives/ultrastar-dc-hc500-series/data-sheet-part-numbers-ultrastar-dc-hc530.pdf)
但是,西部数据没有提供任何说明或软件/实用程序来执行从 512e 到 4Kn 扇区大小的转换(在 Windows 10 中)。
我已写信给西部数据支持门户,但他们没有提供任何有用的答复。
问题
非常感谢您能就如何将 Western Digital“Ultrastar® DC HC530 14TB HDD”从 512e 转换为 4Kn 扇区大小提供建议。(在 Windows 10 中)
答案1
但是,没有说明...
这并不完全正确,根据该产品规格,该驱动器支持一个名为的 ATA 命令Set Sector Configuration Ext
,该命令可用于更改逻辑扇区大小,而无需使用任何来自供应商的专有程序,例如 HUGO;有关Set Sector Configuration Ext (B2h)
此命令的详细说明,请参阅第 287 页的部分。
这些官方信息对于普通用户来说可能太过技术性,所以我试图具体解释你应该做什么步骤,以及为什么;但是这里提供的信息只能作为参考,你必须对发送到磁盘驱动器的任何命令负全部责任,并且只有在理解每个步骤的目的后才能进行练习。
我成功地将 HC530 14TB 硬盘的逻辑扇区大小从 512 更改为 4096。由于只更改了逻辑扇区大小,而物理扇区大小始终保持为 4096,因此此操作不会影响磁盘上的现有数据;但是,在尝试任何此类操作之前,始终建议备份所有重要数据。
我在 FreeBSD 系统中执行了以下步骤,如果某个特定命令在其系统上不可用,则使用不同操作系统的任何人都应该使用等效的命令/工具进行研究。
在继续之前,请确保没有程序正在使用该磁盘,并且没有从磁盘安装文件系统。
该命令不是直接从传入的值设置扇区大小,而是Set Sector Configuration Ext
从预定义列表(称为)设置扇区配置Sector Configuration Log
,该列表作为存储在磁盘General Purpose Log
地址 0x27 处的;每个条目称为Sector Configuration Descriptor
。有关日志结构的详细信息,请参阅产品文档部分12.21.13 Sector Configuration log
第 217 页。
我用了智能控制(8)检索Sector Configuration Log
我的驱动器,如下所示:
# smartctl --log gplog,0x2f /dev/ada8
smartctl 6.6 2017-11-05 r4594 [x86_64-unknown-freebsd10.4 FreeBSD 10.4-RELEASE-p14] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org
General Purpose Log 0x2f [Set Sector Configuration], Page 0-0 (of 1)
0000000: 80 00 00 02 00 10 00 00 00 00 00 00 00 00 00 00 |................|
0000010: 80 00 08 02 40 10 00 00 00 00 00 00 00 00 00 00 |....@...........|
0000020: 80 00 10 02 80 10 00 00 00 00 00 00 00 00 00 00 |................|
0000030: 80 03 00 10 00 02 00 00 00 00 00 00 00 00 00 00 |................|
0000040: 80 03 40 10 08 02 00 00 00 00 00 00 00 00 00 00 |..@.............|
0000050: 80 03 80 10 10 02 00 00 00 00 00 00 00 00 00 00 |................|
0000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
...
按照文档中所述,每个描述符长 16 个字节,有效描述符将设置位 7,在上面的输出中可以找到 6 个有效描述符。
接下来我们需要找出哪个描述符的逻辑扇区大小为 4096;位于Logical Sector Size Setting field
描述符的偏移量 4 处,大小为 4;请注意,描述符中的整数数据是小端的;我们选择第一个描述符,因为它的值为00 10
(0x1000 == 4096)
使用Set Sector Configuration Ext
需要您传递描述符索引(在本例中为 0)作为参数sector_count
,以及描述符的描述符校验值作为参数feature
。描述符校验值大小为 2,位于描述符的偏移量 2 处;因此当前情况下的描述符校验值为00 02
。规范还要求您设置device
参数的第 6 位。
命令参数如下:
feature=0x0200
sector_count=0x0000
device=0x40
其它参数未使用,应设置为 0。
我用了凸轮控制(8)在 FreeBSD 上可用的命令来发送此 ATA 命令,使用以下语法:
comcontrol command <disk> [-v] -a "<command> <features> <lba_low> <lba_mid> <lba_high> <device> <lba_low_exp> <lba_mid_exp> <lba_high_exp> <features_exp> <sector_count> <sector_count_exp>" -r -
此处的选项-v
是可选的,用于在命令失败时启用详细的错误消息;-r -
具体来说,指示驱动器输出的命令寄存器值应在命令成功发送后打印到标准输出。
运行:
# camcontrol command ada8 -v -a "b2 00 00 00 00 40 00 00 00 02 00 00" -r -
50 00 00 00 00 00 00 00 00 00 00
上述命令成功执行后验证逻辑扇区大小:
# smartctl --info /dev/ada8
smartctl 6.6 2017-11-05 r4594 [x86_64-unknown-freebsd10.4 FreeBSD 10.4-RELEASE-p14] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
...
User Capacity: 14,000,519,643,136 bytes [14.0 TB]
Sector Size: 4096 bytes logical/physical
Rotation Rate: 7200 rpm
Form Factor: 3.5 inches
...
现在您应该完全拔下驱动器并再次插入,以更新内核对其逻辑扇区大小的看法;因为主机内核可能仍会将驱动器逻辑上记住为 512 字节扇区,任何进一步的扇区访问都将无效,并可能导致内核中的 I/O 挂起,直到您重新插入驱动器。内核应该能够使用原生 4096 字节扇区大小毫无问题地访问其扇区。
答案2
您需要使用 Western Digital 的一款名为“Hugo”的程序。您无法直接从他们的网站下载,但如果您在 1-2 周后联系他们并提出支持请求,有人会联系您并向您发送下载链接。
我使用了 HUGO 7.5.4 (win64),随附的文档特别列出了兼容的 WUH721818ALE6L4 (=HC550)。然后我做了以下操作,将 18TB HGST(现为 WD)驱动器的格式从默认的 512e 更改为 4Kn
C:\Program Files\WDC\HUGO\bin>hugo s --device
Manuf. Model Serial Interface Capacity Type Firmware
----------------------------------------------------------------------------------------------------
1) HGST WUH721818ALE6L4 XXXXXXX SATA 18000 GB HDD PCGNW232
Device handles: \\.\PhysicalDrive2
C:\Program Files\WDC\HUGO\bin>hugo format -g \\.\PhysicalDrive2 -b 4096 --fastformat -n max
******************************** WARNING **********************************
The Format command will result in loss of data on the specified device.
This device might be your boot device and it won't be protected.
******************************** WARNING **********************************
Are you sure you want to Format this device? (Y/N) y
Format device on 1 Device(s)...
C:\Program Files\WDC\HUGO\bin>hugo s --device
Manuf. Model Serial Interface Capacity Type Firmware
----------------------------------------------------------------------------------------------------
1) HGST WUH721818ALE6L4 XXXXXXX SATA 18000 GB HDD PCGNW232
Device handles: \\.\PhysicalDrive2
C:\Program Files\WDC\HUGO\bin>hugo s --device -b
Manuf. Model Serial Interface Capacity Type Firmware
----------------------------------------------------------------------------------------------------
1) HGST WUH721818ALE6L4 XXXXXXX SATA 18000 GB HDD PCGNW232
Block Size: 4096 Native Block Size: 4096
Device handles: \\.\PhysicalDrive2
请注意,“块大小” - 以前是 512 - 现在与格式后的“本机块大小”匹配为 4096 (=4Kn)
更新:
与此同时,我购买了 wuh722222ale6l4 (=HC570 22TB),不是具体列出,但使用上述程序将磁盘更改为 4Kn,再次使用 HUGO 7.5.4(自行承担风险!)。
其他注意事项:格式化期间不要更改 cmd 窗口的大小,因为这会使显示混乱。我认为它立即以“失败”结束,按下一个键使其继续,但它仍然应用了更改。请注意,一旦完成并输入“hugo s --device -b”,应用程序反应非常慢,并且仍然报告“块大小”为 512。我通过 USB 适配器将其连接到 PC,拔下 USB 后重新插入并重新运行命令,它现在显示“块大小:4096”。
将其安装在 Synology NAS 中时,检测到磁盘为“4K Native HDD”=是。
答案3
不知道 2021 年底是否还有人在关注这个页面……
感谢提供的信息低电量提供,我成功编写了一个 Windows 版本的程序,可以更改支持的 WD 驱动器的扇区大小!
答案4
对于那些希望对 DC HC550 执行相同操作的用户,例如 WUH721816ALE6L4:
Western Digital 的 Hugo 实用程序显然已停产,并被“wdckit”实用程序取代,可在https://files.hddguru.com/download/Software/Western%20Digital/
该实用程序有许多版本,但在此示例中,wdckit-2.15.0.zip 适用于 HC550 驱动器。
所提供的 zip 文件不是常见格式,可以使用 p7zip-full 实用程序在 Linux 中解压缩:7za x wdckit-2.15.0.zip
,unzip 在那里不起作用。
在 Linux 中,解压缩文件后,预先构建的“wdckit”二进制文件的工作方式与 Hugo 非常相似:
wdckit show
列出所有可用的驱动器并
wdckit format --model WDC\ \ WUH721816ALE6L4 -b 4096 --fastformat
对特定驱动器型号执行操作。在我的例子中,型号名称在“WDC”后面包含两个空格,需要将其转义才能使实用程序正常运行。
值得注意的是,这是不是“转换”,而是“重新格式化”,这意味着命令完成后您将丢失该驱动器上的所有数据。也许可以通过wdckit format --model WDC\ \ WUH721816ALE6L4 -b 512 --fastformat
在之后立即运行来恢复该数据,但我还没有尝试过,而且可能根本不起作用。