- 1.inode與block
- (1)inode的內容
- (2)inode的號碼
- (3)inode的大小
- (4)inode的特殊作用
- 2.硬連結與軟連線
- 3.恢復誤刪的檔案
- (1)恢復EXT型別的檔案
- (2)恢復XFS型別的檔案
- 4.分析日誌檔案
- (1)日誌檔案
- (1)日誌的功能:
- (2)日誌檔案的分類:
- (3)日誌儲存位置
- (2)核心及系統日誌
- (2)日誌訊息的級別
- (3)日誌記錄的一般格式
- (3)使用者日誌分析
- (1)分析工具
- (4)程式日誌分析
- (5)Linux系統日誌管理
- (1)日誌檔案
1.inode與block
檔案資料包括元資訊與實際資料;
檔案儲存在硬碟上,硬碟最小儲存單位是“扇區”,每個扇區儲存512位元組;
block(塊):連續的八個扇區組成一個 block(4K),是檔案存取的最小單位;
inode(索引節點):中文譯名為“索引節點”,也叫i節點,用於儲存檔案元資訊。
一個檔案必須佔用一個inode,但至少佔用一個block
(1)inode的內容
(1)inode包含檔案的元資訊:檔案的位元組數;檔案擁有者的User ID(不包含檔名);檔案的Group ID;檔案的讀、寫、執行許可權;檔案的時間戳等
stat 檔名 ###檢視檔案的元資訊
stat 檔名 或 ls -i 檔名 ###檢視檔案的inode號
(2)Linux系統檔案三個主要的時間屬性
atime(access time):最後一次訪問檔案或目錄的時間。
mtime(modify time):最後一次修改檔案或目錄(內容)的時間。
ctime(change time):最後一次改變檔案或目錄(屬性)的時間。
(3)目錄檔案的結構:目錄也是一種檔案;目錄檔案的結構
每個inode都有一個號碼,作業系統用inode號碼來識別不同的檔案
Linux系統內部不使用檔名,而使用inode號碼來識別檔案
對於使用者,檔名只是inode號碼便於識別的別稱
(2)inode的號碼
使用者透過檔名開啟檔案時,系統內部的過程:
系統找到這個檔名對應的inode號碼
透過inode號碼,獲取inode資訊
根據inode資訊,找到檔案資料所在的block,讀出資料
檢視inode號碼的方法:
ls -i 檔名 ###檢視檔名對應的inode號碼
stat 檔名 ###檢視檔案inode資訊中的inode號碼
硬碟分割槽後的結構
訪問檔案的簡單流程
使用者透過檔名訪問檔案的過程:
先根據檔名找到對應的inode號;再透過inode號獲取inode資訊;再根據inode資訊判斷使用者是否具有訪問許可權;如果有則指向實際資料的塊並讀取資料,否則拒絕訪問。
(3)inode的大小
inode也會消耗硬碟空間:每個inode的大小,一般是128位元組或256位元組
格式化檔案系統時確定inode的總數
df -i ###檢視每個硬碟分割槽的inode總數和已經使用的數量
(4)inode的特殊作用
由於inode號碼與檔名分離,導致一些Unix/Linux系統具有以下的現象:
當檔名包含特殊字元,可能無法正常刪除檔案,直接刪除inode,也可以刪除檔案;
移動或重新命名檔案時,只改變檔名,不影響inode號碼;
開啟一個檔案後,系統透過inode號碼來識別該檔案,不再考慮檔名。
直接檢視、修改檔案內容或者改變檔名都不會影響 inode號,使用 vi 編輯器修改檔案儲存退出後會影響 inode號
針對無法正常刪除檔名含有特殊符號的檔案時,可根據 inode號 來刪除檔案
find 目錄 -inum <inode號> -delete
2.硬連結與軟連線
硬連結 | 軟連結 |
---|---|
刪除原始檔不會失效 | 刪除原始檔會失效 |
ln 原始檔路徑 連結檔案路徑 | ln -s 原始檔路徑 連結檔案路徑 |
只適用於檔案 | 適用於檔案和目錄 |
硬連結檔案必須要和原始檔在一個分割槽 | 軟連結檔案可以和原始檔不在一個分割槽 |
硬連結檔案和原始檔inode號相同 | 軟連結檔案和原始檔inode號不同 |
3.恢復誤刪的檔案
(1)恢復EXT型別的檔案
編譯安裝extundelete軟體包
安裝依賴包
e2fsprogs-libs-1.41.12-18.el6.x86 64.rpm
e2fsprogs-devel-1.41.12-18.el6.x86 64.rpm
配置、編譯及安裝
extundelete-0.2.4.tar.bz2
模擬刪除並執行恢復操作
echo $PATH
ln -s /usr/local/extundelete/bin/extundelete /usr/local/bin/
extundelete /dev/sdb1 --inode 2
umount /dev/sdb1 #解掛
extundelete /dev/sdb1 --restore-all
*注:EXT型別的檔案inode號佔完,不能再建立新檔案
(2)恢復XFS型別的檔案
xfsdump -f備份存放位置 要備份的路徑或裝置檔案
xfsdump備份級別(預設為0):
0:完全備份
1-9:增量備份
常用選項 | |
---|---|
-f | 指定備份檔案目錄 |
-L | 指定標籤 session label |
-M | 指定裝置標籤 media label |
-s | 備份單個檔案,-s 後面不能直接跟路徑 |
xfsrestore -f 恢復檔案的位置 存放恢復後檔案的位置
模擬刪除並執行恢復操作
xfsdump使用限制
只能備份已掛載的檔案系統
必須使用root的許可權才能操作
只能備份XFS檔案系統
備份後的資料只能讓xfsrestore解析
不能備份兩個具有相同UUID的檔案系統
*注:XFS型別的檔案inode號佔完,能再建立新檔案,多個10~30左右,XFS有冗餘機制
4.分析日誌檔案
(1)日誌檔案
(1)日誌的功能:
用於記錄系統、程式執行中發生的各種事件;透過閱讀日誌,有助於診斷和解決系統故障
(2)日誌檔案的分類:
①核心及系統日誌:由系統服務rsyslog統一進行管理,日誌格式基本相似;主配置檔案/etc/rsyslog.conf
②使用者日誌:記錄系統使用者登入及退出系統的相關資訊
③程式日誌:由各種應用程式獨立管理的日誌檔案,記錄格式不統一
(3)日誌儲存位置
預設位於:/var/log目錄下
主要日誌檔案介紹 | |
---|---|
/var/log/messages | 記錄Linux核心訊息及各種應用程式的公共日誌資訊,包括啟動、10錯誤、網路錯誤、程式故障等。對於未使用獨立日誌檔案的應用程式或服務,件記錄資訊 |
/var/log/cron | 記錄crond計劃任務產生的事件資訊 |
/var/log/dmesg | 記錄Linux系統在引導過程中的各種事件資訊 |
/var/log/maillog | 記錄進入或發出系統的電子郵件活動 |
/var/log/secure | 記錄使用者認證相關的安全事件資訊 |
/var/log/lastlog | 記錄每個使用者最近的登入事件 |
/var/log/rpmpkgs | 記錄系統中安裝的各rpm包列表資訊 |
/var/log/wtmp | 記錄每個使用者登入、登出及系統啟動和停機事件 |
/var/run/btmp | 記錄失敗的、錯誤的登入嘗試及驗證事件 |
(2)核心及系統日誌
(1)由系統服務 rsyslog 統一管理
軟體包:rsyslog-7.4.7-16.el7.x86_64
主要程式:/sbin/rsyslogd
配置檔案:/etc/rsyslog.conf
(2)日誌訊息的級別
級號 | 訊息 | 級別 | 說明 |
---|---|---|---|
0 | EMERG | 緊急 | 會導致主機系統不可用的情況。如系統崩潰 |
1 | ALERT | 警告 | 必須馬上採取措施解決的問題。如資料庫被破壞 |
2 | CRIT | 嚴重 | 比較嚴重的情況。如硬碟錯誤,可能會阻礙程式的部分功能 |
3 | ERR | 錯誤 | 執行出現錯誤。不是非常緊急,儘快修復的 |
4 | WARNING | 提醒 | 可能會影響系統功能的事件。不是錯誤,如磁碟用了85%等 |
5 | NOTICE | 注意 | 不會影響系統但值得注意。無需處理 |
6 | INFO | 資訊 | 一般資訊。正常的系統資訊 |
7 | DEBUG | 除錯 | 程式或系統除錯資訊等。包含詳細開發的資訊,除錯程式時使用 |
none | 沒有優先順序,不記錄任何日誌訊息。 |
(3)日誌記錄的一般格式
(3)使用者日誌分析
儲存了使用者登入、退出系統等相關資訊
使用者日誌 | |
---|---|
/var/log/lastlog | 最近的使用者登入事件 |
/var/log/wtmp | 使用者登入、登出及系統開、關機事件 |
/var/run/utmp | 當前登入的每個使用者的詳細資訊 |
/var/log/secure | 與使用者驗證相關的安全性事件 |
(1)分析工具
users 、who、w、last、lastb
last 命令用於查詢成功登入到系統的使用者記錄
lastb 命令用於查詢登入失敗的使用者記錄
(4)程式日誌分析
由相應的應用程式獨立進行管理
Web服務:/var/log/httpd/
access_log //記錄客戶訪問事件
error_log //記錄錯誤事件
代理服務:/var/log/squid/
access.log、cache.log
分析工具
文字檢視、grep過濾檢索、Webmin管理套件中檢視
awk、sed等文字過濾、格式化編輯工具
Webalizer、Awstats等專用日誌分析工具
(5)Linux系統日誌管理
journalctl -r ###檢視所有日誌(預設情況下,只儲存本次啟動的日誌),-r表示倒序,從尾部看
journalctl -u 服務名 [-f] ### 檢視某個服務的日誌
journalctl -k ###檢視核心日誌(不顯示應用日誌)
journalctl -b -0/-1 ###檢視系統 本次/上一次 啟動的日誌
journalctl _PID=<程序PID> ###檢視指定程序的日誌
journalctl _UID=<賬戶UID> ###檢視指定使用者的日誌
*注:集中式收集管理日誌方案
rsyslog
shell/python指令碼
ELK(elasticsearch+logstash+kibana)
Loki+promtail+grafana