文章目錄
- 1.inode與block
- 1.1 inode與block概述
- 1.2 inode的內容
- 1.3 文件存儲
- 1.4 inode的大小
- 1.5 inode的特殊作用
- 2.硬鏈接與軟鏈接
- 2.1鏈接文件分類
- 3.恢復誤刪除的文件
- 3.1 案例:恢復EXT類型的文件
- 3.2 案例:恢復XFS類型的文件
- 3.2.1 xfsdump使用限制
- 4.分析日志文件
- 4.1日志文件
- 4.2 內核及系統日志
- 4.3用戶日志分析
- 4.4 程序日志分析
- 4.4.1由相應的應用程序獨立進行管理
- 4.4.2分析工具
- 4.4.3日志管理策略
1.inode與block
1.1 inode與block概述
- 文件數據包括元信息與實際數據
- 文件存儲在硬盤上,硬盤最小存儲單位是“扇區”,每個
- 扇區存儲512字節
- block(塊)
- 連續的八個扇區組成一個 block (8x512) 元信息--------------inode
- 是文件存取的最小單位
- **inode(索引節點) ** 數據----------------block
- 中文譯名為“索引節點”,也叫i節點 一個文件必須占用一個inode,但至少占用一block
- 用于存儲文件元信息
- block(塊)
1.2 inode的內容
-
inode包含文件的元信息
- 文件的字節數
- 文件擁有者的User ID 不包含文件名
- 文件的Group ID
- 文件的讀、寫、執行權限
- 文件的時間戳
-
用stat命令可以查看某個文件的inode信息
- 示例:stat aa.txt
- Linux系統文件三個主要的時間屬性
- atime(access time)
最后一次訪問文件或目錄的時間
- ctime(change time)
最后一次改變文件或目錄(屬性)的時間
- mtime(modify time)
最后一次修改文件或目錄(內容)的時間
輸入內容后時間會變化成最近一次操作的時間
用查看會讓atime變化
- 目錄文件的結構
- 目錄也是一種文件
- 目錄文件的結構
- 每個inode都有一個號碼,操作系統用inode號碼來識別不同的文件
- Linux系統內部不使用文件名,而使用inode號碼來識別文件
- 對于用戶,文件名只是inode號碼便于識別的別稱
用戶通過文件名打開文件時,系統內部的過程
1.系統找到這個文件名對應的inode號碼
2.通過inode號碼,獲取inode信息
3.根據inode信息,找到文件數據所在的block,讀出數據
查看inode號碼的方法
ls-i命令:查看文件名對應的inode號碼
Is -i aa.txt
stat命令:查看文件inode信息中的inode號碼
stat aa.txt
1.3 文件存儲
硬盤分區后的結構
訪問文件的簡單流程
1.4 inode的大小
- inode也會消耗硬盤空間
- 每個inode的大小
- 一般是128字節或256字節
- 格式化文件系統時確定inode的總數
- 使用df-i命令可以查看每個硬盤分區的inode總數和已經使用的數量
1.5 inode的特殊作用
- 由于inode號碼與文件名分離,導致Linux系統具備以下幾種特有的現象
- 文件名包含特殊字符,可能無法正常刪除。這時直接刪除inode,能夠起到刪除文件的作用;
- 移動文件或重命名文件,只是改變文件名,不影響inode 號碼
- 打開一個文件以后,系統就以inode 號碼來識別這個文件,不再考慮文件名
- 文件數據被修改保存后,會生成一個新的inode 號碼
刪除的兩種格式
find ./ -inum inode號 -exec rm -i {} ;
find ./ -inum inode號 -delete
添加硬盤分30M,掛載在test1中,使用命令創建多個文件實現故障現象,查看空余空間,嘗試在/opt/test下創建目錄無法創建
2.硬鏈接與軟鏈接
2.1鏈接文件分類
- 為文件或目錄建立鏈接文件
- 鏈接文件分類
特性 | 軟鏈接(符號鏈接) | 硬鏈接 |
---|---|---|
刪除原始文件后 | 鏈接失效,變成一個指向不存在的文件的符號鏈接 | 仍舊可用,因為鏈接指向的是文件的數據塊,而非文件名 |
使用范圍 | 適用于文件或目錄 | 只可用于文件 |
保存位置 | 可以與原始文件位于不同的文件系統中 | 必須與原始文件在同一個文件系統內(例如同一個Linux分區) |
文件大小 | 鏈接本身的大小是符號鏈接的大小,通常很小 | 硬鏈接不增加文件大小,因為它們共享相同的數據塊 |
創建方式 | ln -s [源文件或目錄] [鏈接名] | ln [源文件] [鏈接名] |
文件屬性 | 軟鏈接有自己的權限和所有者,與原始文件無關 | 硬鏈接沒有自己的權限和所有者,與原始文件相同 |
文件計數 | 查看鏈接數時,軟鏈接不計入原始文件的鏈接數 | 每個硬鏈接都會增加原始文件的鏈接數(ls -l 中的 ln 值) |
跨文件系統 | 可以創建跨文件系統的軟鏈接 | 不能創建跨文件系統的硬鏈接,因為不同文件系統的數據塊結構不同 |
- 硬鏈接
- In 源文件 目標位置
- 軟鏈接
- In -s 源文件或目錄 … 鏈接文件或目標位置
3.恢復誤刪除的文件
3.1 案例:恢復EXT類型的文件
extundelete 是一一個開源的Linux 數據恢復工具,支持ext3、 ext4文件系統。 ( ext4只能在centos6版本恢復)
- 編譯安裝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
- 安裝依賴包
- 模擬刪除并執行恢復操作
模擬過程
1.使用fdisk創建分區/dev/sdc1, 格式化ext3文件系統
fdisk /dev/sdc
partprobe /dev/sdc
mkfs.ext3 /dev/sdc1
mkdir /test
mount /dev/sdc1/test
df -hT
2.安裝依賴包
yum -y install e2fsprogs-devel e2fsprogs-libs gcc gcc-c++
3.編譯安裝extundelete
cd /test
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
cd extundelete-0.2.4/
./configure --prefix=/usr/1ocal/extundelete && make && make install 或
./configure && make && make install
ln -s /usr/local/extundelete/bin/* /usr/bin/
4.模擬刪除并執行恢復操作
cd /test
echo a>a
echo a>b
echo a>c
echo a>d
ls
extundelete /dev/sdc1 --inode 2 #查看文件系統/dev/sdc1下存在哪些文件,i節點是從2開始的,2代表該文件系統最開始的目錄
rm -rf a b
extundelete /dev/sdc1 --inode 2
cd ~
umount /test
extundelete /dev/sdc1 --restore-all #恢復/dev/sdc1 文件系統下的所有內容
在當前目錄下會出現一個RECOVERED_FILES/目錄,里面保存了已經恢復的文件
ls RECOVERED FILES/
添加一塊硬盤并分512M
格式化文件系統
創建一個目錄把/dev/sdb1掛載在上面,yum下載e2fsprogs-devel e2fsproges-libs
把extundelete-0.2.1.tar.bz2上傳到linux并解壓
將extundelete-0.2.1.tar.bz2移動到新建目錄下./configure安裝,make制作
在hj目錄下創建四個文件并輸入內容,使用extundelete保存inode號2以后的
刪除兩個測試文件
使用extundelete查看
解除掛載/de/sdb1并查看
使用extundelete恢復數據
切換到extundelete保存的目錄下查看刪除的文件
接著將文件拷貝到源目錄下
3.2 案例:恢復XFS類型的文件
- xfsdump命令格式
xfsdump-f +備份存放位置 +要備份的路徑或設備文件
- xfsdump備份級別(默認為0)
- 0:完全備份
- 1-9:增量備份
- **xfsdump常用選項 **
-
- f 指定備份文件目錄
- -L 指定標簽session label
- -M指定設備標簽media labe
- -S 備份單個文件,-s后面不能直接跟路徑
-
- xfsrestore命令格式
xfsrestore -f 恢復文件的位置 存放恢復后文件的位置
- 模擬刪除并執行恢復操作
模擬過程
1.使用fdisk創建分區/dev/sdb1,格式化xfs文件系統
fdisk /dev/sdb 或 partprobe /dev/sdb
mkfs.xfs /dev/sdb1 或者 mkfs.xfs [-f] /dev/sdb1
mkdir /data
mount /dev/sdb1 /data/
cd /data
cp /etc/passwd ./
mkdir test
touch test/a
2.使用xfsdump命令備份整個分區
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
3.模擬數據丟失并使用xfsrestore 命令恢復文件
cd /data/
rm -rf ./*
ls
xfsrestore -f /opt/dump_sdb1 /data/
備份有兩種·0·表示完全備份(默認),1-9·表示增量備份呢
xfsdump.按照·inode·順序備份·一個·xfs·文件系統
第二次備份也就是增量備份
xfsdump .- 1.1 .- f/opt/dump_sdb1_level_1/dev/sdb2 .- L.dump_sdb2_level 1-M.sdb2
使用fdisk創建分區/dev/sdb2,格式化xfs文件系統,掛載在創建的hk目錄
創建文件在hk目錄下
用rpm查看xfsdump是否安裝
使用xfsdump命令備份hk目錄,并保存在opt下
保存的文件位置 磁盤位置 磁盤
備份成功提示
備份文件位置
刪除文件
查看hk目錄確認已刪除
恢復備份
成功提示
查看恢復的文件
3.2.1 xfsdump使用限制
- 只能備份已掛載的文件系統
- 必須使用root的權限才能操作
- 只能備份XFS文件系統
- 備份后的數據只能讓xfsrestore解析
- 不能備份兩個具有相同UUID的文件系統
4.分析日志文件
4.1日志文件
4.1.1日志的功能
- 用于記錄系統、程序運行中發生的各種事件
- 通過閱讀日志,有助于診斷和解決系統故障
4.1.2日志文件的分類
- 內核及系統日志
- 由系統服務rsyslog統一進行管理,日志格式基本相似
- 用戶日志
- 記錄系統用戶登錄及退出系統的相關信息
- 程序日志
- 由各種應用程序獨立管理的日志文件,記錄格式不統一
4.1.3日志保存位置
- 默認位于:/var/lcg目錄下
4.1.4主要日志文件介紹
內核及公共消息日志 · /var/log/messages
記錄Linux內核消息及各種應用程序的公共日志信息,包括啟動、IO錯誤、網絡錯誤、程序故障等,對于未使用獨立日志文件的應用程序或服務,一般都可以從該日志文件中獲得相關的事件記錄信息
計劃任務日志 · /var/log/cron
記錄crond計劃任務產生的事件信息
系統引導日志 · /var/log/dmesg
記錄Linux系統在引導過程中的各種事件信息
郵件系統日志 · /var/log/maillog
記錄進入或發出系統的電子郵件活動
用戶登錄日志 · /var/log/lastlog
記錄每個用戶最近的登錄事件,是二進制格式
可以用lastlog查看
· /var/log/secure記錄用戶認證相關的安全事件信息 · /var/log/wtmp記錄每個用戶登錄、注銷及系統啟動和停機事件,是二進制格式可以用lastlog查看,存放在./var/log/secure· /var/run/btmp記錄失敗的、錯誤的登錄嘗試及驗證事件,是二進制格式可以用lastlog查看,存放在./var/log/secure
4.2 內核及系統日志
4.2.1 由系統服務 rsyslog 統一管理
- 軟件包:rsyslog-7.4.7-16.el7.x86 64
- 主要程序:/sbin/rsyslogd(服務)
- 配置文件:/etc/rsyslog.conf
4.2.1.1rsyslog服務常用命令
ps -ef | grep rsyslogd 查看服務是否開啟
grep -v “^$” /etc/rsyslog.conf 過濾掉空行
4.2.1.2自定義日志
用編輯器配置vim /etc/rsyslog.conf
加入一行內容*.info /var/log/info.log
日志中符號
mail.* 代表比*等級高的都記錄,代表任何,也就是說任何日志都記錄
.none 代表不記錄日志
日志存放位置為:所有日志高于這個等級就會對所有在線用戶廣播
.=代表只記錄=后面級別的日志
.!代表除了!后面級別的日志不記錄其他的都記錄
存放路徑之前有“-”代表先放入緩存足夠大之后再存放在路徑
systemctl restart rsyslog 重啟服務之后/var/log下面就生成info.log
用vim編輯器查看
4.2.2日志消息的級別
級號 消息 級別 說明
0 EMERG 緊急 會導致主機系統不可用的情況
1 ALERT 警告 必須馬上采取措施解決的問題
2 CRIT 嚴重 比較嚴重的情況
3 ERR 錯誤 運行出現錯誤
4 WARNING 錯誤 可能會影響系統功能的事件
5 NOTICE 注意 不會影響系統但值得注意
6 INFO 信息 一般信息
7 DEBUG 調試 程序或系統調試信息等
4.2.3日志記錄的一般格式
4.3用戶日志分析
4.3.1保存了用戶登錄、退出系統等相關信息
- /var/log/lastlog:最近的用戶登錄事件
- /var/log/wtmp:用戶登錄、注銷及系統開、關機事件
- /var/run/utmp:當前登錄的每個用戶的詳細信息
- /var/log/secure:與用戶驗證相關的安全性事件
4.3.2分析工具
- users、who、w、last、lastb(查詢登錄失敗的)
4.4 程序日志分析
4.4.1由相應的應用程序獨立進行管理
- Web服務:/var/log/httpd/
- access_log error_log
設置httpd的登錄和報錯日志
serverroot"/etc/httpd"
重啟httpd服務查看實時的倒數access_log
查詢結果
- 代理服務:/var/log/squid/
- access.log cache.log
- FTP服務:/var/log/xferlog
編譯安裝不在上面的位置
4.4.2分析工具
- 文本查看、grep過濾檢索、Webmin管理套件中查看
- awk、sed等文本過濾、格式化編輯工具
- Webalizer、Awstats等專用日志分析工具
journalctl工具
是CentOS-7獨有的工具
Systemd 統一管理所有 Unit 的啟動日志。好處就是 ,可以只用journalctl一個命令,查看所有日志(內核日志和 應用日志)
日志的配置文件/etc/systemd/journald.conf
ps -ef | grep journald
journalctl -b 查看本次啟動的日志
journalctl -k 查看內核日志
journalctl | wc -l 查看系統總共的日志
journalctl -xe 經常用來查看最近報錯的日志
-e:從結尾開始看
-x:提供問題相關的網址
journalctl -u httpd.service 指定服務服務報錯
journalctl -p err 指定日志等級查看級別
4.4.3日志管理策略
- 及時作好備份和歸檔
- 延長日志保存期限
- 控制日志訪問權限
- 日志中可能會包含各類敏感信息,如賬戶、口令等
- 集中管理日志
- 將服務器的日志文件發到統一的日志文件服務器
- 便于日志信息的統一收集、整理和分析
- 杜絕日志信息的意外丟失、惡意篡改或刪除
將日志文件全部放在日志文件服務器上(集中管理)
1.rpm -ql rsyslog 查看模塊有么有
2.服務端配置
[root@localhost ~]#vim /etc/rsyslog.conf
3.編輯文件取消第19 20 行注釋允許服務器使用TCP 514端口接收日志 ;開啟日志的遠程傳輸功能在192.168.10.19
19 $ModLoad imtcp
20 $InputTCPServerRun 514
4.重啟rsyslog日志服務
[root@localhost ~]# systemctl restart rsyslog
5.查看514端口是否開啟
[root@localhost ~]#netstat -ntap |grep 514
6.客戶端配置
[root@www1 ~]# vim /etc/rsyslog.conf
7.修改日志服務配置文件
90 . @@192.168.72.20:514
行數 所有 TCP 服務端IP 端口
8.把所有日志采用TCP協議發送到192.168.72.20的514端口上 ; #兩個@ 代表使用 tcp 一個代表udp
[root@localhost ~]# systemctl restart rsyslog
9.客戶端創建用戶
10.去服務端查看