许多新硬盘的物理扇区大小为 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.