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