一、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)與日志分析_日志文件

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)不變

深入理解Linux文件系統(tǒng)與日志分析_日志文件_02

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

深入理解Linux文件系統(tǒng)與日志分析_文件名_03

深入理解Linux文件系統(tǒng)與日志分析_linux系統(tǒng)_04

深入理解Linux文件系統(tǒng)與日志分析_文件名_05

深入理解Linux文件系統(tǒng)與日志分析_數(shù)據(jù)_06

深入理解Linux文件系統(tǒng)與日志分析_日志文件_07

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命令查看)

文章版權(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)...

    Jiavan 評(píng)論0 收藏0
  • 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...

    terro 評(píng)論0 收藏0
  • 從小白程序員一路晉升為大廠高級(jí)技術(shù)專家我看過哪些書籍?(建議收藏)

    摘要:大家好,我是冰河有句話叫做投資啥都不如投資自己的回報(bào)率高。馬上就十一國(guó)慶假期了,給小伙伴們分享下,從小白程序員到大廠高級(jí)技術(shù)專家我看過哪些技術(shù)類書籍。 大家好,我是...

    sf_wangchong 評(píng)論0 收藏0
  • 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...

    genedna 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論