一、inode和block概述
文件數據包括元信息與實際數據 (元信息:包含屬性的相關信息,實際數據:文件內容)
文件是存儲在硬盤上的,硬盤的最小存儲單位叫做"扇區”(sector),每個扇區存儲512字節。
一般連續八個扇區組成一個"塊"(block),一個塊是4K大小,是文件存取的最小單位。操作系統讀取硬盤的時候,是一次性連續讀取多個扇區,即一個塊一個塊的讀取的。
block(塊)
●連續的八個扇區組成一個block(4K)
●是文件存取的最小單位
inode(索引節點)
●中文譯名為“索引節點”,也叫i節點
●用于存儲文件元信息
文件數據包括實際數據與元信息(類似文件屬性)。文件數據存儲在"塊"中,存儲文件元信息(比如文件的創建者、創建日期、文件大小、文件權限等)的區域就叫做inode。因此,一個文件必須占用一個inode,并且至少占用一個 block。
inode不包含文件名。文件名是存放在目錄當中的。Linux系統中一切皆文件,因此目錄也是一種文件。
每個inode都有一個號碼,操作系統用inode號碼來識別不同的文件。Linux系統內部不使用文件名,而使用inode號碼來識別文件。對于系統來說,文件名只是inode號碼便于識別的別稱,文件名和inode號碼是一一對應關系,每個inode號碼對應一個文件名。
所以,當用戶在Linux系統中試圖訪問一個文件時,系統會先根據文件名去查找它對應的inode號碼,通過inode號碼,獲取inode信息﹔根據inode信息,看該用戶是否具有訪問這個文件的權限;如果有,就指向相對應的數據block,并讀取數據。
元信息 | inode |
數據 | block |
1.inoded內容
inode包含文件的元信息:文件的字節數,文件擁有者的User lD,文件的Group ID,文件的讀、寫、執行權限,文件的時間戳等
stat命令可以查看某文件的inode信息:ls -i aa.txt 或 stat aa.txt(這個更詳細)
Linux系統文件三個主要的時間屬性
atime (accesstime) :當使用這個文件的時候就會更新這個時間。
mtime (modification time) :當修改文件的內容數據的時候,就會更新這個時間,而更改權限或者屬性,mtime不會改變這就是和ctime的區別。
ctime (status time) :當修改文件的權限或者屬性的時候,就會更新這個時間,ctime并不是create time,更像是change time,只有當更新文件的屬性或者權限的時候才會更新這個時間,
但是更改內容的話是不會更新這個時間。
find ./ -m +30 -exec rm -f {} /; 查找文件超過30天的刪除
- 目錄也是一種文件,
- 目錄文件的結構
文件名1 | inode號碼1 |
文件名2 | inode號碼2 |
每一行稱為一個目錄項
- 每個inode都有一個號碼,操作系統用inode號碼來識別不同的文件
- Linux系統內部不使用文件名,而使用inode號碼來識別文件
- 對于用戶,文件名只是inode號碼便于識別的別稱
訪問文件的流程:用戶使用文件名訪問文件,系統查找文件對應的inode,判斷用戶是否具備訪問權限,有權限指向對應數據block,無權限則返回Permission denied?
2.inode的大小
inode也會消耗硬盤空間,所以格式化的時候,操作系統自動將硬盤分成兩個區域。一個是數據區,存放文件數據:另一個是 inode區,存放 inode 所包含的信息。每個 inode 的大小,一般是128字節或256字節。
通常情況下不需要關注單個inode 的大小,而是需要重點關注inode總數。inode的總數在格式化時就給定了,執行“df -i"命令即可查看每個硬盤分區對應的的inode總數和已經使用的inode數量。
3.inode的特殊作用
由于inode號碼與文件名分離,導致Linux系統具備以下幾種特有的現象:
1.文件名包含特殊字符,可能無法正常刪除。這時直接刪除 inode,能夠起到刪除文件的作用;
格式
普通文件 find ./ -inum 52305140 -exec rm -i {} /; find ./ -inum 52345140 -exec rm -rf {} / 目錄
find ./ -inum 50464299 -delete
find ./ -inum 5482545 | xargs rm -rf
2.移動文件或重命名文件,只是改變文件名,不影響inode號碼;
3.打開一個文件以后,系統就以inode號碼來識別這個文件,不再考慮文件名。
4.使用vi編輯器修改文件數據保存后,會生成一個新的inode號碼。使用echo導入數據給文件,inode號不變
4.實驗
1.inode節點耗盡故障處理
使用fdisk創建分區/dev/sdb1,分區大小30M即可(建議使用ext4,這個更準確些)
fdisk /dev/sdb
mkfs.ext4 /dev/sdb1
mkdir /qqq
mount /dev/sdb1 /qqq
df -i
模擬inode節點耗盡故障
for ((i=1; i<=7680; i++))
>do
>touch /qqq/file$i;
>done
或 touch {1..7680}.txt
df -i
df -hT
刪除文件恢復
rm -rf /qqq/*
df -i
df -hT
ls -ld /qqq 查看目錄qqq 空間大小
ls /qqq/ | wc -l 查看目錄qqq文件數量
2.恢復EXT類型的文件
extundelete是一個開源的Linux數據恢復工具,支持ext3、ext4文件系統。(ext4只能在centos6版本恢復)
使用fdisk創建分區/dev/sdc1,格式化ext3文件系統
fdisk /dev/sdc
partprobe /dev/sdc
mkfs.ext3 /dev/sdc1
mkdir /test
mount /dev/sdc1/test
df -hT
安裝依賴包
yum -y install e2fsprogs-devel e2fsprogs-libs
編譯安裝 extundelete
cd /test
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
tar jxvf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4/
./configure --prefix=/usr/local/extundelete && make && make install
ln -s /usr/ local/extundelete/bin/*/usr/bin/
模擬刪除并執行恢復操作
cd /test
echo a>a
echo a>b
echo a>c
echo a>d
ls
extundelete /dev/sdcl --inode 2 查看文件系統/dev/sdc1下存在哪些文件,i節點是從2開始的,
2代表該文件系統最開始的目錄。
rm -rf a b
extundelete /dev/sdc1 --inode 2
cd ~
umount /test
extundelete /dev/sdc1 --restore-allt恢復/dev/sdc1 文件系統下的所有內容
在當前目錄下會出現一個RECOVERED_FILES/日錄,里面保存了己經恢復的文件
ls RECOVERED_FILES/
3.xfs 類型文件備份和恢復
Centos 7系統默認采用xfs類型的文件,xfs類型的文件可使用xfsdump 與 xfsrestore 工具進行備份恢復。
xfsdump的備份級別有兩種:0表示完全備份:1-9表示增量備份。xfsdump 的備份級別默認為0。
xfsdump 的命令格式為:
xfsdump -f 備份存放位置 要備份的路徑或設備文件
xfsdump命令常用選項 | |
-f | 指定備份文件目錄 |
-L | 指定標簽session label |
-M | 指定設備標簽media label |
-s | 備份單個文件,-s后面不能直接跟路徑 |
xfsdump使用限制:
1.只能備份己掛載的文件系統
2.必須使用root的權限才能操作
3.只能備份XFS文件系統
4.備份后的數據只能讓xfsrestore解析
5.不能備份兩個具有相同UUID的文件系統(可用blkid命令查看)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/125239.html
相關文章
-
深入了解里你先文件系統與日志分析
摘要:二進制格式記錄每個用戶登錄注銷及系統啟動和停機事件。二進制格式由系統服務統管理軟件包主要程序配置文件 深入了解里你先文件系統與日志分析inode和blick概述文件數據包括元信息與實際數據文件存儲在盤上,硬盤最小存儲單位是扇區,每個扇區存儲512字節block(塊)連續的八個扇區組成一個block(一個塊4K)...
-
linux inode文件系統;備份恢復及日志分析
摘要:通常文件系統磁盤空間中大約百分之一空間分配給了表。的備份級別默認為。郵件系統日志記錄進入或發出系統的電子郵件活動。用戶登錄日志記錄用戶認證相關的安全事件信息。 1 、深入理解linux文件系統1.inode與blockinode存儲文件元信息(比如文件的創建者、創建日期、文件大小、文件權限等)的區域就叫做ino...
-
從小白程序員一路晉升為大廠高級技術專家我看過哪些書籍?(建議收藏)
摘要:大家好,我是冰河有句話叫做投資啥都不如投資自己的回報率高。馬上就十一國慶假期了,給小伙伴們分享下,從小白程序員到大廠高級技術專家我看過哪些技術類書籍。 大家好,我是...
-
PHP程序員學習路線
摘要:第一階段基礎階段基礎程序員重點把搞熟練核心是安裝配置基本操作目標能夠完成基本的系統安裝,簡單配置維護能夠做基本的簡單系統的開發能夠在中型系統中支持某個功能模塊的開發。本項不做重點學習,除非對前端有興趣。 第一階段:基礎階段(基礎PHP程序員) 重點:把LNMP搞熟練(核心是安裝配置基本操作) 目標:能夠完成基本的LNMP系統安裝,簡單配置維護;能夠做基本的簡單系統的PHP開發;能夠在P...
發表評論
0條評論
番茄西紅柿
男|高級講師
TA的文章
閱讀更多tensor
閱讀 724·2023-04-25 19:43
Windows 下安裝 XGBoost
閱讀 3921·2021-11-30 14:52
Hadoop 2.6.0 啟動問題 lib/native/libhadoop.so which mi
閱讀 3794·2021-11-30 14:52
VmShell:黑五美國VPS,免費先開通測試,滿意后付款!支持tiktok美區
閱讀 3859·2021-11-29 11:00
百度智能云:云產品特惠福利,1核2G輕量應用服務器僅48元/年
閱讀 3790·2021-11-29 11:00
Linux系統和寶塔面板如何啟用禁ping功能?
閱讀 3882·2021-11-29 11:00
301重定向怎么做?301重定向設置方法有幾種
閱讀 3562·2021-11-29 11:00
wordpress網站重定向次數過多的解決方法
閱讀 6138·2021-11-29 11:00