SMART 用户容量和 fdisk -l 大小值不同。为什么?安全问题?

Mic*_* D. 6 security hard-drive smart

我只是想知道为什么 smartctl(“用户容量”)显示的驱动器大小与 fdisk -l、dmesg、hdparm 显示的值不同,并且与数据表中的驱动器规格值不同。我需要一些提示来解释这些值。

首先我做了一个

dd_rescue /dev/zero /dev/sdf 
Run Code Online (Sandbox Code Playgroud)

直到 dd_rescue 因“设备上没有剩余空间”而中断。

传输量为 3000558944256 字节。它类似于 fdisk -l 和 dmesg 字节数。

smartctl -x 说:

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Caviar Green (Adv. Format)
(...)
Firmware Version: 80.00A80
User Capacity:    3.000.559.428.096 bytes [3,00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   8
ATA Standard is:  ACS-2 (revision not indicated)
Local Time is:    Thu Jul  3 19:10:34 2014 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Run Code Online (Sandbox Code Playgroud)

fdisk -l 说:

Note: sector size is 4096 (not 512)

Disk /dev/sdf: 3000.6 GB, 3000558944256 bytes
255 heads, 63 sectors/track, 45599 cylinders, total 732558336 sectors
Units = sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Run Code Online (Sandbox Code Playgroud)

dmesg 说:

[  176.168005] sd 5:0:0:0: [sdf] Spinning up disk.............ready
[  186.352957] sd 5:0:0:0: [sdf] 732558336 4096-byte logical blocks: (3.00 TB/2.72 TiB)
Run Code Online (Sandbox Code Playgroud)

hdparm -I -g /dev/sdf

/dev/sdf:
 geometry      = 364797/255/63, sectors = 5860466688, start = 0             
(that's the fdisk -l value / 512)

 LBA48  user addressable sectors: 5860467633 
(that's the SMART reported value / 512)
Run Code Online (Sandbox Code Playgroud)

来自 WD 网站的驱动器规格:

User sectors per drive: 5860533168
(That is LBA48 Value + 65 535) (?!)
Run Code Online (Sandbox Code Playgroud)

hdparm --dco-identify /dev/sdf

DCO Revision: 0x0002
(...)
Real max sectors: 5860533168
Run Code Online (Sandbox Code Playgroud)

hdparm -N /dev/sdf

/dev/sdf:
 READ_NATIVE_MAX_ADDRESS_EXT failed: Input/output error    
Run Code Online (Sandbox Code Playgroud)

问题:从 SMART 信息到 dd_rescue、fdisk 和 dmesg 值的 483840 字节是不同的。并且产品规格显示该驱动器比报告给 SMART 的扇区大 65535 个,并且无法通过 LBA 访问。所以我有 3 个我不明白的尺寸值。

我计算了一下,发现

483840 / 4096 = 118
483840 / 512 = 945
(483840 / 63 (sectors/track) = 7 680)
Run Code Online (Sandbox Code Playgroud)

也许这有一些含义,丢失的字节是扇区大小的 n 倍?某些部门是不可寻址的吗?为什么?是从 LBA -> CHS 翻译吗?

驱动器是商店的新驱动器。SMART 显示没有挂起的扇区、没有重新分配事件和重新分配的扇区。

我做了一些额外的实验:
在我的内部硬盘“Hitachi Deskstar T7K500”上,SMART 和 fdisk 值没有区别。
在我的外部 USB 硬盘“SAMSUNG SpinPoint F2 EG”上,SMART 和 fdisk 值没有区别。它仅在我的外部 USB 硬盘驱动器上(Western Digital My Book)。

也许有一些保留空间?为了什么?也许它与硬件加密功能(未打开)有关?

会不会是驱动器上有坏扇区,固件在内部重新映射并且没有报告给 SMART?

该驱动器带有可修复的坏 ntfs 文件系统。但是我认为新硬盘驱动器不应该有损坏的文件系统。也许这是部门的内部重新映射?

我刚刚发现我的另一个 Western Digital 外置 USB 驱动器(Western Digital My Passport Essential SE)有同样的问题,SMART 输出和 fdisk -l 输出之间缺少 2 842 624 个字节。(但此驱动器上有待处理的扇区)。

我认为这甚至可能是一个安全问题:

通常,使用 dd_recue 命令您可以确保覆盖整个磁盘,但是由于字节差异问题,我不确定是否所有内容都被覆盖(我知道,物理坏扇区和可能在内部重新映射的扇区和挂起的扇区可能无法访问和无法被覆盖,但 SMART 日志中没有重新映射的扇区)。

在此期间,我听到了“主机保护区”和 DCO 的概念,但 dmesg 对此没有任何暗示。操作系统是 OpenSuse 12.2,内核版本 (uname -r) 是“3.4.11-2.16-desktop”。

此外,我发现这个网站:
https : //unix.stackexchange.com/questions/139705/why-does-hdparm-see-two-different-values-for-the-size-of-a-drive
也可能是暗示。但是我计算了我的值并没有找到解决方案。

有没有人对此有任何提示或解释?

问题是:
1. 为什么SMART Info和dmesg有483840字节的差异?
2. 为什么hd 规格和LBA Sectors 有65535 个扇区的区别?
3. 驱动器上是否有主机保护区或 DCO?如何发现?
4.我的硬盘实际上有多大,我如何安全擦除它(我认为 ATA SECURITY ERASE UNIT 无法通过 USB 工作,我稍后会尝试)

谢谢!

小智 3

这不是答案,但可能会有所帮助。我也遇到过类似的情况,USB 外置硬盘在以不同方式查询时报告不同的容量。

smartctl -i -d scsi /dev/sdb给出:

smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.14.27-std-def-alt1] (ALT Linux 6.2-alt0.M70P.1)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               BUFFALO
Product:              HD-PNTU3
Revision:             0001
User Capacity:        1,000,173,428,736 bytes [1.00 TB]
Logical block size:   512 bytes
Logical Unit id:      0x6000039426a846b30000000000000000
Device type:          disk
Local Time is:        Thu Jan 22 19:57:29 2015 JST
SMART support is:     Unavailable - device lacks SMART capability.
Run Code Online (Sandbox Code Playgroud)

然而,smartctl -i -d sat /dev/sdb给出:

smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.14.27-std-def-alt1] (ALT Linux 6.2-alt0.M70P.1)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Toshiba 2.5" HDD MQ01ABD...
Device Model:     TOSHIBA MQ01ABD100
Serial Number:    72D7F1JHS
LU WWN Device Id: 5 000039 426a846b3
Firmware Version: AX0A1U
User Capacity:    1,000,204,886,016 bytes [1.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5400 rpm
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS (minor revision not indicated)
SATA Version is:  SATA 2.6, 3.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Thu Jan 22 19:57:36 2015 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Run Code Online (Sandbox Code Playgroud)

它们不仅容量不同,而且型号名称不同,以及是否报告物理扇区大小为 4096 字节不同。现在,就我而言:

  • hdparm -I /dev/sdb似乎看到了更大的容量/4KiB-物理扇区信息。

  • hdparm -g /dev/sdbfdisk -l /dev/sdbcat /sys/block/sdb/sizecat /sys/block/sdb/queue/physical_block_size都显示较小的容量/512B 物理扇区信息。

至于安全问题,如果没有人曾经将敏感数据写入“无法访问”的扇区,应该没问题。fdisk看不到它们,就我而言,Windows 也看不到它们。也许它们从来不属于一个分区。

然而,似乎某些 LVM 工具确实会对这种差异感到困惑:https://unix.stackexchange.com/questions/139705/why-does-hdparm-see-two- Different-values-for-the-size-of -a-驱动器/180808