深入理解Linux文件系統與日誌分析(包含ext和xfs文件系統誤刪文件具體如何恢復操作)

深入理解Linux文件系統與日誌分析

一、inode與block**

1.1inode和block概述

●文件數據包括元信息與實際數據

●文件存儲在硬盤上,硬盤最小存儲單位是扇區,每個扇區存儲512字節

512字節*8=4096字節,最常見的4k

●block(塊)

連續的八個扇區組成一個block

是文件存取的最小單位

●inode(索引節點)

中文譯名爲“索引節點”,也叫i節點

用於存儲文件元信息

在這裏插入圖片描述

1.2inode的內容

1.2.1inode包含文件的元信息

文件的字節數

文件擁有者的User ID

文件的Group ID

文件的讀、寫、執行權限

文件的時間戳

(不包含文件名)

……

1.2.2用stat命令可以查看某個文件的incode信息

示例:
在這裏插入圖片描述

1.2.3Linux系統文件三個主要的時間屬性

ctime(change time)

最後一次改變文件或目錄(屬性)的時間

atime(access time)

最後一次訪問文件或目錄的時間

mtime(modify time)

最後一次修改文件或目錄(內容)的時間

1.2.4目錄文件的結構

目錄文件的結構

目錄也是一種文件

目錄文件的結構

在這裏插入圖片描述

每個incode都有一個號碼,操作系統用incode號碼來識別不同的文件

Linux系統內部不使用文件名,而使用incode號碼來識別文件

對於用戶,文件名只是incode號碼便於識別的別稱

1.3inode的號碼

用戶通過文件名打開文件時,系統內部的過程

1.系統找到這個文件名對應的inode號碼

2.通過inode號碼,獲取inode信息

3.根據inode信息,找到文件數據所在的block,讀出數據

查看inode號碼的方法

ls -i命令:查看文件名對應的inode號碼

ls -i aa.txt
在這裏插入圖片描述

ls -ai 命令查看當前目錄的文件及隱藏文件的所對應的inode號碼
在這裏插入圖片描述

stat命令:查看某個文件的inode信息而查看到inode號碼

stat aa.txt
在這裏插入圖片描述

1.4文件存儲小結

硬盤分區後的結構

在這裏插入圖片描述

訪問文件的簡單流程

在這裏插入圖片描述

1.5inode的大小

●inode也會消耗硬盤空間

每個inode的大小

一般是128字節或256字節

●格式化文件系統時確定inode的總數

●使用df -i命令可以查看每個硬盤分區的inode總數和已經使用的數量

在這裏插入圖片描述

1.6inode的特殊作用

由於inode號碼與文件名分離,導致一些Unix/Linux系統具有以下的現象

●當文件名包含特殊字符,可能無法正常刪除文件,直接刪除inode,也可以刪除文件

●移動或重命名文件時,只改變文件名,不影響inode號碼

●打開一個文件後,系統通過inode號碼來識別該文件,不再考慮文件名

二、鏈接文件

●在Linux下面的鏈接文件有兩種:

●一種類似於Windows的快捷方式功能的文件,可以快速連接到目標文件或目錄,這種稱爲軟鏈接

●另一種則是通過文件系統的inode鏈接文件來產生新的文件名,而不是產生新文件,這種稱之爲硬鏈接

2.1爲文件或目錄建立鏈接文件

2.1.1硬鏈接

一般情況下,文件名和inode號碼是一一對應關係,每個inode號碼對應一個文件名。

但是Linux系統允許,多個文件名指向同一個inode號碼。這表示可以用不同的文件名來訪問同樣的內容。

ln 源文件 目標位置

運行此命令後,源文件和目標文件的inode號碼相同,都指向同一個inode。inode信息中的“鏈接數”此時就會增加1

當一個文件擁有多個硬鏈接時,對文件內容修改,會影響到所有文件名。但刪除一個文件名,不會影響另一個文件名的訪問。刪除一個文件名,就會使得inode信息中的“鏈接數”減少1
在這裏插入圖片描述

2.1.2軟鏈接

ln -s 源文件或目錄 鏈接文件或目標位置

軟鏈接就是再創建一個獨立的文件,而這個文件會讓數據的讀取指向它連接的那個文件的文件名

文件2依賴於文件1而存在,如果刪除了文件1 ,打開文件2就會報錯
在這裏插入圖片描述

2.2鏈接文件分類

在這裏插入圖片描述

三、恢復誤刪除的文件

刪除一個文件,實際上並不清除 inode 節點和 block 的數據,只是在這個文件的父目錄裏面的 block 中刪除這個文件的名字。Linux 是通過 Link 的數量來控制文件刪除的,只有 當一個文件不存在任何 Link 的時候,這個文件纔會被刪除。 在 Linux 系統運維工作中,經常會遇到因操作不慎、操作錯誤等導致文件數據丟失的情況,尤其對於客戶企業中一些新手。

3.1恢復EXT文件系統

1.編譯安裝extundelete

第一步,

先安裝兩個依賴包 e2fsprogs-libs 和 e2fsprogs-devel, 這兩個包在系統安裝光盤的/Package 目錄下就有,安裝wget,使用wget去現網下載extundelete 軟件包。

yum -y install e2fsprogs-libs、e2fsprogs-devel、wget

wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2

e2fsprogs-devel 安裝依賴於 libcom_err-devel 包。

第二步,

安裝完依賴包之後,再解壓、配置、編譯、安裝。

tar jxf extundelete-0.2.4.tar.bz2

cd extundelete-0.2.4

./configure --prefix=/usr/local/extundelete && make && make install

#cd /usr/local/extundelete/bin

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

第三步,實驗驗證,格式化後一個分區後掛載到目錄,在目錄中創建幾個文件,刪除兩個文件

先取消掛載,防止新數據寫入將誤刪數據覆蓋掉,

使用軟件恢復,extundelete /dev/sdb1 --restore-all

在/root中找到恢復的文件存放處:RECOVERED_FILES

也可以使用“extundelete /dev/sdb1 --inode 2”查看文件系統/dev/sdb1 下存在哪些文件,

具體的使用情況。其中–inode 2 代表從 i 節點爲 2 的文件開始查看,一般文件系統格式化掛 載之後,

i 節點是從 2 開始的,2 代表該文件系統最開始的目錄。

[root@localhost data]# extundelete /dev/sdb1 --inode 2

3.2 xfs 類型文件備份和恢復

extundelete 工具僅可以恢復 EXT 類型的文件,無法恢復 CentOS 7 系統默認採用 xfs 類型的文件。針對 xfs 文件系統目前也沒有比較成熟的文件恢復工具,所以建議提前做好數 據備份,以避免數據丟失。xfs 類型的文件可使用 xfsdump 與 xfsrestore 工具進行備份恢復。若系統中未安裝 xfsdump與xfsrestore工具,可以通過yum install -y xfsdump命令安裝。xfsdump 按照inode 順序備份一個 xfs 文件系統。

xfsdump 的備份級別有兩種:0 表示完全備份;1-9 表示增量備份。

xfsdump 的備份級別默認爲 0。

xfsdump 的命令格式爲:xfsdump -f 備份存放位置要備份路徑或設備文件。常用的備份參數包括以下幾種:

-f:指定備份文件目錄;

-L:指定標籤 session label;

-M:指定設備標籤 media label;

-s:備份單個文件,-s 後面不能直接跟路徑

3.2.1xfsdump命令格式

xfsdump命令格式

xfsdump -f 備份存放位置 要備份的路徑或者設備文件

xfsrestore命令格式

xfsrestore -f 恢復文件的位置 存放恢復後文件的位置

3.2.2xfsdump使用限制

●只能備份已掛載的文件系統

●必須使用root的權限才能操作

●只能備份xfs文件系統

●備份後的數據只能用xfsrestore解析

●不能備份兩個具有相同UUID的文件系統

3.2.3備份和恢復步驟

1.先格式化一個分區 mkfs.xfs /dev/sdb1 (如果該分區已經被格式化過,需要加- f 強制格式化)

將其掛載到/1目錄中,mount /dev/sdb1 /1
在這裏插入圖片描述
2.準備需要備份和恢復實驗需要的文件

[root@localhost ~]# cp /etc/passwd /1

[root@localhost 1]# mkdir /1/2

[root@localhost 1]# echo “this is test”>/1/2/test.txt ###複製和創建寫入些數據到/1目錄中,用於恢復數據實驗

[root@localhost 1]# yum -y install tree ###安裝tree軟件查看/1目錄樹

[root@localhost 1]# tree /1

/1

├── 2

│ └── test.txt

└── passwd
在這裏插入圖片描述
3.備份

[root@localhost 1]# yum -y install xfsdump ###安裝所需軟件

[root@localhost 1]# xfsdump -f /opt/xfs_dump /dev/sdb1 ###將/dev/sdb1分區備份到/opt/xfs_dump(會出現交互性界面讓我們確認備份到的位置和需要備份的文件 -> xfs_dump和 -> /dev/sdb1)
在這裏插入圖片描述
4.恢復

[root@localhost 1]# rm -rf /1/* ###刪除/1目錄中的內容準備恢復

[root@localhost 1]# xfsrestore -f /opt/xfs_dump /1 ###恢復/opt/xfs_dump的數據到/1中
在這裏插入圖片描述

**四、**日誌文件的分類

4.1 日誌的功能

●用於記錄系統,程序運行中發生的各種事件

●通過閱讀日誌,有助於診斷和解決系統故障

4.2 日誌文件的分類

●內核及系統日誌

由系統服務rsyslog統一進行管理,日誌格式基本相似

●用戶日誌

記錄系統用戶登錄及退出系統的相關信息

●程序日誌

由各種應用程序獨立管理的日誌文件,記錄格式不統一

4.3 日誌保存位置

默認位於:/var/log目錄下

4.4 主要日誌文件介紹

在這裏插入圖片描述
/var/log/messages:記錄Linux內核消息和各種應用程序的公共日誌信息,包括啓動,I/O錯誤,網絡錯誤,程序故障等

對於未使用獨立日誌文件的應用程序或服務,一般都可以從該日誌文件中獲得相關的時間記錄信息

/var/log/cron:記錄crond計劃任務產生的事件信息

/var/log/dmesg:記錄Linux系統在引導過程中的各種事件信息

/var/log/maillog:記錄進入或發出系統的電子郵件活動

/var/log/lastlog:記錄每個用戶最近的登錄時間

/var/log/secure:記錄用戶認證相關的安全事件信息

/var/log/wtmp:記錄每個用戶登錄,註銷及系統啓動和停機事件

/var/log/btmp:記錄失敗的,錯誤的登錄嘗試及驗證事件

yum安裝的都存放在/var/log/yum.log中;手工編譯安裝的都是自己指定的目錄

**五、**日誌文件分析

●分析日誌文件的目的在於通過瀏覽日誌查找關鍵信息,對系統服務進行調試,以及判斷髮生故障的原因等

●對於大多數文本格式的日誌文件(如內核及系統日誌,大多數的程序日誌),只要使用tail,more,less,cat等文本處理工具就可以查看日誌內容

●對於一些二進制格式的日誌文件(如用戶日誌),需要使用特定的查詢命令

5.1****內核及系統日誌

5.1.1由系統服務rsyslogd統一管理

軟件包:rsyslog-7.4.7-16.el7.x86_64

主要程序:/sbin/rsyslogd

配置文件:/etc/rsyslog.conf

5.1.2日誌消息的級別

在這裏插入圖片描述

5.1.3日誌記錄的一般格式

在這裏插入圖片描述

5.3用戶日誌分析

5.2.1保存目錄

保存了用戶登錄,退出系統等相關信息

/var/log/lastlog:最近的用戶登錄事件

/var/log/wtmp:用戶登錄,註銷及系統開,關機事件

/var/log/utmp:當前登錄的每個用戶的詳細信息

/var/log/secure:與用戶驗證相關的安全性事件

5.2.2分析工具

分析工具

users,who,w,last,lastb

查詢當前登錄的用戶情況:users,who,w命令

users命令只簡單的輸出當前登錄的用戶名稱,每個顯示的用戶名對應一個登錄會話。如果一個用戶有不止一個登錄會話,那他的用戶名將顯示與其相同的次數

在這裏插入圖片描述
who命令用戶報告當前登錄到系統中的每個用戶的信息

who命令的默認輸出包括用戶名,終端類型,登錄日期及遠程主機,從而系統管理員可以查看當前系統存在哪些不合法用戶

在這裏插入圖片描述

w命令用於顯示當前系統中的每個用戶及其所運行的進程信息,比users,who命令的輸出內容要更加豐富一些

在這裏插入圖片描述

查詢用戶登錄的歷史記錄:last,lastb命令

last命令用於查詢成功登錄到系統的用戶記錄,最近的登錄情況將顯示在最前面

通過last命令可以及時掌握Linux主機的登錄情況,若發現未經授權的用戶登錄過,則表示當前主機可能已被入侵
在這裏插入圖片描述

lastb命令用於查詢登錄失敗的用戶記錄,如登錄的用戶名錯誤,密碼不正確等情況都會記錄在案。

登錄失敗的情況屬於安全事件,因爲這表示可能有人在嘗試猜出你的密碼

除了使用lastb命令查看以外,還可以直接從安全日誌文件/var/log/secure中獲得相關信息
在這裏插入圖片描述
在這裏插入圖片描述

5.3 程序日誌

5.3.1由相應的程序獨立進行管理

web服務:/var/log/httpd/

access_log,error_log(httpd網站服務程序使用的兩個日誌文件access_log和error_log,分別記錄客戶訪問事件,錯誤事件。)

代理服務:/var/log/squid/

access.log , cache.log

FTP服務:/var/log/xferlog

5.3.2分析工具

文本查看,grep過濾檢索,webmin管理套件中查看

awk,sed等文本過濾,格式化編輯工具

webalizer,awstats等專用日誌分析工具

5.3.3日誌管理策略

●及時做好備份和歸檔

●延長日誌保存期限

●控制日誌訪問權限

日誌中可能會包含各類敏感信息,如賬戶,口令等

●集中管理日誌

將服務器的日誌文件發到統一的日誌文件服務器

便於日誌信息的統一收集,整理和分析

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章