我在使用WD20EARS驱动器,其针脚7和8跨接,以便在不支持4k扇区的操作系统上使用它。但是现在,我想将该硬盘驱动器转移到具有4k扇区支持的操作系统上。
我删除了跳线,将其连接到Windows Server 2008 R2,并执行了快速格式化。但是,DiskCheckup报告“每个扇区的字节数”属性仍为512。
为了将该驱动器用作4k扇区驱动器,我还需要做什么?
我在使用WD20EARS驱动器,其针脚7和8跨接,以便在不支持4k扇区的操作系统上使用它。但是现在,我想将该硬盘驱动器转移到具有4k扇区支持的操作系统上。
我删除了跳线,将其连接到Windows Server 2008 R2,并执行了快速格式化。但是,DiskCheckup报告“每个扇区的字节数”属性仍为512。
为了将该驱动器用作4k扇区驱动器,我还需要做什么?
Answers:
我认为这是正确的行为。4k磁盘仍在接口侧报告512字节扇区。尽管它们在内部以4k块为单位寻址扇区。
大多数驱动器中的跳线仅使扇区移位。在大多数驱动器上,它将扇区寻址移位1。其原因是不支持4k的操作系统,例如Winodws XP。为了理解,您需要知道Windows XP确实创建了从扇区63开始的第一个分区(是的,这不是错字)。
在大多数情况下,Windows将使用具有4k分配单元(NTFS群集)的文件系统。因此,您将假定从传统驱动器读取NTFS群集时,它仅需读取8个物理块。非常简单。
现在,驱动器也将使用4k扇区大小。这是完全可以的,因为OS永远不会读取小于4k的群集,因为这是最小的分配单位(假设您在格式化期间未强制使用较小的FS群集)。在我撰写本文时,出于兼容性原因,驱动器仍在接口级别公开512字节的扇区。但是,如果您仅读取一个512字节块,则驱动器内部无论如何都会读取4k扇区,然后将其拆分为仅通过电缆接口发送512字节。
Windows XP的问题在于,默认情况下,分区与框63对齐。这会导致NTSF群集与物理块的对齐错误。我创建了一张小图来说明这一点:
如您在Windows XP上的图片中所见,逻辑群集未与物理4k块对齐。因此,如果Windows读取逻辑NTFS群集,则它要求驱动器读取两个块,而不仅仅是一个块。更糟的是,如果您只需要一个NTFS群集,它将读取两个扇区并必须合并它们,以便仅将请求的数据返回给OS。
对于写操作,甚至更糟。在这种情况下,驱动器必须读取两个物理4k扇区,然后将它们的内容与新NTFS群集的内容合并,然后才能将两个扇区都保存回磁盘。这意味着驱动器必须读取8k,合并到缓冲区并写入8k,而不仅仅是通过覆盖硬盘来替换扇区。这大大减慢了写操作的速度。
为了防止不必要的合并,HDD制造商添加了可通过跳线启用的“兼容性” hack。它只是将每个512字节的扇区地址增加1。因此,Windows创建的第一个分区将从扇区64开始,并且映射如下所示:
现在,对逻辑4k NTFS块的任何读/写都会导致精确地读/写一个物理扇区。
当然,如果您已经创建与4k扇区边界对齐的分区,则根本不需要此解决方法。例如,在Linux上,您可以简单地使用它fdisk
来定义分区从哪个块开始。因此,在此处使用8的倍数是一个好主意。
Windows从Vista开始在扇区2048 AFAIR上启动第一个分区。因此,这里不再发生此问题。
警告:如果仍在支持4k的操作系统(如Vista,Win7或Win2k8 R2)上使用跳线解决方法,则这实际上可能会破坏扇区对齐。原因是驱动器随后将再次将扇区地址增加1,从而导致第一个分区与扇区2049对齐,这又导致性能下降。
因此,请确保在使用支持4k的操作系统之前,先将跳线删除,然后再对驱动器进行分区。在您的特定情况下,我认为一切都应该没问题,只要您确实在卸下跳线的情况下重新分区了驱动器即可。格式化驱动器与扇区对齐和4k寻址无关。在格式化期间,您唯一需要确保的是,不要使用小于4k的群集大小,因为2k NTFS群集只会导致要求为从OS进行的每个HDD访问仍然读取完整的4k扇区。顺便说一句:使用8k NTFS群集仍然完全可以,因为磁盘只需为每个NTFS读/写操作读取2个扇区。