Linux開發者討論建立跟踪塊/磁盤運作的全局計數器
微軟和systemd開發者提議為Linux內核的塊設備變化建立一個全局計數器,以便更好地跟踪存儲系統的變化,為磁盤和其他塊設備變化提供一個全系統唯一的數編碼,而不是以每個磁盤為基礎。這個單調增長的數字是面向全系統的。
這樣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 /