目錄
引言
一、inode和block詳解
1、概述
2、inode的内容
inode包含檔案的元資訊(不包含檔案名)
系統檔案三個時間屬性
目錄檔案的結構,目錄也是一種檔案
3、使用者通過檔案名打開檔案時,系統内部的過程
4、檢視inode号碼的方法
5、inode大小
6、inode的特殊作用
由于inode号碼與檔案名分離,導緻Linux系統具備以下幾種特有的現象
二、可能出現的inode故障
三、硬連結和軟連結(符号連結)
連結檔案分類
四、恢複删除的檔案
1、恢複誤删除的檔案ext3
2、恢複誤删除的檔案XFS
xfsdump的指令格式
xfsdump 的備份級别
xfsdump指令常用的選項
xfsrestore 指令格式
xfsdump使用限制
操作步驟
五、分析日志檔案
1、日志的功能
2、日志檔案的分類
3、日志儲存位置
4、常見的一些日志檔案
核心及公共消息日志
計劃任務日志
系統引導日志
郵件系統日志
使用者登入日志
5、核心及系統日志由系統服務rsyslog 統一管理
主配置檔案:/etc/rsyslog.conf
主要程式:/sbin/rsyslogd
6、Linux系統核心日志消息的優先級别(數字等級越小,優先級越高,消息越重要)
7、公共日志/var/log/messages檔案的記錄格式
8、詳細日志分析指令
9、日志管理政策
及時作好備份和歸檔
延長日志儲存期限
控制日志通路權限
集中管理日志
10、程式日志分析
由相應的應用程式獨立進行管理
分析工具
總結
引言
之前給大家分享了很多的linux系統管理的知識,相信持續關注我的人也知道,關于系統管理的知識基本上我都有給大家分享了,今天最後給大家分享關于系統檔案和日志的内容,分享完今天的内容,相信如果是新手小夥伴,已經成為初級的linux工程師了,廢話不多說下面開始我今天的分享
一、inode和block詳解
1、概述
檔案資料包括元資訊與實際資料
檔案存儲在硬碟上,硬碟最小存儲機關是"扇區”,每個扇區存儲512位元組
block(塊):連續的八個(4個)扇區組成一個block,是檔案存取的最小機關(資料)
inode(索引節點):中文譯名為“索引節點”,也叫i節點,用于存儲檔案元資訊
注:一個檔案必須占用一個inode,但是至少占用一個block
2、inode的内容
inode包含檔案的元資訊(不包含檔案名)
檔案的位元組數——檔案擁有者的User ID——檔案的Group lD
檔案的讀、寫、執行權限——檔案的時間戳
系統檔案三個時間屬性
ctime:最後一次改變檔案或目錄(屬性)的時間
atime:最後一次通路檔案或目錄的時間
mtime:最後一次修改檔案或目錄(内容)的時間
目錄檔案的結構,目錄也是一種檔案

每個inode都有一個号碼,作業系統用inode号碼來識别不同的檔案
Linux系統内部不使用檔案名,而使用inode号碼來識别檔案
對于使用者,檔案名隻是inode号碼便于識别的别稱
3、使用者通過檔案名打開檔案時,系統内部的過程
系統找到這個檔案名對應的inode号碼
通過inode号碼,擷取inode資訊
根據inode資訊,找到檔案資料所在的block,讀出資料
4、檢視inode号碼的方法
ls -i 指令: 檢視檔案名對應的inode号碼
stat 指令: 檢視檔案inode資訊中的inode号碼
5、inode大小
inode也會消耗硬碟空間,是以格式化的時候,作業系統自動将硬碟分成兩個區域。一個是資料區,存放檔案資料:另一個是inode區,存放inode所包含的資訊。每個inode的大小,一般是128位元組或256位元組
通常情況下不需要關注單個inode的大小,而是需要重點關注inode.總數
inode的總數在格式化時就給定了,執行"df-i"指令即可檢視每個硬碟分區對應的的inode總數和已經使用的inode數量
6、inode的特殊作用
由于inode号碼與檔案名分離,導緻Linux系統具備以下幾種特有的現象
檔案名包含特殊字元,可能無法正常删除。這時直接删除inode,能夠起到删除檔案的作用
移動檔案或重命名檔案,隻是改變檔案名,不影響inode 号碼
打開一個檔案以後,系統就以inode 号碼來識别這個檔案,不再考慮檔案名
檔案資料被修改儲存後,會生成一個新的inode号碼
find ./ -inum 52305140 -exec rm -i {} \;
find ./ -inum 50464299 -delete
[[email protected] home]# ls
??fd.txt l l0 l8 l80 l800 l9 l90 li li1 liu3 ly ly1 ly2 ly3
[[email protected] home]# rm -rf ??fd.txt
[[email protected] home]# ls
??fd.txt l l0 l8 l80 l800 l9 l90 li li1 liu3 ly ly1 ly2 ly3
[[email protected] home]# ls -i
101029976 ??fd.txt 67144280 l80 67332567 li 67332553 ly1
67332581 l 67144265 l800 67332571 li1 67332557 ly2
67142740 l0 67142744 l9 67332575 liu3 67332561 ly3
67332589 l8 67142753 l90 101990779 ly
[[email protected] home]# rm -rf 101029976
[[email protected] home]# ls -i
101029976 ??fd.txt 67144280 l80 67332567 li 67332553 ly1
67332581 l 67144265 l800 67332571 li1 67332557 ly2
67142740 l0 67142744 l9 67332575 liu3 67332561 ly3
67332589 l8 67142753 l90 101990779 ly
[[email protected] home]# find /home/ -inum 101029976 -exec rm -i {} \;
rm:是否删除普通空檔案 "/home/\243\244fd.txt"?y
[[email protected] home]# ls
l l0 l8 l80 l800 l9 l90 li li1 liu3 ly ly1 ly2 ly3
二、可能出現的inode故障
[[email protected] ~]# fdisk /dev/sdb #fdisk分區
[[email protected] ~]# mkfs.ext3 /dev/sdb1
[[email protected] ~]# mkdir /1
[[email protected] ~]# mount /dev/sdb1 /1
[[email protected] ~]# df -i #/1下可以有22518個inode
檔案系統 Inode 已用(I) 可用(I) 已用(I)% 挂載點
/dev/sda3 17300992 147260 17153732 1% /
devtmpfs 229708 422 229286 1% /dev
tmpfs 233381 1 233380 1% /dev/shm
tmpfs 233381 607 232774 1% /run
tmpfs 233381 16 233365 1% /sys/fs/cgroup
/dev/sda1 1048576 329 1048247 1% /boot
tmpfs 233381 17 233364 1% /run/user/0
/dev/sr0 0 0 0 - /run/media/root/CentOS 7 x86
_64/dev/sdb1 22528 10 22518 1% /1
[[email protected] ~]# for ((i=1;i<=22518;i=i+1)); #建立22518個檔案
> do touch /1/file${i}
> done
[[email protected] ~]# df -i #inode耗盡
檔案系統 Inode 已用(I) 可用(I) 已用(I)% 挂載點
/dev/sda3 17300992 147260 17153732 1% /
devtmpfs 229708 422 229286 1% /dev
tmpfs 233381 1 233380 1% /dev/shm
tmpfs 233381 607 232774 1% /run
tmpfs 233381 16 233365 1% /sys/fs/cgroup
/dev/sda1 1048576 329 1048247 1% /boot
tmpfs 233381 17 233364 1% /run/user/0
/dev/sr0 0 0 0 - /run/media/root/CentOS 7 x86
_64/dev/sdb1 22528 22528 0 100% /1
[[email protected] ~]# df -h #容量還有75M
檔案系統 容量 已用 可用 已用% 挂載點
/dev/sda3 33G 4.7G 29G 15% /
devtmpfs 898M 0 898M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 9.1M 903M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 2.0G 174M 1.9G 9% /boot
tmpfs 183M 24K 183M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb1 82M 2.2M 75M 3% /1
[[email protected] ~]# touch /1/1.txt #無法建立檔案
touch: 無法建立"1.txt": 裝置上沒有空間
三、硬連結和軟連結(符号連結)
連結檔案分類
軟連結又稱符号連結——删除原始檔案後連結失效,适用于檔案或目錄,儲存位置與原始檔案可以位于不同的檔案系統中
格式:ln -s 源檔案或目錄 目标位置
硬連結——删除原始檔案後連結可以使用,隻可用于檔案,儲存位置必須與原始檔案在同一個檔案系統
格式:ln 源檔案 目标位置
四、恢複删除的檔案
1、恢複誤删除的檔案ext3
[[email protected] ~]# fdisk /dev/sdb
[[email protected] ~]# mkfs.ext3 /dev/sdc1 #使用fdisk建立分區/dev/sdc1, 格式化ext3檔案系統
[[email protected] ~]# mkdir /1
[[email protected] ~]# mount /dev/sdb1 /1
[[email protected] ~]# yum -y install e2fsprogs-devel e2fsprogs-libs gcc gcc-c++ #安裝依賴包
[[email protected] ~]# cd /1 #編譯安裝extundelete
[[email protected] 1]# wgethttp://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
[[email protected] 1]# tar jxvf extundelete-0.2.4.tar.bz2
[[email protected] 1]# cd extundelete-0.2.4/
[[email protected] extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete && make && make install
[[email protected] extundelete-0.2.4]# ln -s /usr/local/extundelete/bin/* /usr/bin/
[[email protected] extundelete-0.2.4]# cd /1
[[email protected] 1]# echo 1>a
[[email protected] 1]# echo 1>b
[[email protected] 1]# echo 1>c
[[email protected] 1]# echo 1>d
[[email protected] 1]# rm -rf a b #模拟删除并執行恢複操作
[[email protected] 1]# extundelete /dev/sdc1 --inode 2
#檢視檔案系統/dev/sdc1下存在哪些檔案,i節點是從2開始的,2代表該檔案系統最開始的目錄。
[[email protected] 1]# cd ~
[[email protected] ~]# umount /test
[[email protected] ~]# extundelete /dev/sdc1 --restore-all
#恢複/dev/sdb1 檔案系統下的所有内容
[[email protected] ~]# ls RECOVERED_FILES/
c d
#在目前目錄下會出現一個RECOVERED_FILES/目錄,裡面儲存了已經恢複的檔案
2、恢複誤删除的檔案XFS
xfsdump的指令格式
xfsdump -f 備份存放位置 要備份的路徑或裝置檔案
xfsdump 的備份級别
0表示完全備份,1-9表示增量備份
xfsdump指令常用的選項
-f: 指定備份檔案目錄
-L: 指定标簽session label
-M: 指定裝置标簽media labe........
-s:備份單個檔案,-s後面不能直接跟路徑
xfsrestore 指令格式
xfsrestore -f 恢複檔案位置 存放恢複後檔案位置
xfsdump使用限制
隻能備份已挂載的檔案系統
必須使用root的權限才能操作
隻能備份XFS檔案系統
備份後的資料隻能讓xfsrestore解析
不能備份兩個具有相同UUID的檔案系統(可用blkid指令檢視)
操作步驟
[[email protected] ~]# fdisk /dev/sdc
[[email protected] ~]# mkfs.xfs /dev/sdc1
[[email protected] ~]# mkdir /2
[[email protected] ~]# mount /dev/sdc1 /2
[[email protected] ~]# cd /2
[[email protected] 2]# cp /etc/passwd /2
[[email protected] 2]# ls
passwd
[[email protected] 2]# ls /opt
rh
[[email protected] 2]# rpm -qa | grep xfsdump
xfsdump-3.1.4-1.el7.x86_64
[[email protected] 2]# yum install -y xfsdump
[[email protected] 2]# xfsdump -f /opt/dump_sdc1 /dev/sdc1 #使用xfsdump指令備份整個分區
please enter label for this dump session (timeout in 300 sec)
-> dump_sdc1
please enter label for media in drive 0 (timeout in 300 sec)
-> sdc1
[[email protected] 2]# rm -rf /2/* #模拟資料丢失并使用xfsrestore 指令恢複檔案
[[email protected]alhost 2]# ls
[[email protected] 2]# xfsrestore -f /opt/dump_sdc1 /2
[[email protected] 2]# ls
passwd
五、分析日志檔案
1、日志的功能
用于記錄系統、程式運作中發生的各種事件
通過閱讀日志,有助于診斷和解決系統故障
2、日志檔案的分類
核心及系統日志——由系統服務rsyslog統一進行管理,日志格式基本相似
使用者日志——記錄系統使用者登入及退出系統的相關資訊
程式日志——由各種應用程式獨立管理的日志檔案,記錄格式不統一
3、日志儲存位置
預設位于: /var/log目錄下
4、常見的一些日志檔案
核心及公共消息日志
/var/log/messages: 記錄Linux核心消息及各種應用程式的公共日志資訊,包括啟動、IO錯誤、網絡錯誤、程式故障等
對于未使用獨立日志檔案的應用程式或服務,一般都可以從該日志檔案中獲得相關的事件記錄資訊。
計劃任務日志
/var/log/cron: 記錄crond計劃任務産生的事件資訊
系統引導日志
/var/log/dmesg: 記錄Linux系統在引導過程中的各種事件資訊
郵件系統日志
/var/log/maillog: 記錄進入或發出系統的電子郵件活動
使用者登入日志
/var/log/secure: 記錄使用者認證相關的安全事件資訊
/var/log/lastlog: 記錄每個使用者最近的登入事件,二進制格式
/var/1og/wtmp: 記錄每個使用者登入、登出及系統啟動和停機事件,二進制格式
/var/run/btmp: 記錄失敗的、錯誤的登入嘗試及驗證事件,二進制格式
也并不是所有安裝的程式的日志都會在/var/log下,隻有rpm包安裝的才會,源碼裝的在自己指定的目錄中
例如httpd,源碼安裝的日志目錄在/usr/local/httpd/logs/
5、核心及系統日志由系統服務rsyslog 統一管理
主配置檔案:/etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none /var/1og/messages
*.info #表示info等級及以,上的所有等級的資訊都寫到對應的日志檔案裡
mail.none #表示某事件的資訊不寫到日志檔案裡( 這裡比如是郵件)
主要程式:/sbin/rsyslogd
6、Linux系統核心日志消息的優先級别(數字等級越小,優先級越高,消息越重要)
0 EMERG(緊急):會導緻主機系統不可用的情況
1 ALERT(警告):必須馬上采取措施解決的問題
2 CRIT(嚴重):比較嚴重的情況
3 ERR (錯誤) :運作出現錯誤
4 WARNING(提醒):可能影響系統功能,需要提醒使用者的重要事件
5 NOTICE (注意) :不會影響正常功能,但是需要注意的事件
6 INFO(資訊):一般資訊
7 DEBUG(調試):程式或系統調試資訊等
7、公共日志/var/log/messages檔案的記錄格式
時間标簽:消息發出的日期和時間
主機名:生成消息的計算機的名稱
子系統名稱:發出消息的應用程式的名稱
消息:消息的具體内容
程式自己維護日志記錄,httpd 網站服務程式使用兩個日志檔案
access_log : #記錄客戶通路事件
error_log #記錄錯誤事件
8、詳細日志分析指令
users:指令隻是簡單地輸出目前登入的使用者名稱,每個顯示的使用者名對應一個登入會話。如果一個使用者有不止一個登入會話,那他的使用者名将顯示與其相同的次數
who:指令用于報告目前登入到系統中的每個使用者的資訊。使用該指令,系統管理者可以檢視目前系統存在哪些不合法使用者,進而對其進行審計和處理。who 的預設輸出包括使用者名、終端類型、登入日期及遠端主機
w:指令用于顯示目前系統中的每個使用者及其所運作的程序資訊,比 users、who 指令的輸出内容要豐富一些
last:指令用于查詢成功登入到系統的使用者記錄,最近的登入情況将顯示在最前面。通過last 指令可以及時掌握 Linux 主機的登入情況,若發現未經授權的使用者登入過,則表示目前主機可能已被入侵
lastb:指令用于查詢登入失敗的使用者記錄,如登入的使用者名錯誤、密碼不正确等情況都将記錄在案。登入失敗的情況屬于安全事件,因為這表示可能有人在嘗試猜解你的密碼。除了使用 lastb 指令檢視以外,也可以直接從安全日志檔案/var/log/secure 中獲得相關資訊
9、日志管理政策
及時作好備份和歸檔
延長日志儲存期限
控制日志通路權限
日志中可能會包含各類敏感資訊,如賬戶、密碼等
集中管理日志
将伺服器的日志檔案發到統一的日志檔案伺服器
便于日志資訊的統一收集、整理和分析
杜絕日志資訊的意外丢失、惡意篡改或删除
10、程式日志分析
由相應的應用程式獨立進行管理
Web服務:/arlog/httpd/ access_log、error_log
代理服務:lvar/log/squid/ access.log、cache.log
FTP服務:var/log/xferlog
分析工具
文本檢視、grep過濾檢索、Webmin管理套件中檢視
awk、sed等文本過濾、格式化編輯工具
Webalizer、Awstats等專用日志分析工具
總結
今天分享的内容其實不是特别多,簡單總結就是block和inode,還有軟硬連結,再到如何恢複我們誤删的檔案,最多的就是關于認識和管理日志檔案的,這也是我們日常工作中非常重要的一部分,最後共享新手小夥伴成功入門linux工程師