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

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