具有 4K 扇区的循环设备

Mat*_*hid 5 loop-device

使用该losetup命令,您可以将常规文件转换为假装块设备。然后,您可以像任何其他设备一样对其进行分区和格式化。

有没有办法让 Linux 假装这个“设备”有一个 4K 的逻辑扇区大小?

gol*_*cks 5

fdisk有多个开关:

-b 扇区大小

指定磁盘的扇区大小。有效值为 512、1024、2048 或 4096。(最近的内核知道扇区大小。仅在旧内核上使用此值或覆盖内核的想法。)从 util-linux-2.17 开始,fdisk 区分逻辑扇区大小和物理扇区大小。此选项将两个扇区大小更改为扇区大小。

-C 环

指定磁盘的柱面数。我不知道为什么有人想要这样做。

-H 头

指定磁盘的磁头数。(当然,不是物理编号,而是用于分区表的编号。)合理的值是 255 和 16。

这不是我的社论(“我不知道为什么有人会想要这样做。”)。有点好人包含了他们当时没有看到用途的功能。


nba*_*nba 2

是的,这是可能的:如果你跑

losetup --help 
Run Code Online (Sandbox Code Playgroud)

你会注意到这个选项

-b, --sector-size
Run Code Online (Sandbox Code Playgroud)

direct-IO我建议也测试在循环块设备上使用该选项

以下是我创建循环设备的方法:

-b, --sector-size
Run Code Online (Sandbox Code Playgroud)

但也许在你的情况下,仅就--sector-size 4096足够了。

然后,您可以使用以下命令显示循环设备losetup -l

NAME          SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                            DIO LOG-SEC
/dev/loop4000         0      0         0  0 /mnt/fbx/FBX-24T/testspeed2            1    4096
/dev/loop3000         0      0         0  0 /mnt/fbx/FBX-24T/testspeed             1    4096
Run Code Online (Sandbox Code Playgroud)

请注意 4K 块扇区

另请注意,目前,您可以指定从 512 到 4096 的扇区大小,但例如不可能使用 8K 扇区 (8192),losetup如果您尝试使用大于 4096 的扇区大小,该命令将失败。

这就是我建议使用direct-IO选项的原因: --direct-io=on

当您在用于创建循环设备的底层文件上有一个 4K 扇区格式的文件系统时(请参阅losetup -Plosetup --partscan选项),使用该direct-IO选项将通过将 IO 直接发送到块设备来绕过内核存储堆栈工作队列。

它有助于保持块设备和您正在写入的文件系统的一致性(对齐)。

在某些情况下,它还提供 8 到 10 倍更好的性能,例如,当从 CIFS 共享上托管的 LUKS 文件创建循环设备时
(LUKS = Linux 统一密钥设置,又名Cryptsetup在块设备与其托管之间添加加密层)文件系统)