1 、深入理解linux文件系統(tǒng)

1.inode與block

inode

存儲(chǔ)文件元信息(比如文件的創(chuàng)建者、創(chuàng)建日期、文件大小、文件權(quán)限等)的區(qū)域就叫做inode

在 liunx 中創(chuàng)建文件系統(tǒng)時(shí),同時(shí)將會(huì)創(chuàng)建大量的 inode。通常,文件系統(tǒng)磁盤空間中大約百分之一空間分配給了 inode 表。

block

一般連續(xù)八個(gè)扇區(qū)組成一個(gè)"塊" (block) ,是文件存取的最小單位,一個(gè)塊是4K大小

2. inode

1.查詢inode號(hào)

stat 目標(biāo)文件名
ls -
i

2.inode包含文件的元信息

文件的擁有者UID、文件的GID、文件的時(shí)間戳、文件的讀寫執(zhí)行信息、文件的字節(jié)數(shù),不包括文件名。

Linux文件三個(gè)主要的時(shí)間屬性:
1、ctime(change time):最后一次改變文件或目錄(屬性)的時(shí)間
2、atime(access time):最后一次訪問文件或目錄的時(shí)間
3、mtime(modify time):最后一次修改文件或目錄(內(nèi)容)的時(shí)間

3.inode內(nèi)容

文件是存儲(chǔ)在硬盤上的,硬盤的最小存儲(chǔ)單位叫做"扇區(qū)”(sector) ,每個(gè)扇區(qū)存儲(chǔ)512字節(jié)

操作系統(tǒng)讀取硬盤的時(shí)候,是一次性連續(xù)讀取多個(gè)扇區(qū),即一個(gè)塊一個(gè)塊的讀取的
文件數(shù)據(jù)包括實(shí)際數(shù)據(jù)與元信息(類似文件屬性)。文件數(shù)據(jù)存儲(chǔ)在“塊"中,。 因此,一個(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í)別文件。

對于系統(tǒng)來說,文件名只是inode號(hào)碼便于識(shí)別的別稱,文件名和inode號(hào)碼是一一對應(yīng)關(guān)系, 每個(gè)inode號(hào)碼對應(yīng)一一個(gè)文件名。

所以,當(dāng)用戶在Linux系統(tǒng)中試圖訪問一個(gè)文件時(shí),系統(tǒng)會(huì)先根據(jù)文件名去查找它對應(yīng)的inode號(hào)碼:通過inode號(hào)碼,獲取inode信息;根據(jù)inode信息, 看該用戶是否具有訪問這個(gè)文件的權(quán)限;如果有,就指向相對應(yīng)的數(shù)據(jù)block,并讀取數(shù)據(jù)。

4.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ū)對應(yīng)的的inode總數(shù)和已經(jīng)使用的inode數(shù)量。

由于indoe號(hào)碼與文件名分離,導(dǎo)致Linux系統(tǒng)具備以下幾種特有的現(xiàn)象:

1.文件名包含特殊字符,可能無法正常刪除。這時(shí)直接刪除inode,能夠起到刪除文件的作用
2.移動(dòng)文件或重命名文件,只是改變文件名,不影響inode號(hào)碼
3.打開一個(gè)文件以后,系統(tǒng)就以inode. 號(hào)碼來識(shí)別這個(gè)文件,不再考慮文件名
4.文件數(shù)據(jù)被修改保存后,會(huì)生成一個(gè)新的inode號(hào)碼

find ./ -inum 68330928 -exec rm -i {} /;
find ./ -inum 68330928 -delete

打開文件,在系統(tǒng)上的過程(分成三步)

1.系統(tǒng)找到這個(gè)文件對應(yīng)的inode號(hào)碼
2.通過inode號(hào)碼,獲取inode信息(屬性及權(quán)限)
3.根據(jù)ionde信息,找到文件數(shù)據(jù)所在block,讀出數(shù)據(jù)

4.inode號(hào)節(jié)點(diǎn)故障實(shí)驗(yàn)




5、恢復(fù)誤刪除文件

1.恢復(fù)EXT格式文件

編譯安裝extundelete軟件包

是一個(gè)開源的Linux 數(shù)據(jù)恢復(fù)工具,支持ext3、 ext4文件系統(tǒng)。( ext4只能在centos6版本恢復(fù))
==yum -y install e2fsprogs-devel e2fsprogs-libs==**(安裝依賴包)**

==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(解壓文件)
[root@lei ~]# cd extundelete-0.2.4/(cd到解壓文件中)
./configure --prefix=/usr/local/extundelete && make &&make install(編譯文件)


*ln -s /usr/local/extundelete/bin/ /usr/bin**




6.xfs類型文件備份和恢復(fù)

CentOs 7系統(tǒng)默認(rèn)采用xfs類型的文件,xfs類型的文件可使用xfsdump與xfsrestore工具進(jìn)行備份恢復(fù)。
xfsdump的備份級別有兩種: 0表示完全備份; 1-9 表示增量備份。xfsdump的備份級別默認(rèn)為0。


磁盤分區(qū)好后可以使用 ==partprobe /dev/sdb==進(jìn)行刷新

xfsdump -f /opt/dump_sdb1 /dev/sdb1
xfsdump -f /opt/dump_sdb1 /dev/sdb1 -L dump -M sdb1(免交互,直接創(chuàng)建)




7、分析日志文件

1.日志文件

日志的功能
用于記錄系統(tǒng)、程序運(yùn)行中發(fā)生的各種事件
通過閱讀日志,有助于診斷和解決系統(tǒng)故障

日志文件的分類

內(nèi)核及系統(tǒng)日志
由系統(tǒng)服務(wù)rsyslog統(tǒng)一進(jìn)行管理, 日志格式基本相似
主配置文件/etc/rsyslog.conf

用戶日志
記錄系統(tǒng)用戶登錄及退出系統(tǒng)的相關(guān)信息

程序日志
由各種應(yīng)用程序獨(dú)立管理的日志文件,記錄格式不統(tǒng)一

2.日志文件的分類

內(nèi)核及系統(tǒng)日志由系統(tǒng)服務(wù)rsyslog 統(tǒng)一管理,主配置文件為/etc/ rsyslog.conf
Linux操作系統(tǒng)本身和大部分服務(wù)器程序的日志文件都默認(rèn)放在目錄/var/log/下。
常見的一一些日志文件:

內(nèi)核及公共消息日志:
/var/log/messages:記錄Linux內(nèi)核消息及各種應(yīng)用程序的公共日志信息,包括啟動(dòng)、輸入錯(cuò)誤、網(wǎng)絡(luò)錯(cuò)誤、程序故障等。

對于未使用獨(dú)立日志文件的應(yīng)用程序或服務(wù),一般都可以從該日志文件中獲得相關(guān)的事件記錄信息。

計(jì)劃任務(wù)日志:
/var/log/cron:記錄crond計(jì)劃任 務(wù)產(chǎn)生的事件信息。

系統(tǒng)引導(dǎo)日志:
/var/log/dmesg:記錄Linux系統(tǒng)在引導(dǎo)過程中的各種事件信息。

郵件系統(tǒng)日志:
/var/log/maillog:記錄進(jìn)入或發(fā)出系統(tǒng)的電子郵件活動(dòng)。

用戶登錄日志:
/var/log/secure:記錄用戶認(rèn)證相關(guān)的安全事件信息。
/var/log/lastlog:記錄每個(gè)用戶最近的登錄事件。二進(jìn)制格式
/var/log/wtmp:記錄每個(gè)用戶登錄、注銷及系統(tǒng)啟動(dòng)和停機(jī)事件。二進(jìn)制格式
/var/run/btmp:記錄失敗的、錯(cuò)誤的登錄嘗試及驗(yàn)證事件。二進(jìn)制格式

3.linux日志優(yōu)先級

Linux系統(tǒng)內(nèi)核日志消息的優(yōu)先級別(數(shù)字等級越小,優(yōu)先級越高,消息越重要)

0EMERG(緊急)會(huì)導(dǎo)致主機(jī)或系統(tǒng)不可用的情況
1ALERT(警告)必須馬上采取措施解決的問題
2CRIT(嚴(yán)重)比較嚴(yán)重的情況
3ERR(錯(cuò)誤)運(yùn)行出現(xiàn)錯(cuò)誤的情況
4WARNING(提醒)可能影響系統(tǒng)功能,需要提醒用戶的重要事件
5MOTICE(注意)不會(huì)影響正常功能但是需要注意的事件
6INFO(信息)一般信息
7DEBUG(調(diào)試)程序或系統(tǒng)需要調(diào)試的信息

4.分析工具

users、who、w、last、lastb(查詢用戶信息命令)

last 用于查詢成功登錄到系統(tǒng)的用戶記錄
lastb 用于查詢登錄失敗的用戶記錄

5.內(nèi)核及系統(tǒng)日志

內(nèi)核及系統(tǒng)日志由系統(tǒng)服務(wù)rsyslog 統(tǒng)一管理,主配置文件為/etc/rsyslog.conf

Linux操作系統(tǒng)本身和大部分服務(wù)器程序的日志文件都默認(rèn)放在目錄/var/log/下

設(shè)備字段說明

auth用戶認(rèn)證時(shí)產(chǎn)生的日志
authprivssh、ftp等登錄信息的驗(yàn)證信息
daemon一些守護(hù)進(jìn)程產(chǎn)生的日志
ftpFTP產(chǎn)生的日志
lpr打印相關(guān)活動(dòng)
markrsyslog服務(wù)內(nèi)部的信息,時(shí)間標(biāo)識(shí)
news網(wǎng)絡(luò)新聞傳輸協(xié)議(nntp)產(chǎn)生的消息
syslog系統(tǒng)日志
uucpunix-to-unix Copy 兩個(gè)unix之間的相關(guān)通信
console針對系統(tǒng)控制臺(tái)的消息
cron系統(tǒng)執(zhí)行定時(shí)任務(wù)產(chǎn)生的日志
kern系統(tǒng)內(nèi)核日志
local 0~ local 7自定義程序使用
mail郵件日志
user用戶進(jìn)程

mail.info /var/1og/maillog :比指定級別更高的日志級別,包括指定級別自身,保存到/var/log/maillog中

mail.=info /var/1og/maillog :明確指定日志級別為info,保存至/var/log/maillog

mail.!info /var/log/maillog :除了指定的日志級別(info)所有日志級別信息,保存至/var/1og/maillog*. info

/var/1og/maillog :所有facility的info級別,保存至/var/1og/maillog
mail.*

/var/log/maillog : mail的所有 日志級別信息,都保存至/var/1og/maillog

mail.notice;news.info /var/1og/maillog : mail的notice以上記得日志級別和news的info以上的級別保存至/var/1og/maillog

mail, news.crit -/var/log/maillog : mail和news的crit 以上的日志級別保存/var/log/maillog中:“-"代表異步模式

2:日志記錄的一般格式

時(shí)間標(biāo)簽: 消息發(fā)出的日期和時(shí)間

主機(jī)名: 生成消息的計(jì)算機(jī)的名稱

子系統(tǒng)名稱: 發(fā)出消息的應(yīng)用程序的名稱

消息: 消息的具體內(nèi)容

6.日志管理策略

① 及時(shí)作好備份和歸檔
② 延長日志保存期限
③ 控制日志訪問權(quán)限
? 日志中可能會(huì)包含各類敏感信息,如賬戶、口令等

④ 集中管理日志
? 將服務(wù)器的日志文件發(fā)到統(tǒng)一的日志文件服務(wù)器
? 便于日志信息的統(tǒng)- -收集、整理和分析
? 杜絕日志信息的意外丟失、惡意篡改或刪除