inode和block概述

文件數(shù)據(jù)包括元信息與實(shí)際數(shù)據(jù)
文件存儲(chǔ)在硬盤上,硬盤最小存儲(chǔ)單位是“扇區(qū)”,每個(gè)
扇區(qū)存儲(chǔ)512字節(jié)

block (塊)

連續(xù)的八個(gè)扇區(qū)組成一個(gè)block(4K)
是文件存取的最小單位

元信息——————inode

數(shù)據(jù)———————block

inode (索引節(jié)點(diǎn))

中文譯名為“索引節(jié)點(diǎn)”,也叫i節(jié)點(diǎn)
用于存儲(chǔ)文件元信息

文件是存儲(chǔ)在硬盤上的,硬盤的最小存儲(chǔ)單位叫做“扇區(qū)"(sector),每個(gè)扇區(qū)存儲(chǔ)512字節(jié)。
一般連續(xù)八個(gè)扇區(qū)組成一個(gè)"塊"(block),一a個(gè)塊是4K大小,是文件存取的最小單位。操作系統(tǒng)讀取硬盤的時(shí)候,是一次性連續(xù)讀取多個(gè)扇區(qū),即一個(gè)塊一個(gè)塊的讀取的。
文件數(shù)據(jù)包括實(shí)際數(shù)據(jù)與元信息(類似文件屬性)。文件數(shù)據(jù)存儲(chǔ)在“塊"中,存儲(chǔ)文件元信息(比如文件的創(chuàng)建者、創(chuàng)建日期、文件大小、文件權(quán)限等)的區(qū)域就叫做inode。 因此,一個(gè)文件必須占用一個(gè)inode, 并且至少占用一個(gè)block。
inode不包含文件名。文件名是存放在目錄當(dāng)中的。Linux 系統(tǒng)中一切皆文件,因此目錄也是一種文件。
每個(gè)inode都有一個(gè)號(hào)碼,操作系統(tǒng)用inode號(hào)碼來(lái)識(shí)別不同的文件。Linux系統(tǒng)內(nèi)部不使用文件名,而使用inode號(hào)碼來(lái)識(shí)別文件。對(duì)于系統(tǒng)來(lái)說(shuō),文件名只是inode號(hào)碼便于識(shí)別的別稱,文件名和inode號(hào)碼是一一對(duì)應(yīng)關(guān)系,每個(gè)inode號(hào)碼對(duì)應(yīng)一個(gè)文件名。
所以,當(dāng)用戶在Linux系統(tǒng)中試圖訪問(wèn)一個(gè)文件時(shí),系統(tǒng)會(huì)先根據(jù)文件名去查找它對(duì)應(yīng)的inode號(hào)碼;通過(guò)inode號(hào)碼,獲取inode信息; 根據(jù)inode信息,看該用戶是否具有訪問(wèn)這個(gè)文件的權(quán)限:如果有,就指向相對(duì)應(yīng)的數(shù)據(jù)block,并讀取數(shù)據(jù)。
查看文件名對(duì)應(yīng)的inode號(hào)碼有兩種方式:
ls-i 文件名
stat 文件名
stat testfile 輸入命令
File:、 testfile
Size: 102 Blocks: 8 I0 Block: 4096 regular file
Device: 807h/2055d Inode: 1265161 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2014-08-13 14:07:20. 000000000 +0800
Modify: 2014-08-13 14:07: 07.000000000 +0800
Change: 2014-08-13 14:07 :07.000000000 +0800 ,
==該圖是用ls -i這個(gè)命令來(lái)來(lái)查看inode號(hào)。==

==該圖是用stat這個(gè)命令來(lái)查看文件的inode號(hào)。==
==該圖是ls -l命令,其用來(lái)查看文件的名稱。==

atime (accesstime) :
當(dāng)使用這個(gè)文件的時(shí)候就會(huì)更新這個(gè)時(shí)間。


==該圖就是atime實(shí)驗(yàn)的展示,圖中我對(duì)該文件進(jìn)行使用,該文件的時(shí)間就會(huì)進(jìn)行更新,如圖所示,圖一以及圖二的訪問(wèn)時(shí)間有所變化。==

mtime (modification time) :
當(dāng)修改文件的內(nèi)容數(shù)據(jù)的時(shí)候,就會(huì)更新這個(gè)時(shí)間,而更改權(quán)限或者屬性,mtime不會(huì)改變,這就是和ctime的區(qū)別。
==如圖所示就是mtime實(shí)驗(yàn)的內(nèi)容,在圖中我使用echo對(duì)這個(gè)文件內(nèi)容進(jìn)行了修改,其時(shí)間就會(huì)發(fā)生改變,如圖最近更改,以及最近改動(dòng)都發(fā)生了變化。==

ctime (status time):
當(dāng)修改文件的權(quán)限或者屬性的時(shí)候,就會(huì)更新這個(gè)時(shí)間,ctime并不是createtime,更像是changetime,
只有當(dāng)更新文件的屬性或者權(quán)限的時(shí)候才會(huì)更新這個(gè)時(shí)間,但是更改內(nèi)容的話是不會(huì)更新這個(gè)時(shí)間。
==該圖是ctime實(shí)驗(yàn)的展示,如圖我對(duì)這個(gè)文件的權(quán)限進(jìn)行了修改,其時(shí)間就會(huì)發(fā)生改變,如圖最近改動(dòng)這一欄發(fā)生了改變。==

inode也會(huì)消耗硬盤空間,所以格式化的時(shí)候,操作系統(tǒng)自動(dòng)將硬盤分成兩個(gè)區(qū)域。一個(gè)是數(shù)據(jù)區(qū),存放文件數(shù)據(jù);另一個(gè)是inode區(qū),存放inode 所包含的信息。每個(gè)inode 的大小,一般是128字節(jié)或256字節(jié)。
通常情況下不需要關(guān)注單個(gè)inode的大小,而是需要重點(diǎn)關(guān)注inode 總數(shù)。inode 的總數(shù)在格式化時(shí)就給定了,執(zhí)行“df -i"
命令即可查看每個(gè)硬盤分區(qū)對(duì)應(yīng)的的inode總數(shù)和已經(jīng)使用的inode數(shù)量。
==該圖是使用了df -i這個(gè)命令,來(lái)查看inode號(hào)的使用情況。==

由于inode 號(hào)碼與文件名分離,導(dǎo)致Linux系統(tǒng)具備以下幾種特有的現(xiàn)象:
1.文件名包含特殊字符,可能無(wú)法正常刪除。這時(shí)直接刪除inode,能夠起到刪除文件的作用:
2.移動(dòng)文件或重命名文件,只是改變文件名,不影響inode 號(hào)碼;
==在圖中我創(chuàng)建了一個(gè)以abc.txt命名的文件,然后我把這個(gè)文件移動(dòng),并且給他進(jìn)行了重命名為123.txt但是其inode號(hào)并未發(fā)生改變。==

3.打開(kāi)一個(gè)文件以后,系統(tǒng)就以inode 號(hào)碼來(lái)識(shí)別這個(gè)文件,不再考慮文件名。
4.使用vi編輯器修改文件數(shù)據(jù)保存后,會(huì)生成一個(gè)新的inode 號(hào)碼。

==在圖中我使用了vim編輯器對(duì)123.txt這個(gè)文件進(jìn)行了修改,然后用ll -i這個(gè)命令來(lái)進(jìn)行查看,發(fā)現(xiàn)它的inode號(hào)已經(jīng)發(fā)生了改變。==

刪除文件方法:

find ./ -inum 52305140 -exec rm -i {} /;
find ./ -inum 50464299 -delete

==該圖就是使用find命令加上inode號(hào)來(lái)對(duì)文件進(jìn)行刪除的兩種方法。==

inode的內(nèi)容

inode包含文件的元信息
不包含文件名
文件的字節(jié)數(shù)
文件擁有者的User ID
文件的Group ID
文件的讀、寫、執(zhí)行權(quán)限
文件的時(shí)間戳

..............................

用stat命令可以查看某個(gè)文件的inode信息
示例: stat aa.txt

inode的內(nèi)容

目錄文件的結(jié)構(gòu)

文件名1 ——————inode號(hào)碼1

文件名2 ————————inode號(hào)碼2

每一行稱為一個(gè)目錄項(xiàng)

目錄也是一種文件目錄文件的結(jié)構(gòu)
每個(gè)inode都有一個(gè)號(hào)碼,操作系統(tǒng)用inode號(hào)碼來(lái)識(shí)
別不同的文件
Linux系統(tǒng)內(nèi)部不使用文件名,而使用inode號(hào)碼來(lái)識(shí)
別文件
對(duì)于用戶,文件名只是inode號(hào)碼便于識(shí)別的別稱

inode的號(hào)碼

用戶通過(guò)文件名打開(kāi)文件時(shí),系統(tǒng)內(nèi)部的過(guò)程
1.系統(tǒng)找到這 個(gè)文件名對(duì)應(yīng)的inode號(hào)碼
2.通過(guò)inode號(hào)碼, 獲取inode信息
3.
根據(jù)inode信息,找到文件數(shù)據(jù)所在的block,讀出數(shù)據(jù)
查看inode號(hào)碼的方法
ls -i命令:查看文件名對(duì)應(yīng)的inode號(hào)碼
Is -i aa.txt
stat命令:查看文件inode信息中的inode號(hào)碼
stat aa.txt

硬盤的分區(qū)后的結(jié)構(gòu)

文件名————目錄項(xiàng)————目錄塊

元信息————inode————inode表區(qū)塊

數(shù)據(jù)—————block—————block數(shù)據(jù)區(qū)

block:八個(gè)扇區(qū)組成

inode的大小

inode也會(huì)消耗硬盤空間
每個(gè)inode的大小
一般是128字節(jié)或256寧節(jié)
格式化文件系統(tǒng)時(shí)確定inode的總數(shù)
使用df -i命令可以查看每個(gè)硬盤分區(qū)的inode總數(shù)和已
經(jīng)使用的數(shù)量

鏈接文件

為文件或目錄建立鏈接文件
鏈接文件分類

軟連接硬連接
刪除原始文件后失效仍舊可用
使用范圍適用于文件或目錄只可用于文件
保存位置與原始文件可以位于不同的文件系統(tǒng)中必須與原始文件在同一個(gè)文件系統(tǒng)(如一個(gè)linux分區(qū))內(nèi)

鏈接文件

為文件或目錄建立鏈接文件
鏈接文件分類
硬鏈接
In 源文件目標(biāo)位置
軟鏈接
In -s 源文件或目錄...鏈接文件或目標(biāo)位置

inode節(jié)點(diǎn)耗盡故障處理

使用fdisk創(chuàng)建分區(qū)/dev/sdb1,分區(qū)大小30M即可
fdisk /dev/ sdb
mkfs.ext4 /dev/sdb1
mkdir / test
mount /dev/sdb1 /創(chuàng)建的文件
df -i
模擬inode節(jié)點(diǎn)耗盡故障
for ((i=1; i<=7680; i++)) ;do touch /test/ file$i ; done
touch {1. . 7680} . txt
df -i
df -hT
刪除文件恢復(fù)
rm -rf /test/*
df -i
df -hT
==我們首先用fdisk -l這個(gè)命令,來(lái)對(duì)磁盤進(jìn)行一個(gè)查看。==

==然后我們對(duì)磁盤進(jìn)行分區(qū)的操作。==

==然后我們以ext4文件類型使用mkfs命令來(lái)進(jìn)行格式化。==
==圖中我進(jìn)行掛載,并且掛載到data目錄中。==

==然后我們使用for這個(gè)命令來(lái)模擬將inode號(hào)占滿的情況,該圖中就是data這個(gè)目錄的inode號(hào)。==
==如圖就是data這個(gè)目錄inode號(hào)被占滿的情況,如圖顯示,已經(jīng)100%進(jìn)行了使用。==

==如圖就是inode號(hào)被占滿,由于沒(méi)有了空間我們無(wú)法進(jìn)行創(chuàng)建文件的操作。==

==我們使用rm -rf*來(lái)進(jìn)行刪除后,便可以進(jìn)行創(chuàng)建文件的操作。==

EXT類型文件恢復(fù)

extundelete是一個(gè)開(kāi)源的Linux 數(shù)據(jù)恢復(fù)工具,支持ext3、 ext4文件 系統(tǒng)。(ext4 只能在centos6版本恢復(fù))
使用fdisk創(chuàng)建分區(qū)/dev/sdc1,格式化ext3文件系統(tǒng)
fdisk /dev/sdc
partprobe /dev/sdc
mkfs.ext3 /dev/ sdc1
mkdir /test
mount /dev/sdc1 /test
df -hT
安裝依賴包
yum -y install e2fsprogs-devel e2fsprogs-libs
編譯安裝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/local /extundelete && make && make install
ln -s / usr /local/extundelete/bin/ * /usr/bin/

模擬刪除并執(zhí)行恢復(fù)操作
cd /test
echo a>a
echo a>b
echo a>C
echo a>d
ls
extundelete /dev/sdc1 -- inode 2
查看文件系統(tǒng)/dev/sdc1下存在哪些文件,i節(jié)點(diǎn)是從2開(kāi)始的,2代表該文件系統(tǒng)最開(kāi)始的目錄。
rm-rf a b
extundelete /dev/sdc1 --inode 2
umount /test

cd ~

umount / test

extundelete /dev/sdc1 --restore-all
恢復(fù)/dev/sdc1文件系統(tǒng)下的所有內(nèi)容
在當(dāng)前目錄下會(huì)出現(xiàn)一 個(gè)RECOVERED FILES/目錄, 里面保存了已經(jīng)恢復(fù)的文件
ls RECOVERED
FILES/
==該圖我們依舊是對(duì)磁盤進(jìn)行一個(gè)創(chuàng)建分區(qū)的操作。==

==然后我們進(jìn)行格式化,以ext3文件名來(lái)進(jìn)行格式化。==

==然后便是進(jìn)行掛載的操作,圖中我創(chuàng)建了一個(gè)新的目錄,名字為data1。==
==然后我們對(duì)extundelete這個(gè)軟件包進(jìn)行編譯安裝。==
==然后我們進(jìn)行安裝依賴包的操作。==

==該圖是對(duì)extundlete這個(gè)軟件包進(jìn)行解壓的過(guò)程,我們可以使用tar命令來(lái)加上jxvf選項(xiàng)來(lái)進(jìn)行解壓。==

==該圖中我們是寫入一些內(nèi)容到這幾個(gè)文件當(dāng)中。==
==該圖我們是進(jìn)行了模擬刪除的操作,如圖要?jiǎng)h除a和b這兩個(gè)。==
==如圖所示,已經(jīng)進(jìn)行了刪除的操作,a,b已經(jīng)刪除完畢。==

==圖中是我們進(jìn)行解掛載的操作,然后我們?cè)谶M(jìn)行恢復(fù)數(shù)據(jù)的操作。==

案例:恢復(fù)XFS類型的文件

xfsdump命令格式
xfsdump -f 備份存放位置要備份的路徑或設(shè)備文件
xfsdump備份級(jí)別(默認(rèn)為0)
0: 完全備份
1-9: 增量備份
xfsdump常用選項(xiàng): -f、 -L、 -M、-s
xfsrestore命令格式
xfsrestore -f 恢復(fù)文件的位置存放恢復(fù)后文件的位置
模擬刪除并執(zhí)行恢復(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。
xfsdump的命令格式為:
xfsdump -f 備份存放位置 要備份的路徑或設(shè)備文件
xfsdump命令常用的選項(xiàng):
-f: 指定備份文件目錄
-L: 指定標(biāo)簽session label
-M: 指定設(shè)備標(biāo)簽media label
-s: 備份單個(gè)文件,-s后面不能直接跟路徑
xf sdump使用限制:

1.只能備份已掛載的文件系統(tǒng)
2.必須使用root的權(quán)限才能操作
3.只能備份XFS文件系統(tǒng)
4.備份后的數(shù)據(jù)只能讓xfsrestore解析
5.不能備份兩個(gè)具有相同UUID的文件系統(tǒng)(可用blkid命令 查看)

使用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/a

使用xfsdump 命令備份整個(gè)分區(qū)
rpm -qa| grep xfsdump
yum install -y xfsdump
xfsdump -f /opt/dump sdb1 /dev/sdb1 [-L dump sdb1 -M sdb1]
模擬數(shù)據(jù)丟失并使用xfsrestore 命令恢復(fù)文件
cd /data/
rm -rf ./*
ls
xfsrestore -f /opt/dump_ sdb1 /data/
==圖中我們依舊是對(duì)磁盤進(jìn)行創(chuàng)建分區(qū)的操作。==
==該圖我們已xfs文件類型來(lái)進(jìn)行格式化。==

==然后我們進(jìn)行掛載的操作。==

然后我們進(jìn)行復(fù)制一些文件以及目錄到我們創(chuàng)建的data2目錄當(dāng)中,我這里復(fù)制的是兩個(gè)文件。==

==我們使用xfsdump這個(gè)命令來(lái)對(duì)整個(gè)分區(qū)進(jìn)行備份的操作。==

==圖中我們來(lái)進(jìn)行模擬數(shù)據(jù)的丟失,我們使用rm -rf *來(lái)將data2里面的內(nèi)容都刪除。==
==我們使用xfsrestore這個(gè)命令來(lái)對(duì)我們刪除的文件進(jìn)行一個(gè)恢復(fù)。==

==如圖所示,丟失的文件以及完成了恢復(fù)。==

日志文件

日志的功能;
用于記錄系統(tǒng)、程序運(yùn)行中發(fā)生的各種事件
通過(guò)閱讀日志,有助于診斷和解決系統(tǒng)故障

日志文件的分類

內(nèi)核及系統(tǒng)日志
由系統(tǒng)服務(wù)rsyslog統(tǒng)一進(jìn)行管理, 日志格式基本相似
主配置文件/etc/rsyslog.conf
用戶日志.
記錄系統(tǒng)用戶登錄及退出系統(tǒng)的相關(guān)信息
程序日志

由各種應(yīng)用程序獨(dú)立管理的日志文件,記錄格式不統(tǒng)一

日志文件

日志保存位置

默認(rèn)位于: Ivar/log目錄下

主要日志文件介紹

內(nèi)核及公共消息日志
/var/log/messages
計(jì)劃任務(wù)日志
Ivar/log/cron
系統(tǒng)引導(dǎo)日志
/var/log/dmesg
郵件系統(tǒng)日志
==該圖是linux常用的兩種郵件的安裝包。==

/var/log/maillog
用戶登錄日志

Ivarlog/lastlog

/var/log/secure
/var/log/wtmp
/var/run/btmp

常見(jiàn)的一些 日志文件:
內(nèi)核及公共消息日志:
/var/log/messages:記錄Linux內(nèi) 核消息及各種應(yīng)用程序的公共日志信息,包括啟動(dòng)、I0錯(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)過(guò)程中的各種事件信息。
郵件系統(tǒng)日志:
/var/log/maillog: 記錄進(jìn)入或發(fā)出系統(tǒng)的電子郵件活動(dòng)。
用戶登錄日志:
/var/log/secure: 記錄用戶認(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)制格式

內(nèi)核及系統(tǒng)日志

由系統(tǒng)服務(wù)rsyslog統(tǒng)一管理

軟件包: rsys1og-7 .4.7-16.el7.x86_ 64
主要程序: /sbin/rsyslogd
配置文件: /etc/rsyslog.conf

vim /etc/ rsyslog. conf
查看rsyslog . conf配置文件,規(guī)則配置格式: [ 設(shè)備.級(jí)別
動(dòng)作]

. info;mail . none; authpriv . none; cron . none
/var/ 1og/messages
. info 表示info等級(jí)及以.上的所有等級(jí)的信息都寫到對(duì)應(yīng)的日志文件里
mail. none 表示某事件的信息不寫到日志文件里( 這里比如是郵件)

設(shè)備字段說(shuō)明:

auth 用戶認(rèn)證時(shí)產(chǎn)生的日志
authpriv ssh、ftp等登錄信息的驗(yàn)證信息
daemon 一些守護(hù)進(jìn)程產(chǎn)生的日志
ftp FTP產(chǎn)生的日志
lpr 打印相關(guān)活動(dòng)
mark rsyslog服務(wù)內(nèi)部的信息,時(shí)間標(biāo)識(shí);
news 網(wǎng)絡(luò)新聞傳輸協(xié)議(nntp)產(chǎn)生的消息。
syslog 系統(tǒng)日志
uucp Unix- -to-Unix Copy兩個(gè)unix之間的相關(guān)通信
console 針對(duì)系統(tǒng)控制臺(tái)的消息。
cron 執(zhí)行定時(shí)任務(wù)產(chǎn)生的日志。
kern 系統(tǒng)內(nèi)核日志
local0~loca17 自定義程序使用
mail 郵件日志
user 用戶進(jìn)程

Linux系統(tǒng)內(nèi)核日志消息的優(yōu)先級(jí)別( 數(shù)字等級(jí)越小,優(yōu)先級(jí)越高,消息越重要) :

0 EMERG(緊急):會(huì)導(dǎo)致主機(jī)系統(tǒng)不可用的情況。如系統(tǒng)崩潰

1 ALERT(警告):必須馬上采取措施解決的問(wèn)題。如數(shù)據(jù)庫(kù)被破壞

2 CRIT(嚴(yán)重):比較嚴(yán)重的情況。如硬盤錯(cuò)誤,可能會(huì)阻礙程序的部分功能
3 ERR (錯(cuò)誤) :運(yùn)行出現(xiàn)錯(cuò)誤。不是非常緊急,盡快修復(fù)的
4 WARNING (提醒) :可能影響系統(tǒng)功能,需要提醒用戶的重要事件。不是錯(cuò)誤,如磁盤用了85號(hào)等
5 NOTICE (注意) :不會(huì)影響正常功能,但是需要注意的事件。無(wú)需處理
6 INFO(信息):一般信息。正常的系統(tǒng)信息
7 DEBUG(調(diào)試):程序或系統(tǒng)調(diào)試信息等。包含詳細(xì)開(kāi)發(fā)的信息,調(diào)試程序時(shí)使用
none: 沒(méi)有優(yōu)先級(jí),不記錄任何日志消息。

舉例:

mail. info /var/log/maillog :比指定級(jí)別更高的日志級(jí)別,包括指定級(jí)別自身,保存到/var/1og/maillog中
mail.=info /var/log/maillog :明確指定日志級(jí)別為info,保存至/var/ log/maillog
mail. !info /var/log/maillog :除了指定的日志級(jí)別(info)所有日志級(jí)別信息,保存至/var/log/maillog
. info /var/1og/maillog :所有facility的info級(jí)別,保存至/var/1og/maillog
mail.
/var/1og/maillog : mai1的所有日志級(jí)別信息,都保存至/var/1og/maillog
mail. notice; news.info /var/log/maillog : mail的notice以 上記得日志級(jí)別和news的info以上的級(jí)別保存至/var/log/maillog
mail, news.crit -/var/log/maillog : mail和news的crit以上的日志級(jí)別保存/var/1og/maillog中: “-"代表異步模式

Jun 3 13:26:35:時(shí)間標(biāo)簽

localhost vmusr[2439]: [critical] [GL ib-GObject]

程序日志分析

由相應(yīng)的應(yīng)用程序獨(dú)立進(jìn)行管理
Web服務(wù): /var/log/httpd/
accesslog //記錄客戶訪問(wèn)事件
error
log //記錄錯(cuò)誤事件
代理服務(wù): /var/log/squid/
access.log、cache.log
分析工具
文本查看、grep過(guò)濾檢索、Webmin管理套件中查看
awk、sed等文本過(guò)濾、格式化編輯工具
Webalizer、Awstats等專用 日志分析工具

日志管理策略

及時(shí)作好備份和歸檔 :命令/腳本/+crontab/
延長(zhǎng)日志保存期限
控制日志訪問(wèn)權(quán)限
日志中可能會(huì)包含各類敏感信息,如賬戶、口令等
集中管理日志
將服務(wù)器的日志文件發(fā)到統(tǒng)一的日志文件服務(wù)器
便于日志信息的統(tǒng)一收集、整理和分析
杜絕日志信息的意外丟失、惡意篡改或刪除

配置日志服務(wù)器收集日志

rsyslog是一個(gè)C/S架構(gòu),可以通過(guò)套接字來(lái)進(jìn)行監(jiān)聽(tīng)記錄工作,可以基于TCP和UDP工作,默認(rèn)的監(jiān)聽(tīng)端口是514,只需要在MODULES打開(kāi)即可。
發(fā)送服務(wù)器: 客戶端192. 168.80.20
收集服務(wù)器: 服務(wù)端192. 168.80.30
//關(guān)閉服務(wù)端和客戶端防火墻、selinux
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
//修改客戶端配置文件,并啟動(dòng)服務(wù)
vim /etc/rsyslog. conf

MODULES

將下面四行前的注釋取消掉
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$ InputTCPServerRun 514

RULES

添加下列內(nèi)容
$template myFormat, "×tamp% %hostname% syslogseverity-text% %syslogtag% %msg號(hào)/n"
$ActionFileDefaultTemplate myFormat

*. info;mail . none; authpriv . none; cron. nonebr/>@@192.168.80.30:514
timestamp%: 時(shí)間戳
%fromhost-ip%:接收的信息來(lái)自于哪個(gè)節(jié)點(diǎn)的IP
%hostname% :主機(jī)名
%syslogseverity-text%:日志等級(jí)
%syslogtag% :服務(wù)進(jìn)程
br/>%msg%:日志內(nèi)容
接收方IP前面一個(gè)@表示TCP傳輸,兩個(gè)@表示UDP傳輸
systemctl restart rsyslog

//修改服務(wù)端配置文件,并啟動(dòng)服務(wù)
vim /etc/ rsyslog. conf
#將下面四行前的注釋取消掉
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$ InputTCPServerRun 514

#添加以下內(nèi)容
$AllowedSender tcp, 192.168.80.0/24
允許192. 168.80.0網(wǎng)段內(nèi)的主機(jī)以tcp協(xié)議來(lái)傳輸
$template Remote, "/data/log/ %fromhost- ip%/fromhost-ip%_ %$YEAR%- %$MONTH%-%$DAY%. log"
定義模板,接受日志文件路徑,區(qū)分了不同主機(jī)的日志
: fromhost-ip, ! isequal, "127.0.0.1" ?Remote
過(guò)濾掉server 本機(jī)的日志
systemctl restart rsyslog
//在服務(wù)端創(chuàng)建/data/log目錄,以接受大量日志信息,配置文件中的路徑應(yīng)當(dāng)與該路徑一致
mkdir -p /data/log

//驗(yàn)證
#客戶端的終端命令行輸入或者重啟-一個(gè)服務(wù).
logger "hello world"
#在服務(wù)端查看日志文件
tree /data/log/

journalctl 日志管理工具

日志管理工具journalctl是centos7上專有的日志管理工具,該工具是從message這 個(gè)文件里讀取信息。
Systemd統(tǒng)一管 理所有Unit的啟動(dòng)日志。帶來(lái)的好處就是,可以只用journalctl一個(gè)命令,查看所有日志(內(nèi)核日志和應(yīng)用日志)。
日志的配置文件是/etc/ systemd/ journald. conf
查看所有日志(默認(rèn)情況下,只保存本次啟動(dòng)的日志)
journalctl
journalctl -r ==-r表示倒序,從尾部看(推薦)==
查看內(nèi)核日志(不顯示應(yīng)用日志)
journalctl -k
查看系統(tǒng)本次啟動(dòng)的日志
journalctl -b [-0]
查看上一次啟動(dòng)的日志( 需更改設(shè)置,如上次系統(tǒng)崩潰,需要查看日志時(shí),就要看上一次的啟動(dòng)日志)
journalctl -b -1
顯示尾部指定行數(shù)的日志查看的是/var/1og/messages的日志,但是格式上有所調(diào)整,如主機(jī)名格式不一樣而已journalctl -n 20 [-f]
查看某個(gè)服務(wù)的日志
journalctl -u nginx.service [-f]

查看指定進(jìn)程的日志
journalctl_PID=1
查看指定用戶的日志
journalctl_UID=0 --since today

journalctl -xe
-x是目錄(catalog)的意思,在報(bào)錯(cuò)的信息下會(huì),附加解決問(wèn)題的網(wǎng)址
-e pager-end 從末尾開(kāi)始看