十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
本篇內(nèi)容介紹了“如何理解ext2文件系統(tǒng)中的xattr”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)是一家專業(yè)提供定安企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、H5場(chǎng)景定制、小程序制作等業(yè)務(wù)。10年已為定安眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
文件系統(tǒng)支持一特性就是擴(kuò)展性,給一個(gè)文件(inode)添加各種屬性。對(duì)于ext2文件系統(tǒng)來說,xattr(extend attribution)是它支持的為數(shù)不多的現(xiàn)代文件系統(tǒng)的特征之一。
那么為什么需要這個(gè)特性呢?這要從文件系統(tǒng)的元數(shù)據(jù)和數(shù)據(jù)的區(qū)別說起。xattr屬于元數(shù)據(jù),元數(shù)據(jù)一般是固定的,但一些場(chǎng)景下它也要提供一定的擴(kuò)展性,而xattr就是為元數(shù)據(jù)的擴(kuò)展性而存在的。下面扯下我對(duì)元數(shù)據(jù)和數(shù)據(jù)的理解,分析下為什么需要元數(shù)據(jù)。
我們知道文件的數(shù)據(jù)分為兩類:元數(shù)據(jù)(meta data)和數(shù)據(jù)(data)。元數(shù)據(jù)是用來控制用戶對(duì)數(shù)據(jù)的操作的。這也符合k8s中通過對(duì)象控制對(duì)象的程序范式。
數(shù)據(jù):記錄真正對(duì)用戶有意義的信息。如:文件中的內(nèi)容;文件名。
元數(shù)據(jù):輔助完成數(shù)據(jù)存取。如:文件的創(chuàng)建、修改時(shí)間,文件的權(quán)限。
一般來說元數(shù)據(jù)不需要用戶主動(dòng)感知,比如文件創(chuàng)建時(shí),對(duì)應(yīng)的時(shí)間信息由文件系統(tǒng)自動(dòng)寫入。但必需以不同的方式提供它的訪問。如果和常規(guī)數(shù)據(jù)放一起了,如下:
filename: hello.txt modify_time: 2021-3-7 20:00:00 regular_data: hello world
這種方式可行嗎?當(dāng)然可行了。只是你無法控制用戶是否會(huì)誤操作,把對(duì)應(yīng)的元數(shù)據(jù)改掉了;模塊化編程的原則之一最小接口原則,在這里也適用,單獨(dú)的接口修改,對(duì)比直接的修改來說,接口的能力(自由度)下降了,系統(tǒng)對(duì)用戶的約束增強(qiáng)了,可以避免用戶對(duì)數(shù)據(jù)的亂修改。
另外一個(gè)問題是,元數(shù)據(jù)的變更是穩(wěn)定的,即使你頻繁地讀寫一個(gè)文件,這個(gè)文件的元數(shù)據(jù)需要修改的只是對(duì)應(yīng)的訪問時(shí)間戳和修改時(shí)間戳。沒有分開的情況下,元數(shù)據(jù)整體被頻繁的讀出,寫入,這對(duì)系統(tǒng)來說是無意義的消耗,更別說在那個(gè)計(jì)算能力不足的年代背景下了。
通過以下分析,我們知道元數(shù)據(jù)需要單獨(dú)存儲(chǔ)。單獨(dú)存儲(chǔ)就需要單獨(dú)的接口,因?yàn)槠胀ㄎ募淖x寫接口權(quán)限過大。但一方面,對(duì)一個(gè)文件來說,通過的讀寫接口不能滿足對(duì)元數(shù)據(jù)修改的需求,需要提供其他系統(tǒng)接口。Linux下就是用ioctl系統(tǒng)調(diào)用實(shí)現(xiàn)對(duì)元數(shù)據(jù)的修改的。
主要setfattr和getfattr。通過查看ext2代碼才知道,它支持三種類型的attr。通過不同的命名前綴區(qū)分。
security.xxx: 目前是selinux在用;
user.xxx: 普通用戶也可以使用;
trusted.xxx: 只有超級(jí)用戶可以使用,可以用來在用戶空間實(shí)現(xiàn)一些特性。
示例:
為test文件增加一個(gè)屬性。
setfattr -n user.word -v "hello world" test getfattr -n user.word hello # file: hello user.word="hello world"
目前了解的是ceph演進(jìn)過程中,曾經(jīng)用xattr來保存底層的一些信息;
安全審計(jì)相關(guān)的應(yīng)用會(huì)用到security attr;
attr同樣也支持給目錄增加屬性,可能某些場(chǎng)景下可以用到,暫時(shí)沒有想到。
“如何理解ext2文件系統(tǒng)中的xattr”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!