Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
是否可以创建具有奇数大小的 Linux (2.6) 块设备(例如环回设备)?我没能做到。losetup似乎向下舍入到 512 字节边界。ubd用户模式 Linux 设备的设备ubd似乎四舍五入到 512 字节边界。在struct request中,我们有sector_t __sector读/写操作的块偏移量。
losetup
ubd
struct request
sector_t __sector
我问这个问题只是为了教育目的。我可以应付 512 字节的边界,但我仍然对是否可以绕过它感兴趣。在这个问题中,我对其他抽象层不感兴趣(例如使用常规文件或字符设备)。
这就是块设备而不是字符设备的原因:块粒度。之所以存在这种二分法,是因为将一次工作一个块的真实硬件建模为同时处理块的抽象,效率要高得多。否则,每个操作都会变成更昂贵的计算。
正如您所提到的,绕过它的方法是使用面向字符的设备或抽象。这是 Unix 设备模型的核心:一切都是一系列八位字节,除了只能虚拟化为一个的东西。
不,Linux 2.6 块层不理解小于 512 字节的任何内容。任何更小的东西(尤其不是 2 的幂)都需要对大量代码进行重大重写。