Linux開發(fā)者討論建立跟蹤塊/磁盤運作的全局計數(shù)器
微軟和systemd開發(fā)者提議為Linux內(nèi)核的塊設備變化建立一個全局計數(shù)器,以便更好地跟蹤存儲系統(tǒng)的變化,為磁盤和其他塊設備變化提供一個全系統(tǒng)唯一的數(shù)編碼,而不是以每個磁盤為基礎。這個單調(diào)增長的數(shù)字是面向全系統(tǒng)的。
這樣systemd和其他用戶空間軟件就可以更好地關聯(lián)那些最終重復使用同一個設備的事件,比如/dev/sda,特別是/dev/loop0和其他設備,當一個設備被分離,另一個被添加時,這些設備往往會被重復使用。特別是在關注循環(huán)上線的設備時,由于沒有序列號或其他唯一標識的手段,所以沒有更好的手段來發(fā)現(xiàn)它是否是之前的那個設備。
雖然用戶層面可以使用事件監(jiān)聽器來跟蹤磁盤的變化,但由于事件可能會晚到達或無法正確排序以及其他一些問題,這種全局計數(shù)器的跟蹤被認為是最好的方法之一。另外,圍繞塊命名空間和其他改進的工作也在進行,但至少systemd的開發(fā)者認為這種方法對Linux內(nèi)核來說是非常值得和有益的。
這個全局號碼回被放在uevent中,這樣用戶空間就可以使用它來關聯(lián)驅(qū)動重用設備的時間,同時也會增加一個新的ioctl BLKGETDISKSEQ來獲取磁盤序列號,序列號也會通過sysfs的diskseq來公開。每當?shù)讓用襟w設備發(fā)生變化時,這個序列號就會遞增,同樣,每當設置或改變備份文件時,循環(huán)設備也會遞增。
對微軟的Matteo Croce發(fā)出的擬議補丁感興趣的人可以看到這個補丁系列和由此產(chǎn)生的關于這個功能的優(yōu)點的討論:
https://lore.kernel.org/lkml/20210623105858.6978-1-mcroce@linux.microsoft.com/