如何格式化4k扇区硬盘?

我买了希捷ST3000DM001 3TB硬盘。 它是在一个shell内出售的。 我格式化为ext4,将一些数据复制到它,然后我从机箱中删除它并将其直接连接到主板。 操作系统看不到我的数据(它看到一个未知的~300GiB分区,其余为可用空间)所以我开始阅读有关高级格式和> 2TB驱动器的内容。

我再次将磁盘与USB连接,复制了所有数据,然后再次插入sata。 我使用gparted创建了一个GPT分区表(ubuntu磁盘实用程序不会让我Error synchronizing after initial wipe: Timed out waiting for object (udisks-error-quark, 0进行Error synchronizing after initial wipe: Timed out waiting for object (udisks-error-quark, 0 ),创建了一个大的3Tb Ext4分区,离开了默认值与MiB Align to并格式化。

正确识别驱动器,并正确安装。 文件可以成功从驱动器复制到驱动器。

然而:

Gparted显示磁盘有512k扇区,我知道这不是真的1

gparted截图

cat /sys/block/sdb/queue/physical_block_size报告4096

我发现一些报告称libparted与非512k扇区2有问题,而其他3报告称与MiB对齐就足够了。

Parted报告当我选择minimal时驱动器是对齐的:

 (parted) align-check alignment type(min/opt) [optimal]/minimal? min Partition number? 1 1 aligned (parted) 

我的配置是否正确? 我是否有性能损失,因为磁盘格式化为512k扇区,gParted是否报告错误值或者我已经理解了整个错误?

  1. http://www.storagereview.com/seagate_barracuda_3tb_review_1tb_platters_st3000dm001
  2. http://ubuntuforums.org/showthread.php?t=1536933&p=9754234#post9754234
  3. http://wdc.custhelp.com/app/answers/detail/a_id/5655

它报告512字节,因为这是与旧操作系统(Windows)向后兼容的逻辑扇区大小。 (g)parted将分区对齐到1 MiB,这足以与使用4k物理扇区的驱动器正常工作,所以它的方式很好。

首先,大多数高级格式化驱动器的逻辑扇区大小为512字节,即使物理扇区大小为4096字节(4KiB)。 这是通过在驱动器的固件中处理数据来完成的,如果分区没有正确对齐,可能会导致性能问题 。 但是,这可能不是您问题的根源,您对分区对齐的关注是错误的。 (可以肯定的是,分区对齐重要;它不是问题的根源。)

我的预感(这只是一种预感)是你的问题是由USB机箱和磁盘的直接连接之间的切换引起的。 某些机箱将磁盘上的512字节逻辑扇区转换为提供给计算机的4096字节逻辑扇区 – 也就是说,与高级格式磁盘中的固件相反。 我不是肯定的,但我怀疑有些机箱仅在超过2TiB的磁盘上执行此操作。 MBR和GPT分区方案都是按扇区号引用数据,因此更改扇区大小会使分区数据无效。 因此,如果您在以这种方式转换的USB机箱中准备磁盘然后尝试直接使用磁盘(反之亦然),您将看到错误,因为分区(甚至GPT备份数据)将不会计算机所期望的地方。 这就像告诉被蒙住眼睛的人“向前走2”,你指的是2英尺,但这个人认为你的意思是2米,所以走进一堵墙。

解决此问题的方法是以一种方式准备和使用磁盘 – 使用USB机箱使用直接连接,而不是两者。 如果由于某种原因两者都是必需的,那么您需要找到一个无需应用此类翻译即可运行的机箱。

要测试我的假设,您可以使用报告逻辑扇区大小的工具(如parted )。 例如:

 sudo parted /dev/sda print Model: ATA Hitachi HDP72505 (scsi) Disk /dev/sda: 500GB Sector size (logical/physical): 512B/512B 

我从这个输出中省略了一堆信息。 重要的细节在这里显示的最后一行:逻辑和物理扇区大小都是512字节。 如果运行此测试,然后以其他方式重新连接磁盘并再次运行,则可以比较结果。 如果逻辑扇区大小根据您附加磁盘的方式而改变,那么我的假设是正确的,这是您的问题的根源。 或者至少,这是一个问题; 也可能有其他人。 特别是,您提到的Error synchronizing after initial wipe错误Error synchronizing after initial wipeError synchronizing after initial wipe可能表示另一个问题。 OTOH,这可能是parted尝试从磁盘末端读取备份GPT数据的副作用。 无论哪种方式,如果您发现逻辑扇区大小发生了变化,您应该在处理其他任何问题之前解决该问题。 如果要重新分区磁盘但由于Error synchronizing错误而出现问题,请尝试使用gdiskcgdisk (在gdisk包中)而不是parted或GParted; 与parted家庭相比, gdisk系列更能抵御错误。

已对Linux内核和实用程序进行了更改以支持高级格式化驱动器。 这些更改可确保高级格式化驱动器上的所有分区在4K扇区边界上正确对齐。 内核版本2.6.31及更高版本中提供了对高级格式驱动器的内核支持。 以下Linux实用程序支持分区和格式化高级格式化驱动器:

Fdisk:GNU Fdisk是一个分区硬盘驱动器的命令行实用程序。 1.2.3及更高版本支持高级格式化驱动器。

Parted:GNU Parted是一个用于分区硬盘的图形工具。 2.1及更高版本支持高级格式化驱动器。

4K本机(4Kn)磁盘具有4 KB逻辑扇区大小。 现代操作系统可以在这些磁盘上存储数据,但它们通常无法从这些磁盘启动。 这些磁盘通常是带USB连接的外部驱动器。

要创建用作媒体存储设备的分区,只需按键盘上的Ctrl + Alt + T即可打开终端。 打开时,运行以下命令:

 sudo mkfs.ext4 -m 0 /dev/sdb1 

大多数4k磁盘的物理扇区大小为4096字节,因此3TB可以放在板上,但它们仍然具有512B逻辑扇区大小,以便与期望一个扇区为512B的OS兼容。 这就是为什么当你在parted中使用print命令来打印细节时,就是扇区大小为逻辑/物理512B / 4096B。 这很正常。

这种“转换”是由磁盘本身的智能完成的,这是正常的。 它应该如何运作。

如果您无法在BIOS中看到整个3TB首先检查它是否限制磁盘大小。 也许您需要bios更新来支持磁盘。

也使用parted来创建从0开始的分区,这是一个错误。 您需要在扇区2048上启动第一个部分,该部分相当于1MiB,以便磁盘上的分区对齐以获得最佳性能。

因此,将单位更改为MiB,打印将在MiB中打印磁盘大小的磁盘详细信息,并创建从1MiB开始到最后一个MiB(或最后一个)之前的分区(如果您只需要单个分区) 。

例如,3TB磁盘实际上应该具有2,861,022 MiB。 因此,在名为/ dev / sdX的磁盘设备上创建一个跨越整个磁盘的单个分区就像(用正确的字母替换X):

 sudo parted /dev/sdX unit MiB mklabel gpt print (to see the total size in MiB) mkpart primary 1 2861022 quit 

如果磁盘大小很少,则MiB大于或小于2861022调整结束位置。

而已。 之后,在分区上创建所需的文件系统。

来源和额外阅读

4K扇区驱动器和Linux

在Linux中进行错误检查并安装4k驱动器

Ubuntu论坛

只要您将分区对齐4KB的倍数,就可以了。 对于具有4KB物理扇区的驱动器,您无需执行任何特殊操作。

旧的分区软件在多个63x512B扇区上对齐分区,如果驱动器具有4KB物理扇区,则会导致性能不佳,因为这是31个半千比特,而不是4KB的倍数。

实际上,现在Ubuntu中没有可用的分区软件会再执行此操作(除非您以某种方式具体请求它)。 大多数将默认与1MiB(2048x512B扇区,也是256x4KB扇区)的倍数对齐。

如果你没有对齐它会发生什么?

如果你没有将分区对齐到4KB的倍数,那么最糟糕的情况就是性能损失(对于小文件来说是一个非常重要的)。 具有4KB扇区的驱动器倾向于模拟512B扇区以与现有系统兼容。 因此,如果您将它们视为512B扇形驱动器,它们的function非常好。 但是当你写入一个512B区域时,它将重写整个4KB扇区。

因此,出于性能原因,确保在文件系统中使用的4KB群集与驱动器上的4KB扇区对齐非常重要,这样单个群集写入不会导致需要在驱动器上写入两个4KB扇区。