中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解ext2文件系統中的xattr

發布時間:2021-10-14 13:55:34 來源:億速云 閱讀:116 作者:iii 欄目:編程語言

本篇內容介紹了“如何理解ext2文件系統中的xattr”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

§ 0x01 背景

文件系統支持一特性就是擴展性,給一個文件(inode)添加各種屬性。對于ext2文件系統來說,xattr(extend attribution)是它支持的為數不多的現代文件系統的特征之一。

那么為什么需要這個特性呢?這要從文件系統的元數據和數據的區別說起。xattr屬于元數據,元數據一般是固定的,但一些場景下它也要提供一定的擴展性,而xattr就是為元數據的擴展性而存在的。下面扯下我對元數據和數據的理解,分析下為什么需要元數據。

1.1 文件的元數據與數據

我們知道文件的數據分為兩類:元數據(meta data)和數據(data)。元數據是用來控制用戶對數據的操作的。這也符合k8s中通過對象控制對象的程序范式。

  1. 數據:記錄真正對用戶有意義的信息。如:文件中的內容;文件名。

  2. 元數據:輔助完成數據存取。如:文件的創建、修改時間,文件的權限。

一般來說元數據不需要用戶主動感知,比如文件創建時,對應的時間信息由文件系統自動寫入。但必需以不同的方式提供它的訪問。如果和常規數據放一起了,如下:

filename: hello.txt
modify_time: 2021-3-7 20:00:00
regular_data:
hello world

這種方式可行嗎?當然可行了。只是你無法控制用戶是否會誤操作,把對應的元數據改掉了;模塊化編程的原則之一最小接口原則,在這里也適用,單獨的接口修改,對比直接的修改來說,接口的能力(自由度)下降了,系統對用戶的約束增強了,可以避免用戶對數據的亂修改。
另外一個問題是,元數據的變更是穩定的,即使你頻繁地讀寫一個文件,這個文件的元數據需要修改的只是對應的訪問時間戳和修改時間戳。沒有分開的情況下,元數據整體被頻繁的讀出,寫入,這對系統來說是無意義的消耗,更別說在那個計算能力不足的年代背景下了。

通過以下分析,我們知道元數據需要單獨存儲。單獨存儲就需要單獨的接口,因為普通文件的讀寫接口權限過大。但一方面,對一個文件來說,通過的讀寫接口不能滿足對元數據修改的需求,需要提供其他系統接口。Linux下就是用ioctl系統調用實現對元數據的修改的。

§ 0x02 ext2的xattr實驗

主要setfattr和getfattr。通過查看ext2代碼才知道,它支持三種類型的attr。通過不同的命名前綴區分。

  1. security.xxx: 目前是selinux在用;

  2. user.xxx: 普通用戶也可以使用;

  3. trusted.xxx: 只有超級用戶可以使用,可以用來在用戶空間實現一些特性。

示例:

  1. 為test文件增加一個屬性。

setfattr -n user.word -v "hello world" test

getfattr -n user.word hello
# file: hello
user.word="hello world"

§ 0x03 xattr的用途

  1. 目前了解的是ceph演進過程中,曾經用xattr來保存底層的一些信息;

  2. 安全審計相關的應用會用到security attr;

  3. attr同樣也支持給目錄增加屬性,可能某些場景下可以用到,暫時沒有想到。

“如何理解ext2文件系統中的xattr”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鹤峰县| 四川省| 安陆市| 通州区| 融水| 玉树县| 河西区| 安徽省| 兰西县| 读书| 梁平县| 盐城市| 遵义县| 吉水县| 加查县| 潢川县| 顺义区| 林甸县| 金湖县| 马山县| 贡嘎县| 新巴尔虎右旗| 弥渡县| 乌兰县| 阜城县| 武宁县| 革吉县| 丽江市| 安乡县| 彭山县| 泗阳县| 平乡县| 遵义县| 黄冈市| 汾阳市| 名山县| 都昌县| 香格里拉县| 大足县| 乌兰察布市| 犍为县|