针对物理扇区大小 4096 HDD 优化逻辑扇区大小

针对物理扇区大小 4096 HDD 优化逻辑扇区大小

许多新硬盘的物理扇区大小为 4096。是否可以让系统使用相同大小的逻辑扇区大小,而不是默认的逻辑扇区大小 512?

它会加速批量读取和写入吗?哪里可以配置呢?

答案1

512 字节并不是真正的默认扇区大小。这取决于您的硬件。

您可以通过伪文件系统显示磁盘报告的物理/逻辑扇区大小/sys,例如:

# cat /sys/block/sda/queue/physical_block_size
4096
# cat /sys/block/sda/queue/logical_block_size
512

这两个值有什么区别?

  • physical_block_size是驱动器能够在原子操作中写入的最小块大小。
  • logical_block_size是驱动器能够写入的最小大小(参见 Linux 内核文档)。

因此,如果您有 4k 驱动器,那么您的存储堆栈(文件系统等)使用等于或大于物理扇区大小的内容是有意义的。

这些值也显示在最新版本的 中fdisk,例如:

# fdisk -l /dev/sda
[..]
Sector size (logical/physical): 512 bytes / 4096 bytes

在当前的 Linux 发行版上,程序(应该关心最佳扇区大小)mkfs.xfs将默认选择最佳扇区大小(例如 4096 字节)。

但您也可以通过选项显式指定它,例如:

# mkfs.xfs -f -s size=4096 /dev/sda

或者:

# mkfs.ext4 -F -b 4096 /dev/sda

无论如何,大多数mkfs变体也会在执行期间显示所使用的块大小。

对于现有文件系统,可以使用以下命令确定块大小:

# xfs_info /mnt
[..]
meta-data=                       sectsz=4096
data     =                       bsize=4096
naming   =version 2              bsize=4096
log      =internal               bsize=4096
         =                       sectsz=4096
realtime =none                   extsz=4096

或者:

# tune2fs -l /dev/sda
Block size:               4096
Fragment size:            4096

或者:

# btrfs inspect-internal dump-super /dev/sda | grep size
csum_size             4
sys_array_size        97
sectorsize            4096
nodesize              16384
leafsize              16384
stripesize            4096
dev_item.sector_size  4096

在分区上创建文件系统时,要检查的另一件事是分区起始地址是否实际上与物理块大小对齐。例如,查看fdisk -l输出,将起始地址转换为字节,将它们除以物理块大小 - 如果分区对齐,则提醒必须为零。

答案2

不,这是不可能的,即使是也没关系。无论如何,IO 通常以至少 4096 字节为单位完成,并且通常更多。

答案3

是的,这是可能的,但是这样做会导致驱动器的填充速度比应有的速度快得多。对于小于 512K 的文件,每个文件将占用完整的 4096K (4MB),并用 0 填充扇区的其余部分,因为大多数文件系统(NTFS 等)无法允许文件共享扇区。文件系统的最佳选择是允许可变扇区大小,但这会增加 MFT(主文件表)的大小并增加数据损坏的风险,同时降低轻松恢复数据的能力。换句话说,恢复软件无法完全了解边界。因此,虽然 4096K 逻辑扇区大小对于大文件来说非常棒,但对于普通的日常使用 PC,它只是一堆 0。现在,话虽如此,当数据小于逻辑扇区大小时,可以选择将数据存储在 MFT 本身中。然而,这意味着您的 MFT 变得巨大并且数据将被写入两次(您的 HDD 上有两个 MFT 副本)。您还必须指定 MFT 的最大大小,当达到最大大小或驱动器使用量超出 MFT 可用的空间时,这可能会导致问题。所有这一切都基于 NTFS 文件系统的使用。从好的方面来说,NTFS 确实允许您对 4MB 或更小的任何逻辑扇区大小的文件在块级别使用本机压缩。此限制是由于 NTFS 压缩的工作方式而产生的。无论逻辑扇区大小如何,都会读取和压缩 4MB 块。当然,对于扇区大小大于 4MB 的任何东西来说,这种情况不会发生,因为它会跨越边界并丢失数据。

那么,这对你来说是不是有点清楚了?

答案4

Sector:

1) Logical Sector: Called Native Sector.

Manufacture default setting. user cannot change.

Before 2010 year: 512b/sector

After 2010 year: 4k/sector.

Few manufacture provide HDD tool to change native sector.

2) Physical Sector: Called Cluster(or allocation unit - FAT windows) or Block(Linux/Unix)

User can change physical sector size 512b,1k,2k,4k,... by format or partition tool. Physical sector contains one or few more native sectors.

(example1: if you have HDD 512b/native sector: user can set 4K/Physical sector. this mean 1 cluster = 4 native sector)

(example2: if you have HDD 4K/native sector: user can set 4K/Physical sector. this mead 1 cluster = 1 native sector)

3) File system deal with Physical sector(or block or Cluster) only.

相关内容