一、inode和block概述
文件數(shù)據(jù)包括元信息與實際數(shù)據(jù) (元信息:包含屬性的相關(guān)信息,實際數(shù)據(jù):文件內(nèi)容)
文件是存儲在硬盤上的,硬盤的最小存儲單位叫做"扇區(qū)”(sector),每個扇區(qū)存儲512字節(jié)。
一般連續(xù)八個扇區(qū)組成一個"塊"(block),一個塊是4K大小,是文件存取的最小單位。操作系統(tǒng)讀取硬盤的時候,是一次性連續(xù)讀取多個扇區(qū),即一個塊一個塊的讀取的。
block(塊)
●連續(xù)的八個扇區(qū)組成一個block(4K)
●是文件存取的最小單位
inode(索引節(jié)點)
●中文譯名為“索引節(jié)點”,也叫i節(jié)點
●用于存儲文件元信息
文件數(shù)據(jù)包括實際數(shù)據(jù)與元信息(類似文件屬性)。文件數(shù)據(jù)存儲在"塊"中,存儲文件元信息(比如文件的創(chuàng)建者、創(chuàng)建日期、文件大小、文件權(quán)限等)的區(qū)域就叫做inode。因此,一個文件必須占用一個inode,并且至少占用一個 block。
inode不包含文件名。文件名是存放在目錄當(dāng)中的。Linux系統(tǒng)中一切皆文件,因此目錄也是一種文件。
每個inode都有一個號碼,操作系統(tǒng)用inode號碼來識別不同的文件。Linux系統(tǒng)內(nèi)部不使用文件名,而使用inode號碼來識別文件。對于系統(tǒng)來說,文件名只是inode號碼便于識別的別稱,文件名和inode號碼是一一對應(yīng)關(guān)系,每個inode號碼對應(yīng)一個文件名。
所以,當(dāng)用戶在Linux系統(tǒng)中試圖訪問一個文件時,系統(tǒng)會先根據(jù)文件名去查找它對應(yīng)的inode號碼,通過inode號碼,獲取inode信息﹔根據(jù)inode信息,看該用戶是否具有訪問這個文件的權(quán)限;如果有,就指向相對應(yīng)的數(shù)據(jù)block,并讀取數(shù)據(jù)。
元信息 | inode |
數(shù)據(jù) | block |
1.inoded內(nèi)容
inode包含文件的元信息:文件的字節(jié)數(shù),文件擁有者的User lD,文件的Group ID,文件的讀、寫、執(zhí)行權(quán)限,文件的時間戳等
stat命令可以查看某文件的inode信息:ls -i aa.txt 或 stat aa.txt(這個更詳細(xì))
Linux系統(tǒng)文件三個主要的時間屬性
atime (accesstime) :當(dāng)使用這個文件的時候就會更新這個時間。
mtime (modification time) :當(dāng)修改文件的內(nèi)容數(shù)據(jù)的時候,就會更新這個時間,而更改權(quán)限或者屬性,mtime不會改變這就是和ctime的區(qū)別。
ctime (status time) :當(dāng)修改文件的權(quán)限或者屬性的時候,就會更新這個時間,ctime并不是create time,更像是change time,只有當(dāng)更新文件的屬性或者權(quán)限的時候才會更新這個時間,
但是更改內(nèi)容的話是不會更新這個時間。
find ./ -m +30 -exec rm -f {} /; 查找文件超過30天的刪除
- 目錄也是一種文件,
- 目錄文件的結(jié)構(gòu)
文件名1 | inode號碼1 |
文件名2 | inode號碼2 |
每一行稱為一個目錄項
- 每個inode都有一個號碼,操作系統(tǒng)用inode號碼來識別不同的文件
- Linux系統(tǒng)內(nèi)部不使用文件名,而使用inode號碼來識別文件
- 對于用戶,文件名只是inode號碼便于識別的別稱
訪問文件的流程:用戶使用文件名訪問文件,系統(tǒng)查找文件對應(yīng)的inode,判斷用戶是否具備訪問權(quán)限,有權(quán)限指向?qū)?yīng)數(shù)據(jù)block,無權(quán)限則返回Permission denied?
2.inode的大小
inode也會消耗硬盤空間,所以格式化的時候,操作系統(tǒng)自動將硬盤分成兩個區(qū)域。一個是數(shù)據(jù)區(qū),存放文件數(shù)據(jù):另一個是 inode區(qū),存放 inode 所包含的信息。每個 inode 的大小,一般是128字節(jié)或256字節(jié)。
通常情況下不需要關(guān)注單個inode 的大小,而是需要重點關(guān)注inode總數(shù)。inode的總數(shù)在格式化時就給定了,執(zhí)行“df -i"命令即可查看每個硬盤分區(qū)對應(yīng)的的inode總數(shù)和已經(jīng)使用的inode數(shù)量。
3.inode的特殊作用
由于inode號碼與文件名分離,導(dǎo)致Linux系統(tǒng)具備以下幾種特有的現(xiàn)象:
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.打開一個文件以后,系統(tǒng)就以inode號碼來識別這個文件,不再考慮文件名。
4.使用vi編輯器修改文件數(shù)據(jù)保存后,會生成一個新的inode號碼。使用echo導(dǎo)入數(shù)據(jù)給文件,inode號不變
4.實驗
1.inode節(jié)點耗盡故障處理
使用fdisk創(chuàng)建分區(qū)/dev/sdb1,分區(qū)大小30M即可(建議使用ext4,這個更準(zhǔn)確些)
fdisk /dev/sdb
mkfs.ext4 /dev/sdb1
mkdir /qqq
mount /dev/sdb1 /qqq
df -i
模擬inode節(jié)點耗盡故障
for ((i=1; i<=7680; i++))
>do
>touch /qqq/file$i;
>done
或 touch {1..7680}.txt
df -i
df -hT
刪除文件恢復(fù)
rm -rf /qqq/*
df -i
df -hT
ls -ld /qqq 查看目錄qqq 空間大小
ls /qqq/ | wc -l 查看目錄qqq文件數(shù)量
2.恢復(fù)EXT類型的文件
extundelete是一個開源的Linux數(shù)據(jù)恢復(fù)工具,支持ext3、ext4文件系統(tǒng)。(ext4只能在centos6版本恢復(fù))
使用fdisk創(chuàng)建分區(qū)/dev/sdc1,格式化ext3文件系統(tǒng)
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/
模擬刪除并執(zhí)行恢復(fù)操作
cd /test
echo a>a
echo a>b
echo a>c
echo a>d
ls
extundelete /dev/sdcl --inode 2 查看文件系統(tǒng)/dev/sdc1下存在哪些文件,i節(jié)點是從2開始的,
2代表該文件系統(tǒng)最開始的目錄。
rm -rf a b
extundelete /dev/sdc1 --inode 2
cd ~
umount /test
extundelete /dev/sdc1 --restore-allt恢復(fù)/dev/sdc1 文件系統(tǒng)下的所有內(nèi)容
在當(dāng)前目錄下會出現(xiàn)一個RECOVERED_FILES/日錄,里面保存了己經(jīng)恢復(fù)的文件
ls RECOVERED_FILES/
3.xfs 類型文件備份和恢復(fù)
Centos 7系統(tǒng)默認(rèn)采用xfs類型的文件,xfs類型的文件可使用xfsdump 與 xfsrestore 工具進(jìn)行備份恢復(fù)。
xfsdump的備份級別有兩種:0表示完全備份:1-9表示增量備份。xfsdump 的備份級別默認(rèn)為0。
xfsdump 的命令格式為:
xfsdump -f 備份存放位置 要備份的路徑或設(shè)備文件
xfsdump命令常用選項 | |
-f | 指定備份文件目錄 |
-L | 指定標(biāo)簽session label |
-M | 指定設(shè)備標(biāo)簽media label |
-s | 備份單個文件,-s后面不能直接跟路徑 |
xfsdump使用限制:
1.只能備份己掛載的文件系統(tǒng)
2.必須使用root的權(quán)限才能操作
3.只能備份XFS文件系統(tǒng)
4.備份后的數(shù)據(jù)只能讓xfsrestore解析
5.不能備份兩個具有相同UUID的文件系統(tǒng)(可用blkid命令查看)
使用fdisk創(chuàng)建分區(qū)/dev/
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/125239.html
相關(guān)文章
-
深入了解里你先文件系統(tǒng)與日志分析
摘要:二進(jìn)制格式記錄每個用戶登錄注銷及系統(tǒng)啟動和停機事件。二進(jìn)制格式由系統(tǒng)服務(wù)統(tǒng)管理軟件包主要程序配置文件 深入了解里你先文件系統(tǒng)與日志分析inode和blick概述文件數(shù)據(jù)包括元信息與實際數(shù)據(jù)文件存儲在盤上,硬盤最小存儲單位是扇區(qū),每個扇區(qū)存儲512字節(jié)block(塊)連續(xù)的八個扇區(qū)組成一個block(一個塊4K)...
-
linux inode文件系統(tǒng);備份恢復(fù)及日志分析
摘要:通常文件系統(tǒng)磁盤空間中大約百分之一空間分配給了表。的備份級別默認(rèn)為。郵件系統(tǒng)日志記錄進(jìn)入或發(fā)出系統(tǒng)的電子郵件活動。用戶登錄日志記錄用戶認(rèn)證相關(guān)的安全事件信息。 1 、深入理解linux文件系統(tǒng)1.inode與blockinode存儲文件元信息(比如文件的創(chuàng)建者、創(chuàng)建日期、文件大小、文件權(quán)限等)的區(qū)域就叫做ino...
-
從小白程序員一路晉升為大廠高級技術(shù)專家我看過哪些書籍?(建議收藏)
摘要:大家好,我是冰河有句話叫做投資啥都不如投資自己的回報率高。馬上就十一國慶假期了,給小伙伴們分享下,從小白程序員到大廠高級技術(shù)專家我看過哪些技術(shù)類書籍。 大家好,我是...
-
PHP程序員學(xué)習(xí)路線
摘要:第一階段基礎(chǔ)階段基礎(chǔ)程序員重點把搞熟練核心是安裝配置基本操作目標(biāo)能夠完成基本的系統(tǒng)安裝,簡單配置維護(hù)能夠做基本的簡單系統(tǒng)的開發(fā)能夠在中型系統(tǒng)中支持某個功能模塊的開發(fā)。本項不做重點學(xué)習(xí),除非對前端有興趣。 第一階段:基礎(chǔ)階段(基礎(chǔ)PHP程序員) 重點:把LNMP搞熟練(核心是安裝配置基本操作) 目標(biāo):能夠完成基本的LNMP系統(tǒng)安裝,簡單配置維護(hù);能夠做基本的簡單系統(tǒng)的PHP開發(fā);能夠在P...
發(fā)表評論
0條評論

番茄西紅柿
男|高級講師
TA的文章
閱讀更多tensor
閱讀 769·2023-04-25 19:43
Windows 下安裝 XGBoost
閱讀 4022·2021-11-30 14:52
Hadoop 2.6.0 啟動問題 lib/native/libhadoop.so which mi
閱讀 3855·2021-11-30 14:52
VmShell:黑五美國VPS,免費先開通測試,滿意后付款!支持tiktok美區(qū)
閱讀 3909·2021-11-29 11:00
百度智能云:云產(chǎn)品特惠福利,1核2G輕量應(yīng)用服務(wù)器僅48元/年
閱讀 3838·2021-11-29 11:00
Linux系統(tǒng)和寶塔面板如何啟用禁ping功能?
閱讀 3949·2021-11-29 11:00
301重定向怎么做?301重定向設(shè)置方法有幾種
閱讀 3613·2021-11-29 11:00
wordpress網(wǎng)站重定向次數(shù)過多的解決方法
閱讀 6310·2021-11-29 11:00