如何测试我的硬盘驱动器的所有写入是否与其 4k 扇区对齐?

Bri*_*lin 9 linux advanced-format

我正在使用带有 4 个使用 4k 扇区的硬盘驱动器的 Linux。我的文件系统和原始设备之间有几层:磁盘 > Linux Raid 5 > dm-crypt > LVM。

我找到的每个资源都解释了如何设置每一层以确保该层顶部的写入将与 4k 扇区边界对齐。但是,我没有找到任何可以解释如何验证对硬盘驱动器进行的写入是否实际发生在 4k 边界上的任何内容。

我对重新检查我的设置以使用逻辑来确定它是否正确对齐不感兴趣。我想检查写入磁盘时实际发生的情况。

如何记录或查看对硬盘驱动器进行的写入的地址和大小,以便验证它们是否正确对齐?

ktf*_*ktf 2

前段时间问了自己同样的问题,并简单地做了以下事情:

使用 shell 多次将相当不寻常的字符串写入文件(例如“WackaWacka”),然后简单地使用十六进制转储(使用od)搜索磁盘的实际内容,并检查是否存储了该字符串的第一次出现正好位于 4k 块的开头。

提示:不要使用编辑器 - 它可能会创建您不知道其中也可能包含字符串的临时文件。这样做:

 $ for i in 1 2 3 4 5 ...
 >  do
 >   echo "WackaWacka!"
 >  done > mytestfile
Run Code Online (Sandbox Code Playgroud)

因此 .sh_history 可能包含搜索字符串,但不能连续 5 次;-)

然后,只需搜索:

 # sync
 # od -c /dev/sda | grep 'W   a   c   k   a'
Run Code Online (Sandbox Code Playgroud)

好吧,最好在相当空的磁盘上完成,以避免搜索千兆字节的数据;-)