1 、深入理解linux文件系統
1.inode與block
inode
存儲文件元信息(比如文件的創建者、創建日期、文件大小、文件權限等)的區域就叫做inode
在 liunx 中創建文件系統時,同時將會創建大量的 inode。通常,文件系統磁盤空間中大約百分之一空間分配給了 inode 表。
block
一般連續八個扇區組成一個"塊" (block) ,是文件存取的最小單位,一個塊是4K大小
2. inode
1.查詢inode號
stat 目標文件名
ls -
i
2.inode包含文件的元信息
文件的擁有者UID、文件的GID、文件的時間戳、文件的讀寫執行信息、文件的字節數,不包括文件名。
Linux文件三個主要的時間屬性:
1、ctime(change time):最后一次改變文件或目錄(屬性)的時間
2、atime(access time):最后一次訪問文件或目錄的時間
3、mtime(modify time):最后一次修改文件或目錄(內容)的時間
3.inode內容
文件是存儲在硬盤上的,硬盤的最小存儲單位叫做"扇區”(sector) ,每個扇區存儲512字節
操作系統讀取硬盤的時候,是一次性連續讀取多個扇區,即一個塊一個塊的讀取的
文件數據包括實際數據與元信息(類似文件屬性)。文件數據存儲在“塊"中,。 因此,一個文件必須占用一個inode, 并且至少占用一個block.
inode不包含文件名。文件名是存放在目錄當中的。Linux系統中一切皆文件,因此目錄也是一種文件。
每個inode都有一個號碼,操作系統用inode號碼來識別不同的文件。Linux系統內部不使用文件名,而使用inode號碼來識別文件。
對于系統來說,文件名只是inode號碼便于識別的別稱,文件名和inode號碼是一一對應關系, 每個inode號碼對應一一個文件名。
所以,當用戶在Linux系統中試圖訪問一個文件時,系統會先根據文件名去查找它對應的inode號碼:通過inode號碼,獲取inode信息;根據inode信息, 看該用戶是否具有訪問這個文件的權限;如果有,就指向相對應的數據block,并讀取數據。
4.inode大小
inode也會消耗硬盤空間,所以格式化的時候,操作系統自動將硬盤分成兩個區域。一個是數據區,存放文件數據;另一個是inode 區,存放inode 所包含的信息。每個inode 的大小,一般是128字節或256字節。
通常情況下不需要關注單個inode的大小,而是需要重點關注inode總數。inode的總數在格式化時就給定了,執行"df-i”命令即可查看每個硬盤分區對應的的inode總數和已經使用的inode數量。
由于indoe號碼與文件名分離,導致Linux系統具備以下幾種特有的現象:
1.文件名包含特殊字符,可能無法正常刪除。這時直接刪除inode,能夠起到刪除文件的作用
2.移動文件或重命名文件,只是改變文件名,不影響inode號碼
3.打開一個文件以后,系統就以inode. 號碼來識別這個文件,不再考慮文件名
4.文件數據被修改保存后,會生成一個新的inode號碼
find ./ -inum 68330928 -exec rm -i {} /;
find ./ -inum 68330928 -delete
打開文件,在系統上的過程(分成三步)
1.系統找到這個文件對應的inode號碼
2.通過inode號碼,獲取inode信息(屬性及權限)
3.根據ionde信息,找到文件數據所在block,讀出數據
4.inode號節點故障實驗
5、恢復誤刪除文件
1.恢復EXT格式文件
編譯安裝extundelete軟件包
是一個開源的Linux 數據恢復工具,支持ext3、 ext4文件系統。( ext4只能在centos6版本恢復)
==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類型文件備份和恢復
CentOs 7系統默認采用xfs類型的文件,xfs類型的文件可使用xfsdump與xfsrestore工具進行備份恢復。
xfsdump的備份級別有兩種: 0表示完全備份; 1-9 表示增量備份。xfsdump的備份級別默認為0。
磁盤分區好后可以使用 ==partprobe /dev/sdb==進行刷新
xfsdump -f /opt/dump_sdb1 /dev/sdb1
xfsdump -f /opt/dump_sdb1 /dev/sdb1 -L dump -M sdb1(免交互,直接創建)
7、分析日志文件
1.日志文件
日志的功能
用于記錄系統、程序運行中發生的各種事件
通過閱讀日志,有助于診斷和解決系統故障
日志文件的分類
內核及系統日志
由系統服務rsyslog統一進行管理, 日志格式基本相似
主配置文件/etc/rsyslog.conf
用戶日志
記錄系統用戶登錄及退出系統的相關信息
程序日志
由各種應用程序獨立管理的日志文件,記錄格式不統一
2.日志文件的分類
內核及系統日志由系統服務rsyslog 統一管理,主配置文件為/etc/ rsyslog.conf
Linux操作系統本身和大部分服務器程序的日志文件都默認放在目錄/var/log/下。
常見的一一些日志文件:
內核及公共消息日志:
/var/log/messages:記錄Linux內核消息及各種應用程序的公共日志信息,包括啟動、輸入錯誤、網絡錯誤、程序故障等。
對于未使用獨立日志文件的應用程序或服務,一般都可以從該日志文件中獲得相關的事件記錄信息。
計劃任務日志:
/var/log/cron:記錄crond計劃任 務產生的事件信息。
系統引導日志:
/var/log/dmesg:記錄Linux系統在引導過程中的各種事件信息。
郵件系統日志:
/var/log/maillog:記錄進入或發出系統的電子郵件活動。
用戶登錄日志:
/var/log/secure:記錄用戶認證相關的安全事件信息。
/var/log/lastlog:記錄每個用戶最近的登錄事件。二進制格式
/var/log/wtmp:記錄每個用戶登錄、注銷及系統啟動和停機事件。二進制格式
/var/run/btmp:記錄失敗的、錯誤的登錄嘗試及驗證事件。二進制格式
3.linux日志優先級
Linux系統內核日志消息的優先級別(數字等級越小,優先級越高,消息越重要)
| 0 | EMERG(緊急) | 會導致主機或系統不可用的情況 |
|---|---|---|
| 1 | ALERT(警告) | 必須馬上采取措施解決的問題 |
| 2 | CRIT(嚴重) | 比較嚴重的情況 |
| 3 | ERR(錯誤) | 運行出現錯誤的情況 |
| 4 | WARNING(提醒) | 可能影響系統功能,需要提醒用戶的重要事件 |
| 5 | MOTICE(注意) | 不會影響正常功能但是需要注意的事件 |
| 6 | INFO(信息) | 一般信息 |
| 7 | DEBUG(調試) | 程序或系統需要調試的信息 |
4.分析工具
users、who、w、last、lastb(查詢用戶信息命令)
last 用于查詢成功登錄到系統的用戶記錄
lastb 用于查詢登錄失敗的用戶記錄
5.內核及系統日志
內核及系統日志由系統服務rsyslog 統一管理,主配置文件為/etc/rsyslog.conf
Linux操作系統本身和大部分服務器程序的日志文件都默認放在目錄/var/log/下
設備字段說明
| auth | 用戶認證時產生的日志 |
|---|---|
| authpriv | ssh、ftp等登錄信息的驗證信息 |
| daemon | 一些守護進程產生的日志 |
| ftp | FTP產生的日志 |
| lpr | 打印相關活動 |
| mark | rsyslog服務內部的信息,時間標識 |
| news | 網絡新聞傳輸協議(nntp)產生的消息 |
| syslog | 系統日志 |
| uucp | unix-to-unix Copy 兩個unix之間的相關通信 |
| console | 針對系統控制臺的消息 |
| cron | 系統執行定時任務產生的日志 |
| kern | 系統內核日志 |
| local 0~ local 7 | 自定義程序使用 |
| 郵件日志 | |
| user | 用戶進程 |
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:日志記錄的一般格式
時間標簽: 消息發出的日期和時間
主機名: 生成消息的計算機的名稱
子系統名稱: 發出消息的應用程序的名稱
消息: 消息的具體內容
6.日志管理策略
① 及時作好備份和歸檔
② 延長日志保存期限
③ 控制日志訪問權限
? 日志中可能會包含各類敏感信息,如賬戶、口令等
④ 集中管理日志
? 將服務器的日志文件發到統一的日志文件服務器
? 便于日志信息的統- -收集、整理和分析
? 杜絕日志信息的意外丟失、惡意篡改或刪除
