Linux磁盘上的默认512字节物理扇区大小是否适用于SSD磁盘?

・3 分钟阅读

问题

GSmartControl和其他命令行工具(如fdisk ,,cat/sys/block/sd*/queue/hw_sector_size, cat/sys/block/sd*/queue/physical_block_size),我在我的两个磁盘中使用了相同的:


Sector Size: 512 bytes logical/physical



这是默认的Ubuntu 18.10 (后来升级到19.04 )安装,但是,两个磁盘上的stat -f命令都会报告:


Block size: 4096 Fundamental block size: 4096



磁盘都是SSD磁盘,而且AFAIK磁盘需要的扇区大小为4K ,这么做好不好,还是我做错了什么?


回答 1

根据Wikipedia "高级格式(AF)是用于在磁盘驱动器中存储超过512,520或每扇区528字节的数据的任何磁盘扇区格式,例如,高级格式化驱动器(AFD)的4096个扇区, "高级格式(AF)是一种磁盘格式,本机使用扇区大小为4,096字节而不是512字节。为了维护与遗留系统的兼容性,AF磁盘模拟的扇区大小为512字节。

在两个SSD上运行stat -f和smartctl我得到的结果相同,安装时,这两个SSD被自动识别,并且零配置,所以,看到的数据是块大小和扇区大小。


回答 2

在过去,512字节扇区是磁盘的标准,系统一次只读/写入一个扇区,这是旧硬盘驱动器最好的做法。

现在,由于现代驱动器如此密集,如此之快,如此智能,一次只去读写一个扇区,就降低了总吞吐量。

诀窍在于,如何提高总吞吐量,但是,还仍然保持与旧/标准磁盘子系统的兼容性? 创建一个4096块大小,由8个512字节物理扇区组成,4096现在是磁盘的最小读/写传输块,但是,它会以兼容的512字节传送到操作系统。

这意味着即使系统只需要一个512字节的信息扇区,驱动器也会读取8个512字节扇区,但是,假如系统需要接下来读七个扇区数据,那么就已经一次性读取了它,所以,这时候就没有磁盘i/o需要发生,因此,总吞吐量提高了。


讨论
Tianye profile image