具有 4K 扇区的循环设备

具有 4K 扇区的循环设备

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

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

答案1

fdisk有多个开关:

-b 扇区大小

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

-C 环

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

-H 头

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

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

答案2

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

losetup --help 

你会注意到这个选项

-b, --sector-size

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

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

losetup --sector-size 4096 --direct-io=on $loop_device $diskfile

但也许在你的情况下,仅就--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

请注意 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在块设备与其托管之间添加加密层)文件系统)

答案3

水平不低。当然可以告诉一些 mkfs 调度实用程序,它们在格式化时应该使用特定的块大小。mkfs.*有关详细信息,请参阅特定工具的手册页。

答案4

相关内容