blk-mq獲得了Linux Kernel 5.8的加密支持
為了提高加密性能,Google工程師目前正在擴(kuò)展內(nèi)聯(lián)加密支持的Linux文件系統(tǒng)加密管理工具fscrypt。 相關(guān)的研發(fā)包括在Linux 5.8塊設(shè)備隊(duì)列管理blk-mq中引入了內(nèi)聯(lián)加密。
fscrypt 是用于 Linux 文件系統(tǒng)加密管理的高級(jí)工具,它管理元數(shù)據(jù)、密鑰生成、密鑰封裝與 PAM 集成,并提供用于創(chuàng)建和修改加密目錄的統(tǒng)一界面。fscrypt 的內(nèi)核部分已集成到諸如 ext4 的文件系統(tǒng)中。
blk-mq 則是 Linux 的塊設(shè)備層多隊(duì)列機(jī)制,它將 Linux 內(nèi)核存儲(chǔ)棧中請(qǐng)求層的單隊(duì)列改成多隊(duì)列,理論上提升性能。
如果接下來(lái) blk-mq 支持內(nèi)聯(lián)加密,那么它能夠在存儲(chǔ)棧中向下傳遞加密上下文,目前 Linux 內(nèi)核源碼 commit中解釋:我們必須通過(guò)某種方式讓存儲(chǔ)設(shè)備驅(qū)動(dòng)程序知道它應(yīng)該用于加密/解密請(qǐng)求的加密上下文。而上層(例如文件系統(tǒng)/fscrypt)知道情況并且管理加密上下文。這樣,當(dāng)上層提交 BIO 到塊層,這個(gè) BIO 最終到達(dá)的設(shè)備驅(qū)動(dòng)程序支持內(nèi)聯(lián)加密,那么設(shè)備驅(qū)動(dòng)程序則已經(jīng)表明了 BIO 的加密上下文。
代碼上具體改動(dòng)是將 struct bio_crypt_ctx 添加到 struct bio 中,用來(lái)表示加密上下文,同時(shí)引入各種用于操作 bio_crypt_ctx 并使 bio/request 合并邏輯知曉 bio_crypt_ctx 的函數(shù)。