Linux开发者讨论建立跟踪块/磁盘运作的全局计数器

微软和 systemd 开发者提议为 Linux 内核的块设备变化建立一个全局计数器,以便更好地跟踪存储系统的变化,为磁盘和其他块设备变化提供一个全系统唯一的数编码,而不是以每个磁盘为基础。这个单调增长的数字是面向全系统的。

image.jpg

这样 systemd 和其他用户空间软件就可以更好地关联那些最终重复使用同一个设备的事件,比如/dev/sda,特别是/dev/loop0 和其他设备,当一个设备被分离,另一个被添加时,这些设备往往会被重复使用。特别是在关注循环上线的设备时,由于没有序列号或其他唯一标识的手段,所以没有更好的手段来发现它是否是之前的那个设备。

虽然用户层面可以使用事件监听器来跟踪磁盘的变化,但由于事件可能会晚到达或无法正确排序以及其他一些问题,这种全局计数器的跟踪被认为是最好的方法之一。另外,围绕块命名空间和其他改进的工作也在进行,但至少 systemd 的开发者认为这种方法对 Linux 内核来说是非常值得和有益的。

这个全局号码回被放在 uevent 中,这样用户空间就可以使用它来关联驱动重用设备的时间,同时也会增加一个新的 ioctl BLKGETDISKSEQ 来获取磁盘序列号,序列号也会通过 sysfs 的 diskseq 来公开。每当底层媒体设备发生变化时,这个序列号就会递增,同样,每当设置或改变备份文件时,循环设备也会递增。

对微软的 Matteo Croce 发出的拟议补丁感兴趣的人可以看到这个补丁系列和由此产生的关于这个功能的优点的讨论:

https://lore.kernel.org/lkml/20210623105858.6978-1-mcroce@linux.microsoft.com/

本文链接

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注