文件元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。
1、元數據定義:
數據(Metadata),又稱中介數據、中繼數據,為描述數據的數據(data about data),主要是描述數據屬性(property)的信息,用來支持如指示存儲位置、歷史數據、資源查找、文件記錄等功能。元數據算是一種電子式目錄,為了達到編制目錄的目的,必須在描述並收藏數據的內容或特色,進而達成協助數據檢索的目的
元數據就是數據的數據。
任何文件系統中的數據分為數據和元數據。數據是指普通文件中的實際數據,而元數據指用來描述一個文件的特征的系統數據,諸如訪問權限、文件擁有者以及文件數據塊的分布信息(inode...)等等。在集群文件系統中,分布信息包括文件在磁盤上的位置以及磁盤在集群中的位置。用戶需要操作一個文件必須首先得到它的元數據,才能定位到文件的位置並且得到文件的內容或相關屬性。
文件系統元數據(metadata)的更改都被保存在一份單獨的日志里,當發生系統崩潰時可以根據日志正確地恢復數據。除此之外,日志使系統重新啟動時不必進行文件系統的檢查,從而縮短了恢復時間。
2、元數據管理方式:
元數據管理有兩種方式:集中式管理和分布式管理
集中式管理:是指在系統中有一個節點專門司職元數據管理,所有元數據都存儲在該節點的存儲設備上。所有客戶端對文件的請求前,都要先對該元數據管理器請求元數據。
分布式管理:是指將元數據存放在系統的任意節點並且能動態的遷移。對元數據管理的職責也分布到各個不同的節點上。
大多數集群文件系統都采用集中式的元數據管理。因為集中式管理實現簡單,一致性維護容易,在一定的操作頻繁度內可以提供較滿意的性能。缺點是單一失效點問題,若該服務器失效,整個系統將無法正常工作。而且,當對元數據的操作過於頻繁時,集中的元數據管理成為整個系統的性能瓶頸。
分布式元數據管理的好處是解決了集中式管理的單一失效點問題,而且性能不會隨着操作頻繁而出現瓶頸。其缺點是,實現復雜,一致性維護復雜,對性能有一定影響。
文件的數據分為兩類:一類為元數據,既屬性數據;一種就是數據本身。
可用命令stat查看文件的元數據
stat:
功能說明:顯示inode內容。
語 法:stat [文件或目錄]
補充說明:stat以文字的格式來顯示inode的內容。
ls 命令及其許多參數提供了一些非常有用的文件信息。另一個不太為人所熟知的命令 stat 提供了一些更為有用的信息。
例:
查看可執行文件“oracle”
# stat oracle
File: ‘oracle’
Size: 93300148 Blocks:182424 IO Block:4096 Regular File
Device: 343h/835d Inode: 12009652 Links: 1
Access: (6751/-rwsr-s--x) Uid:( 500/ oracle) Gid:( 500/ dba)
Access: 2006-08-04 04:30:52.000000000 -0400
Modify: 2005-11-02 11:49:47.000000000 -0500
Change: 2005-11-02 11:55:24.000000000 -0500
使用該命令獲得的信息:除了通常的文件大小(也可以使用 ls -l 命令獲得)以外,您還獲得了該文件占用的塊數。通常的 Linux 塊大小為 512 字節,因此一個大小為 93,300,148 字節的文件將占用 (93300148/512=) 182226.85 個塊。由於塊都是完整占用,因此該文件使用了一些整數個數的塊。無需猜測就可以獲得確切的塊數
stat 命令的修改符 -f 顯示了有關文件系統(而非文件)的信息:
# stat -f oracle
File: "oracle"
ID: 0 Namelen:255 Type:ext2/ext3
Blocks: Total: 24033242 Free: 15419301 Available: 14198462 Size: 4096
Inodes: Total: 12222464 Free: 12093976
另一個選項 -t 顯示了完全相同的信息,只不過是在一行中顯示的:
# stat -t oracle
oracle 93300148 182424 8de9 500 500 343 12009652 1 0 0 1154682061
1130950187 1130950524 4096
修改文件時間戳信息
命令:touch
touch命令一般用來修改文件的時間,或者新建一個不存在的文件.
語法如下: touch [-acm][-r ref_file(參照文件)|-t time(時間值)] file(文件名)
例子:
touch file1.txt 更新file1.txt的存取和修改時間
touch -c file1.txt 如果file1.txt不存在,不創建文件
touch -r ref_file file1.txt 更新file1.txt的時間戳和ref+file相同
touch -t 0911252234.40 file1.txt 設定文件的時間為09年11月25日22點34分40秒
參數說明:
-a 修改文件 file 的存取時間.
-c 不創建文件 file.
-m 修改文件 file 的修改時間
-r ref_file 將參照文件 ref_file 相應的時間戳記的數值作為指定文件 file 時間戳記的新值.
-t time 使用指定的時間值 time 作為指定文件 file 相應時間戳記的新值.
此處的 time 規定為如下形式的十進制數∶ [[CC]YY]MMDDhhmm[.SS] 這里,CC為年數中的前兩位,即”世紀數”;YY為年數的后兩位,即某世紀中的年數.如果不給出CC的值,則touch 將把年數CCYY限定在1969--2068之內.MM為月數,DD為天將把年數CCYY限定在1969--2068之內.MM為月數,DD為天數,hh 為小時數(幾點),mm為分鍾數,SS為秒數.此處秒的設定范圍是0--61,這樣可以處理閏秒.這些數字組成的時間是環境變量TZ指定的時區中的一個時 間.由於系統的限制,早於1970年1月1日的時間是錯誤的.
使用touch可以一次創建多個文件:
# touch myfile01 myfile02 myfile03
#touch myfile0{1,2,3} 創建myfile01 myfile02 myfile03 三個文件