我有一个3TB硬盘,Ubuntu 14.04实时DVD显示为746.5GiB。我以前曾在其他情况下看到过其他磁盘的这种问题,但从未找到解决方案。我什至让Seagate更换了HDD,告诉我在磁盘映像工具以某种方式永久告诉HDD它是一个较小的磁盘之后,他们无法修复HDD。
两个问题:
这种情况下的硬盘背景
我目前正在执行命令
dd if = / dev / zero of = / dev / sdd bs = 16M
在那之前,我跑了:
root @ ubuntu:/ home / ubuntu#dd if = / dev / zero of = / dev / sdd bs = 10M count = 128 中有128 + 0条记录 128 + 0条记录 已复制1342177280字节(1.3 GB),42.8214 s,31.3 MB / s
root @ ubuntu:/ home / ubuntu#smartctl -i / dev / sdd smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic](本地版本) 布鲁斯·艾伦(Bruce Allen),克里斯蒂安·弗兰克(Christian Franke),版权所有(C)2002-13,www.smartmontools.org ===信息部分=== 型号系列:Western Digital鱼子酱绿(AF,SATA 6Gb / s) 设备型号:WDC WD30EZRX-00DC0B0 序列号:{空白} LU WWN设备ID:5 0014ee 0036bc22d 固件版本:80.00A80 用户容量:3,000,592,982,016字节[3.00 TB] 扇区大小:逻辑512字节,物理4096字节 设备是:在smartctl数据库中[有关详细信息,请使用:-P show] ATA版本为:ACS-2(未显示次要版本) SATA版本是:SATA 3.0,6.0 Gb / s(当前:1.5 Gb / s) 当地时间是:2016年7月17日星期日UTC SMART支持为:可用-设备具有SMART功能。 SMART支持为:已启用
root @ ubuntu:/ home / ubuntu#gdisk -l / dev / sdd GPT fdisk(gdisk)版本0.8.8 分区表扫描: MBR:不存在 BSD:不存在 APM:不存在 GPT:不存在 创建新的GPT条目。 磁盘/ dev / sdd:1565565872扇区,746.5 GiB 逻辑扇区大小:512字节 磁盘标识符(GUID):1F876634-0284-4A1C-8FDF-34A255B9DCCC 分区表最多可容纳128个条目 第一个可用扇区是34,最后一个可用扇区是1565565838 分区将在2048个扇区的边界上对齐 总可用空间为1565565805个扇区(746.5 GiB) 编号起始(扇区)结束(扇区)大小代码名称 root @ ubuntu:/ home / ubuntu#
它通过USB HDD扩展坞连接。也许这就是问题的根源。我将重新接线,以便将其直接插入主板上的SATA端口。同时,这里是请求的其他信息。
root @ ubuntu:/ home / ubuntu#sg_readcap --16 / dev / sdd 不支持读取容量(16) root @ ubuntu:/ home / ubuntu#sg_readcap / dev / sdd 读取容量结果: 最后一个逻辑块地址= 1565565871(0x5d50a3af),块数= 1565565872 逻辑块长度= 512字节 因此: 设备大小:801569726464字节,764436.5 MiB,801.57 GB root @ ubuntu:/ home / ubuntu#hdparm -N / dev / sdd / dev / sdd: 最大扇区数= 5860533168/1(5860533168?),HPA设置似乎无效(错误的内核设备驱动程序?)
root@ubuntu:/home/ubuntu# sg_readcap --16 /dev/sdd
READ CAPACITY (16) not supported
这意味着,当USB扩展坞转换驱动器的ATA IDENTIFY DEVICE数据(以hdparm -I
/表示smartctl -i
)的容量时,就逻辑扇区数而言,它最多可以报告最大32位的大小(即0xffffffff,4294967295)。这是SCSI READ CAPACITY(10)的继承限制:
Logical Sector Size | Maximum capacity supported (TiB / TB)
512 | ~2.0 / ~2.2
4096 | ~16.0 / ~17.6
由于您的驱动器是AF 512e驱动器,总共具有5860533168 / 0x15d50a3b0 512字节逻辑扇区(需要33位表示),因此只有支持SCSI读取容量(16)的SATA / USB桥才能正确处理它。当大小被截断为32位时,它将变为:
101011101010100001010001110110000 (5860533168)
到
01011101010100001010001110110000 (1565565872)
Linux内核,或者可能是所有操作系统,基本上从不向USB驱动器“直接”发出ATA IDENTIFY DEVICE命令(即封装在SCSI ATA PASS-THROUGH命令中),而不会向您发出SCSI READ CAPACITY命令(由您手动发出sg_readcap
)得到他们的能力。
仅当驱动器实际上是与SATA / USB桥连接的SATA驱动器时,该命令才由桥中实现的SCSI-ATA转换层处理,然后该层将向SATA驱动器发出ATA IDENTIFY DEVICE命令以获取信息。需要为READ CAPACITY命令形成响应数据。
但是,hdparm
和smartctl
几乎(仅)专用于ATA驱动器的实用程序,因此它们几乎可以通过ATA PASS-THROUGH进行所有操作。(此外,由于它们是用户空间实用程序,因此希望您(用户)仅在适当类型的设备上使用它们。)因此,您最终在不同的地方获得了不同的容量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句