Linux文件系统与日志分析(inode、inode节点耗尽故障处理、文件备份和恢复、日志文件管理)
Linux文件系統(tǒng)與日志分析
- 一、inode和block概述
- 1.文件和扇區(qū)
- 2.塊(block)
- 3.文件數(shù)據(jù)
- 二、inode(索引節(jié)點(diǎn))
- 1.inode的內(nèi)容
- 2.inode的號(hào)碼
- 3.inode的大小
- 3.inode的特殊作用
- 4.通過刪除inode號(hào)刪除文件
- 三、模擬inode節(jié)點(diǎn)耗盡故障處理
- 演示
- 四、EXT類型文件恢復(fù)
- 五、xfs 類型文件備份和恢復(fù)
- 六、系統(tǒng)日志
- 1.日志文件
- 1.1 日志的功能
- 1.2 日志的分類
- 1.3 系統(tǒng)日志默認(rèn)保存位置
- 1.4常見的一些日志文件
- 2.內(nèi)核及系統(tǒng)日志
- 2.1 查看rsyslog.conf配置文件
- 2.2 日志消息的級(jí)別
- 2.3 日志記錄的一般格式
- 3.用戶日志分析
- 4.程序日志分析
- 5.日志管理策略
一、inode和block概述
1.文件和扇區(qū)
- 文件是存儲(chǔ)在硬盤上的,硬盤的最小存儲(chǔ)單位叫做“扇區(qū)”(sector),每個(gè)扇區(qū)存儲(chǔ)512字節(jié)。
2.塊(block)
- 一般連續(xù)八個(gè)扇區(qū)組成一個(gè)“塊”(block),一個(gè)塊是4K大小,是文件存取的最小單位。
- 操作系統(tǒng)讀取硬盤的時(shí)候,是一次性讀取多個(gè)扇區(qū),即一個(gè)塊一個(gè)塊的讀取的。
3.文件數(shù)據(jù)
- 文件數(shù)據(jù)包括實(shí)際數(shù)據(jù)與元數(shù)據(jù)(類似文件屬性)。
- 文件數(shù)據(jù)存儲(chǔ)在“塊”中,存儲(chǔ)文件元信息(比如文件的創(chuàng)建者、創(chuàng)建日期、文件大小、文件權(quán)限等)的區(qū)域就叫做inode。
二、inode(索引節(jié)點(diǎn))
- 一個(gè)文件必須占用一個(gè) inode,并且至少占用一個(gè) block。
- inode不包含文件名。文件名是存放在目錄當(dāng)中的。Linux 系統(tǒng)中一切皆文件,因此目錄也是一種文件。
- 每個(gè)inode都有一個(gè)號(hào)碼,操作系統(tǒng)用inode號(hào)碼來識(shí)別不同的文件。Linux系統(tǒng)內(nèi)部不使用文件名,而使用inode號(hào)碼來識(shí)別文件。對(duì)于系統(tǒng)來說,文件名只是inode號(hào)碼便于識(shí)別的別稱,文件名和inode號(hào)碼是一一對(duì)應(yīng)關(guān)系,每個(gè)inode號(hào)碼對(duì)應(yīng)一個(gè)文件名。
1.inode的內(nèi)容
■inode包含文件的元信息
- 文件的字節(jié)數(shù)
- 文件擁有者的User ID
- 文件的Group ID
- 文件的讀、寫、執(zhí)行權(quán)限
- 文件的時(shí)間戳
- …
■用stat命令可以查看某個(gè)文件的inode信息
- 示例:stat aa.txt
■ Linux系統(tǒng)文件三個(gè)主要時(shí)間屬性
- ctime(change time) #最后一次改變文件或目錄(屬性)的時(shí)間
- atime(access time) #最后一次訪問文件或目錄的時(shí)間
- mtime(modify time) #最后一次修改文件或目錄(內(nèi)容)的時(shí)間
■目錄文件的結(jié)構(gòu)
- 目錄也是一種文件
- 目錄文件的結(jié)構(gòu)
■每個(gè)inode都有一個(gè)號(hào)碼,操作系統(tǒng)用inode號(hào)碼來識(shí)別不同的文件
■Linux系統(tǒng)內(nèi)部不使用文件名,而使用inode號(hào)碼來識(shí)別文件
■對(duì)于用戶,文件名只是inode號(hào)碼便于識(shí)別的別稱
2.inode的號(hào)碼
■用戶通過文件名打開文件時(shí),系統(tǒng)內(nèi)部的過程
- 系統(tǒng)找到這個(gè)文件名對(duì)應(yīng)的inode號(hào)碼
- 通過inode號(hào)碼,獲取inode信息
- 根據(jù)inode信息,找到文件數(shù)據(jù)所在的block,讀出數(shù)據(jù)
■查看inode號(hào)碼的方法
- ls -i命令:查看文件名對(duì)應(yīng)的inode號(hào)碼
- stat命令:查看文件inode信息中的inode號(hào)碼
3.inode的大小
■inode也會(huì)消耗硬盤空間
- 每個(gè)inode的大小一般是128字節(jié)或256字節(jié)
■格式化文件系統(tǒng)是確定了inode的總數(shù)
■使用df -i命令可以查看每個(gè)硬盤分區(qū)的inode總數(shù)和已經(jīng)使用的數(shù)量
3.inode的特殊作用
由于 inode 號(hào)碼與文件名分離,導(dǎo)致Linux 系統(tǒng)具備以下幾種特有的現(xiàn)象:
- 文件名包含特殊字符,可能無法正常刪除。這時(shí)直接刪除 inode,能夠起到刪除文件的作用;
- 移動(dòng)文件或重命名文件,只是改變文件名,不影響 inode 號(hào)碼;
- 打開一個(gè)文件以后,系統(tǒng)就以 inode 號(hào)碼來識(shí)別這個(gè)文件,不再考慮文件名。
- 文件數(shù)據(jù)被修改保存后,會(huì)生成一個(gè)新的 inode 號(hào)碼。
4.通過刪除inode號(hào)刪除文件
find ./ -inum 52305140 -exec rm -i {} \; find ./ -inum 50464299 -delete演示:
命令二同理不演示了
三、模擬inode節(jié)點(diǎn)耗盡故障處理
步驟總匯
1、使用fdisk創(chuàng)建分區(qū)/dev/sdb1,分區(qū)大小30M即可 fdisk /dev/sdb mkfs.ext4 /dev/sdb1 #這邊我們用ext4類型的文件系統(tǒng)進(jìn)行模擬 mkdir /test mount /dev/sdb1 /mnt df -i2、模擬inode節(jié)點(diǎn)耗盡故障 for ((i=1; i<=7680; i++));do touch /test/file$i;done 或者 touch {1..7680}.txt df -i df -hT 3、刪除文件恢復(fù) rm -rf /test/* df -i df -hT演示
1.使用fdisk創(chuàng)建分區(qū)/dev/sdb1,格式化并掛載
2.模擬inode節(jié)點(diǎn)耗盡故障
3.刪除恢復(fù)文件
四、EXT類型文件恢復(fù)
extundelete 是一個(gè)開源的 Linux 數(shù)據(jù)恢復(fù)工具,支持 ext3、ext4文件系統(tǒng)。(ext4只能在centos6版本恢復(fù))1、使用fdisk創(chuàng)建分區(qū)/dev/sdb1,格式化ext3文件系統(tǒng) fdisk /dev/sdb mkfs.ext3 /dev/sdb1 mkdir /test mount /dev/sdb1 /test df -hT2、安裝依賴包 yum -y install e2fsprogs-devel e2fsprogs-libs3、編譯安裝 extundelete cd /test 切換到test目錄中 wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 #官網(wǎng)下載源 tar jxvf extundelete-0.2.4.tar.bz2 #解壓tar包 cd extundelete-0.2.4/ #切換到解壓出來的目錄中 ./configure --prefix=/usr/local/extundelete && make && make install #指定安裝目錄,開始安裝 ln -s /usr/local/extundelete/bin/* /usr/bin/ #創(chuàng)建軟連接,讓系統(tǒng)識(shí)別命令4、模擬刪除并執(zhí)行恢復(fù)操作 cd /test echo a>a echo a>b echo a>c echo a>d ls extundelete /dev/sdb1 --inode 2 #查看文件系統(tǒng)/dev/sdb1下存在哪些文件,i 節(jié)點(diǎn)是從 2 開始的,2 代表該文件系統(tǒng)最開始的目錄。rm -rf a b extundelete /dev/sdb1 --inode 2 cd ~ umount /test extundelete /dev/sdb1 --restore-all #恢復(fù)/dev/sdb1 文件系統(tǒng)下的所有內(nèi)容 #在當(dāng)前目錄下會(huì)出現(xiàn)一個(gè)RECOVERED_FILES/目錄,里面保存了已經(jīng)恢復(fù)的文件 ls RECOVERED_FILES/演示:
1.用fdisk創(chuàng)建分區(qū)/dev/sdb1,格式化ext3文件類型并掛載
2.安裝依賴包
3.編譯安裝 extundelete
4.模擬刪除并恢復(fù)文件
五、xfs 類型文件備份和恢復(fù)
- CentOS 7 系統(tǒng)默認(rèn)采用 xfs類型的文件,xfs 類型的文件可使用 xfsdump 與 xfsrestore 工具進(jìn)行備份恢復(fù)。
- xfsdump 的備份級(jí)別有兩種:0 表示完全備份;1-9 表示增量備份。xfsdump 的備份級(jí)別默認(rèn)為 0。
步驟如下:
1、使用fdisk創(chuàng)建分區(qū)/dev/sdb1,格式化xfs文件系統(tǒng) fdisk /dev/sdb partprobe /dev/sdb mkfs.xfs [-f] /dev/sdb1 mkdir /data mount /dev/sdb1 /data/ cd /data cp /etc/passwd ./ mkdir test touch test/a2、使用 xfsdump 命令備份整個(gè)分區(qū) rpm -qa | grep xfsdump yum install -y xfsdump xfsdump -f /opt/dump_sdb1 /dev/sdb1 [-L dump_sdb1 -M sdb1]3、模擬數(shù)據(jù)丟失并使用 xfsrestore 命令恢復(fù)文件 cd /data/ rm -rf ./* lsxfsrestore -f /opt/dump_sdb1 /data/演示:
1.使用fdisk創(chuàng)建分區(qū)/dev/sdb1,格式化xfs文件系統(tǒng)并掛載
2.使用 xfsdump 命令備份整個(gè)分區(qū)
六、系統(tǒng)日志
1.日志文件
1.1 日志的功能
- 用于記錄系統(tǒng)、程序運(yùn)行中發(fā)生的各種事件
- 通過閱讀日志,有助于診斷和解決系統(tǒng)故障
1.2 日志的分類
■內(nèi)核及系統(tǒng)日志
- 由系統(tǒng)服務(wù) rsyslog 統(tǒng)一進(jìn)行管理,日志格式基本相似
- 主配置文件 /etc/rsyslog.conf
■用戶日志
- 記錄系統(tǒng)用戶登錄及退出系統(tǒng)的相關(guān)信息
- 主配置文件/var/log/secure
■程序日志
由各種應(yīng)用程序獨(dú)立管理的日志文件,記錄格式不統(tǒng)一
1.3 系統(tǒng)日志默認(rèn)保存位置
系統(tǒng)日志文件都默認(rèn)放在目錄/var/log/下
1.4常見的一些日志文件
內(nèi)核及公共消息日志: /var/log/messages:記錄Linux內(nèi)核消息及各種應(yīng)用程序的公共日志信息,包括啟動(dòng)、To錯(cuò)誤、網(wǎng)絡(luò)錯(cuò)誤、程序故障等。 對(duì)于未使用獨(dú)立日志文件的應(yīng)用程序或服務(wù),一般都可以從該日志文件中獲得相關(guān)的事件記錄信息。#計(jì)劃任務(wù)日志: / var/ log / cron:記錄crond計(jì)劃任務(wù)產(chǎn)生的事件信息。#系統(tǒng)引導(dǎo)日志: /var/log/dmesg:記錄Linux系統(tǒng)在引導(dǎo)過程中的各種事件信息。#郵件系統(tǒng)日志: /var/ log/maillog:記錄進(jìn)入或發(fā)出系統(tǒng)的電子郵件活動(dòng)。#用戶登錄日志: /var/log/security:記錄用戶認(rèn)證相關(guān)的安全事件信息。 /var/log/lastlog:記錄每個(gè)用戶最近的登錄事件。二進(jìn)制格式 /var/log/wtmp:記錄每個(gè)用戶登錄、注銷及系統(tǒng)啟動(dòng)和停機(jī)事件。二進(jìn)制格式 /var/run/btmp:記錄失敗的、錯(cuò)誤的登錄嘗試及驗(yàn)證事件。二進(jìn)制格式2.內(nèi)核及系統(tǒng)日志
■由系統(tǒng)服務(wù) rsyslog 統(tǒng)一進(jìn)行管理
- 軟件包:rsyslog-7.4.7-16.el7.x86_64、
- 主要程序:/sbin/rsyslogd
- 配置文件:/etc/rsyslog.cont
2.1 查看rsyslog.conf配置文件
vim /etc/rsyslog.conf #查看rsyslog.conf配置文件 *.info;mail.none;authpriv.none;cron.none /var/log/messages*.info #表示info等級(jí)及以上的所有等級(jí)的信息都寫到對(duì)應(yīng)的日志文件里 mail.none #表示某事件的信息不寫到日志文件里(這里比如是郵件)2.2 日志消息的級(jí)別
| 0 | EMERG(緊急) | 會(huì)導(dǎo)致主機(jī)系統(tǒng)不可用的情況。 |
| 1 | ALERT(警告) | 必須馬上采取措施解決的問題。 |
| 2 | CRIT(嚴(yán)重) | 比較嚴(yán)重的情況。 |
| 3 | ERR(錯(cuò)誤) | 運(yùn)行出現(xiàn)錯(cuò)誤。 |
| 4 | WARNING(提醒) | 可能影響系統(tǒng)功能,需要提醒用戶的重要事件。 |
| 5 | NOTICE(注意) | 不會(huì)影響正常功能,但是需要注意的事件。 |
| 6 | INFO(信息) | 一般信息。 |
| 7 | DEBUG(調(diào)試) | 程序或系統(tǒng)調(diào)試信息等。 |
2.3 日志記錄的一般格式
3.用戶日志分析
■保存了用戶登錄、退出系統(tǒng)的相關(guān)信息
- /var/log/lastlog:最近的用戶登錄事件
- /var/log/wtmp:用戶登錄、注銷及系統(tǒng)開、關(guān)機(jī)事件
- /var/run/utmp:當(dāng)前登錄的每個(gè)用戶的詳細(xì)信息
- /var/log/secure:與用戶驗(yàn)證相關(guān)的安全性事件
■分析工具
- users、 who、w 、last、lastb
- last命令用于查詢成功登錄到系統(tǒng)的用戶記錄
- lastb命令用于查詢登錄失敗的用戶記錄
4.程序日志分析
■由相應(yīng)的應(yīng)用程序獨(dú)立進(jìn)行管理
■Web服務(wù):Nar/log/httpd/
- access_log //記錄客戶訪問事件
- error_log //記錄錯(cuò)誤事件
■代理服務(wù):/var/log/squid/
- access.log、cache.log
■分析工具
- 文本查看、grep過濾檢索、Webmin管理套件中查看
- awk、sed等文本過濾、格式化編輯工具
- Webalizer、Awstats等專用日志分析工具
5.日志管理策略
■及時(shí)作好備份和歸檔
■延長日志保存期限
■控制日志訪問權(quán)限
- 日志中可能會(huì)包含各類敏感信息,如賬戶、口令等
■集中管理日志
- 將服務(wù)器的日志文件發(fā)到統(tǒng)一的日志文件服務(wù)器
- 便于日志信息的統(tǒng)一收集、整理和分析
- 杜絕日志信息的意外丟失、惡意篡改或刪除
總結(jié)
以上是生活随笔為你收集整理的Linux文件系统与日志分析(inode、inode节点耗尽故障处理、文件备份和恢复、日志文件管理)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4690支持内存:性能稳定兼容,打破内存
- 下一篇: 内存4g和4gb:到底有什么区别?