对 4k 模拟 (512e) HDD 进行分区和格式化

对 4k 模拟 (512e) HDD 进行分区和格式化

我刚刚将新的外部硬盘插入 Debian Buster 系统的 USB A 3.0 / C 3.1。

该磁盘被出售为LaCie 2.5 英寸 Porsche Design P'9227 2TB USB-C

这是输出fdisk -l /dev/sdc

Disk /dev/sdc: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: P9227 Slim      
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 33553920 bytes

我刚刚读了一些关于 4k 模拟驱动器的文章(512e),这个应该是这样的。

我很困惑如何将其格式化为 NTFS。

我尝试动动脑子,得到的结果是:

  • 分区的起始扇区可能应该从 4096 扇区开始(?)

    所以我创建了一个分区,gdisk如下所示:

    Device     Start        End    Sectors  Size Type
    /dev/sdc1   4096 3907029134 3907025039  1.8T Microsoft basic data
    
  • 扇区大小可能应该--sector-size像我一样(?)发出:

    mkfs.ntfs --no-indexing --verbose --with-uuid --label EXTERNAL_2TB --quick --sector-size 4096 /dev/sdc1
    

编辑1:

完全更新的 Windows 10 无法识别分区并要求我格式化,我使用了我最喜欢的工具,然后回到 Linux,这里是输出fdisk -l /dev/sdc

Device     Start        End    Sectors  Size Type
/dev/sdc1   2048 3907028991 3907026944  1,8T Microsoft basic data

那么为什么它必须从2048扇区开始,我不明白。


编辑2:

我不明白我在与 Windows 的兼容性方面做错了什么。每次我重新分区/重新格式化它并启动 Windows 并插入驱动器时,它只会让我自行格式化。

我非常肯定我尝试了内部的一切gdisk+ mkfs.ntfs

我想知道为什么我无法通过 Linux CLI 执行与 Windows 相同的操作。


明天早上我将回答所有问题以及评论。

我现在正在运行:

pv --progress --timer --eta --rate --average-rate --bytes -s 1953314876k < /dev/zero > /media/vlastimil/LACIE_2TB/zero

预计速度为 123 MiB/s。

答案1

物理扇区大小为 4096 意味着驱动器上的数据以 4096 字节为单位布局,即磁盘由 4096 字节的连续“分区”组成,必须以原子方式写入。出于兼容性原因,大多数具有 4096 字节扇区的磁盘将自己呈现为具有传统的 512 字节“逻辑扇区”,这意味着寻址单元是 512 字节块。

对具有 4096 字节扇区的底层磁盘的 512 扇区驱动器进行模拟的实际意义是潜在的性能问题。将单个 512 字节扇区写入 512e 磁盘时,驱动器必须读取包含 512 字节扇区的整个 4096 字节扇区,通过用新内容替换 512 字节扇区来修改 RAM(在磁盘控制器上)中的扇区,最后将整个4096扇区写回磁盘。如果您正在读取或写入几个连续的 512 扇区,而这些扇区碰巧跨越 4096 扇区边界,情况会变得更糟。

文件系统通常很好地布局其数据结构,即它们与至少 4096 字节的倍数对齐,因此较大的扇区大小通常不会出现问题。然而,如果包含文件系统本身的分区未正确对齐,这一切都会崩溃。对于 512e 磁盘,分区应对齐,以便第一个 512 字节逻辑扇区号是 8 的倍数。

答案2

我已经很长一段时间没有使用这个外部硬盘了,但现在我需要它,所以正确的发出命令(示例)如下:

mkfs.ntfs --no-indexing --verbose --with-uuid --label Lacie_2TB --quick --sector-size 512 --cluster-size 4096 /dev/sdX1

笔记:

  • 最后,调整设备和分区号。

  • 如果您想要/需要索引,请省略--no-indexing.

  • Lacie_2TB根据您的喜好调整标签 ( )。

  • 我在脑海中切换了扇区大小和簇大小,这就是罪魁祸首。


如果您想ext4在其上创建文件系统,我会推荐如下:

mkfs.ext4 -v -m 0 -E lazy_itable_init=0,lazy_journal_init=0,nodiscard -L Lacie_2TB /dev/sdX1

使用开关注意事项:

  • -v: 冗长一点
  • -m 0: 不保留任何空间root
  • -E lazy_itable_init=0,lazy_journal_init=0:完全初始化,不使用lazy
  • -E nodiscard:它是 HDD,不是 SSD,所以...
  • -L Lacie_2TB:操作系统的文件系统标签

相关内容