目錄
1. Linux 文件系統
1.1 inode號
1.2 EXT類型文件恢復
1.3 xfs類型文件備份和恢復
2. 日志分析
2.1 日志類型
2.2日志配置文件
2.3 日志分析的重要性
在Linux系統中,文件和日志是管理和維護系統運行所不可或缺的。理解它們的工作原理和如何有效地管理和分析是每個系統管理員和開發人員的必備技能。
1. Linux 文件系統
1.1 inode號
文件是存儲在硬盤上的,硬盤的最小存儲單位叫做“扇區”,每個扇區存儲512字節。一般連續八個扇區組成一個"塊”(block),一個塊是4K大小,是文件存取的最小單位。操作系統讀取硬盤的時候,是一次性連續讀取多個扇區,即一個塊一個塊的讀取的。
我們平時所創建的文件還有系統自己的配置文件等都是放在這些扇區中。那么,系統中如此多的文件,有些時候明明看文件內容是空的,但是卻占用了一定的磁盤空間,這是為何呢?還有些文件名特別長,而且雜亂無章,那么該如何快速的找到這個文件呢?其實,每個文件都有它自己的屬性,我們稱之為文件的元信息,存儲文件元信息的地方就叫做inode,每個文件都有自己的獨一無二的inode(之前說過軟連接硬鏈接,硬連接的inode號和源文件一樣),并且,至少占用一塊block,每個inode的大小,一般是128字節或256字節,這就是為什么,明明有些文件內容是空的,卻占用了一定的空間。Linux系統中,我們可以用
stat 文件名? ? ? ? ? ? ?
或者
ls -i 文件名
來查看文件的inode號,注意,目錄是不可以查看的,就像每個人都有身份證,他們的家庭有家庭證嗎?那肯定沒有,目錄有其他表示它的東西。
我們也可以用?
df-i
命令查看每個硬盤分區對應的的inode總數和已經使用的inode數量。
前面也說到每個inode號都會占據128字節的空間,我們可以df -Th 看一下硬盤已用空間
假如我們有一塊5GB的硬盤,5GB = 5 × 1024MB = 5120MB,每個inode大小 = 128字節 = 0.125KB
5GB的硬盤總大小 = 5120MB = 5120 × 1024KB,每1KB設置一個inode,所以有5120 × 1024個inode
那么每個inode大小為0.125KB,所以inode table的總大小 = 5120 × 1024 × 0.125KB = 655360KB = 640MB
所以可以得出 inode table的大小占硬盤比例 = (640MB / 5120MB) × 100% ≈ 12.5%
所以說了這么多,我們只知道它代表一個文件,node號有啥用呢?
當一個文件文件名包含特殊字符或者這個文件名非常非常長,可能無法正常刪除。這時候我們直接刪除它的inode號,也能夠起到刪除文件的作用。其他作用暫時也不需要了解,只要知道,移動文件或重命名文件,只是改變文件名,不影響inode 號碼,文件數據被修改保存后,會生成一個新的inode 號碼,我們也可以通過inode號來查找文件? 用 find -inum? 命令
1.2 EXT類型文件恢復
前面說到我們可以根據文件的inode號刪除文件,但要知道,inode號雖說不是很長,但也有六七位,七八位,難免有的時候會輸錯,畢竟,有些人連六位數驗證碼都要看兩遍。那么,文件不小心刪錯了該怎么辦呢?
首先,如果是EXT類型的文件,我們需要用到? extundelete? ?這是一個開源的數據恢復工具,支持ext3、 ext4文件系統。
首先創建一個磁盤分區,步驟在我前面的博客中有些,這里就快速操作跳過了。
partprobe /dev/sdb? ? ? ? ? ? ????? ? ? ? ?重新讀取分區表
mkfs.ext3 /dev/sdb1? ? ? ? ? ? ? ? ? ?????格式化
mkdir /test? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
mount /dev/sdb1 /test? ? ? ? ? ? ? ? ? ? ?將sdb1掛載到test目錄? ?
yum -y install e2fsprogs-devel e2fsprogs-libs gcc gcc-c++? ? ? ? ? ? ? ? ? 安裝依賴包
cd /test? ? ? ? ? ?
wgethttp://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 && make && make install
ln -s /usr/local/extundelete/bin/* /usr/bin/? ? ? ??
cd /test
echo a>a? ? ? ? ? ? ??
echo b>b
echo c>c
echo d>d? ? ? ? ? ? ? ? ? ? ? ?創建1234四個文件夾,分別寫入1234
extundelete /dev/sdc1 --inode 2? ? ? ? ? ?查看文件系統/dev/sdc1下存在哪些文件,i節點是從2開始的,2代表該文件系統最開始的目錄。
rm -rf a? b? ? ? ? ? ? ? ? ? ?刪除
umount /test
extundelete /dev/sdc1 --restore-all? ? ? ? ? ? ?恢復/dev/sdc1 文件系統下的所有內容
然后我們就會在目錄下發現一個RECOVERED_FILES/目錄,里面就存放著我們剛才刪除的文件
1.3 xfs類型文件備份和恢復
CentOs 7系統默認采用xfs類型的文件,xfs類型文件如果被誤刪了呢?xfs 類型的文件可使用xfsdump 與xfsrestore 工具進行備份恢復。
xfsdump? 命令格式為
xfsdump | -f? ? ?備份存放位置 要備份的路徑或設備文件
但是有幾點,只能備份已掛載的文件系統,而且必須使用root的權限才能操作。
下面來實機演示一下
首先還是先創建磁盤分區
fdisk /dev/sdb
然后格式化? ?mkfs
mkdir /data
mount /dev/sdb1 /data/
cd /data
cp /etc/passwd ./
mkdir test
touch test/a
rpm -qa | grep xfsdump
yum install -y xfsdump
xfsdump -f /opt/dump_sdb1 /dev/sdb1 [-L dump_sdb1 -M sdb1]
xfsdump -f /opt/dump_sdb /dev/sdb1 -L dump_sdb -M sdb1
---模擬數據丟失并使用xfsrestore 命令恢復文件
cd /data/
rm -rf ./*
ls
xfsrestore -f /opt/dump_sdb1 /data/
可以看到,刪除的兩個文件恢復了
2. 日志分析
2.1 日志類型
日志文件記錄了系統和應用程序的運行狀態、事件和錯誤信息。它是存儲數據的容器,提供了訪問和管理文件的方法。對日志文件進行分析可以幫助管理員診斷問題、監控系統性能并執行安全審計。目錄通常都存放在 /var/log/目錄下,由/etc/rsyslog.conf 配置文件管理。常見的日志文件有以下幾種
系統日志(/var/log/messages):記錄系統級事件和錯誤信息,如啟動、關機、服務啟動和停止等。
計劃任務日志(/var/1og/cron ): 記錄crond計劃任務產生的事件信息。
安全日志(/var/log/secure):記錄用戶登錄、權限更改和安全相關事件,對于安全審計非常重要。
應用程序日志:各種應用程序會生成自己的日志文件,記錄其運行狀態和錯誤信息。例如,Web 服務器日志是? /var/log/httpd/access_log ,記錄 HTTP 請求和響應信息。
郵件系統日志:(/var/log/maillog):?記錄進入或發出系統的電子郵件活動。
2.2日志配置文件
我們查看一下? /etc/rsyslog.conf? ?文件
set nu? 設置以下行號,在54行有這樣一段代碼
*.info? ? ? ? ? ? ?--表示info等級及以上的所有等級的信息都寫到對應的日志文件里
等級從高到底依次是
0 EMERG(緊急):會導致主機系統不可用的情況
1 ALERT(警告):必須馬上采取措施解決的問題
2 CRIT(嚴重):比較嚴重的情況
3 ERR (錯誤) :運行出現錯誤
4 WARNING(提醒):可能影響系統功能,需要提醒用戶的重要事件
5 NOTICE (注意) :不會影響正常功能,但是需要注意的事件
6 INFO(信息):一般信息
7 DEBUG(調試):程序或系統調試信息等。
mail.none? ? ????????--這部分表示排除所有與郵件相關的日志消息,即不捕獲 mail 的任何日志消息。
后面的? authpriv.none? 和 cron.none? 也是同樣的意思
再后面那一塊被水印擋住了,那個可以根據上面給出的日志類型,看出是系統日志
我們來進入系統日志看一下??/var/log/messages
可以看到,紅黃藍綠的,眼花繚亂
我們一種顏色一種顏色把它拆解開來
分別是 時間? ?主機名? 子系統名稱? 具體信息
具體信息那一欄我們看到紅色? 就說明是報錯信息,比如這里就有一段報錯信息,根據報錯信息,我們就能知道哪里出了問題,從而去解決問題。
2.3 日志分析的重要性
有效的日志分析可以幫助管理員實時監控系統健康狀態、及時發現和解決問題,提升系統的穩定性和安全性。定期審查和分析日志還可以幫助預測和規劃系統的未來需求,優化系統資源的使用。
總結來說,Linux 文件系統和日志分析是系統管理中不可或缺的一部分,通過深入了解和適當的工具使用,管理員可以更好地管理和優化Linux系統的運行。