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


12

我购买了Seagate ST3000DM001 3TB硬盘驱动器。它在外壳内出售。我格式化为ext4,向其中复制了一些数据,然后从机箱中将其删除,然后将其直接连接到主板上。我的数据对于OS是不可见的(它看到一个未知的〜300GiB分区,其余的则作为可用空间),所以我开始阅读有关Advanced Format和> 2TB驱动器的信息。

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

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

然而:

Gparted显示了具有512k扇区的磁盘,我知道这是不正确的1

gparted屏幕截图

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

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

Parted报告当我选择最少时,驱动器已对齐:

(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

我有一些这些Seagte驱动器以及WD和Fujitsu / HGST 3TB驱动器,它们都可以正常工作。您可能对GParted的看法是正确的,因为当前通过USB连接的希捷硬盘在GParted中显示为4096扇区大小。我的GParted版本是0.12.1,这是数量级的默认值。
LiveWireBT

我相信如果我通过USB连接它,它在这里也会显示4096。那里的USB-SATA控制器有些神奇之处。
qwazix

Answers:


5

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


11

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

我的直觉(它只是预感)是您的问题是由在USB机箱和磁盘的直接连接之间切换引起的。某些机箱将磁盘上的512字节逻辑扇区转换为提供给计算机的4096字节逻辑扇区-也就是说,与高级格式化磁盘中的固件相反。我不是很肯定,但是我怀疑某些机箱只能在2TiB以上的磁盘上执行此操作。MBR和GPT分区方案都通过扇区号引用数据,因此更改扇区大小会使分区数据无效。因此,如果您将磁盘准备在以这种方式转换的USB磁盘盒中,然后尝试直接使用磁盘(反之亦然),则会看到错误,因为分区(甚至GPT备份数据)不会被使用。计算机期望的位置。就像告诉蒙着眼睛的人“

这个问题的解决方案是准备和使用的磁盘一个方式- 无论是使用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您提到的错误可能表示另一个问题。OTOH,这可能是副作用parted尝试从磁盘末尾读取备份GPT数据。无论哪种方式,如果您看到逻辑扇区大小的变化,都应在处理其他任何问题之前解决该问题。如果要重新分区磁盘,但由于Error synchronizing错误而出现问题,请尝试使用gdiskcgdisk(在gdisk软件包中)而不是parted或GParted。与gdisk家庭相比,parted家庭对错误的防范能力更强。


我确实认为问题出在USB和内部之间。确实,这是我最初的想法,这就是为什么将磁盘放回PC并与sata连接之后重新创建分区表的原因。(我首先将其取出只是为了取出数据)。我不想再次删除它来测试通过USB报告的逻辑扇区,但是所有事实都表明了这一点。
qwazix

我不打算保留交换接口,该磁盘可以像现在一样工作,并在SATA连接下进行准备。我只是担心您提到的性能损失,我想了解实际情况。parted /dev/sdb print返回,512/4096因此gParted似乎报告了逻辑扇区大小,这解释了为什么@LiveWireBT看到同一磁盘(通过USB连接)看到4096的原因,并如上所述也确认了您的预感。
qwazix

Verbatim Store'n'Go外部驱动器也遇到了同样的问题,逻辑扇区大小为512,而物理大小为
4096。–令人讨厌的

4

Linux内核和实用程序都进行了更改,以支持Advanced Format驱动器。这些更改确保高级格式驱动器上的所有分区在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兼容。这就是为什么在部分使用print命令打印详细信息时,会说扇区大小为逻辑/物理512B / 4096B。那很正常

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

如果看不到整个3TB,请首先在BIOS中检查它是否没有限制磁盘大小。也许您需要BIOS更新以支持磁盘。

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

因此,将单位更改为MiB,打印磁盘详细信息,这也将打印MiB中的磁盘大小,并创建从1MiB开始并在最后一个MiB(或最后一个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论坛


感谢您的答复,但并不能真正回答我的问题。我知道内核可以识别驱动器的扇区大小,而gparted 应该也可以识别,但是它会报告其他情况,我很好奇是否有对此的解释,是否是错误或是否做错了什么。
qwazix

0

只要将分区对齐为4KB的倍数,就可以了。否则,您不必对具有4KB物理扇区的驱动器做任何特殊的事情。

旧的分区软件在63x512B的多个扇区上对齐了分区,如果驱动器具有4KB的物理扇区,则将导致性能下降,因为这是31个半字节,而不是4KB的整数倍。

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

如果不对齐,会发生什么?

如果您不将分区调整为4KB的倍数,则最糟糕的情况就是性能下降(对于小文件而言,这是相当可观的)。具有4KB扇区的驱动器倾向于模拟512B扇区,以与现有系统兼容。因此,如果您仅将它们视为512B扇区驱动器,它们就可以完美地发挥作用。但是,当您写入单个512B区域时,它将重写整个4KB扇区。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.