1. 程式人生 > 其它 >深入理解Linux檔案系統與日誌檔案

深入理解Linux檔案系統與日誌檔案

目錄:

一、inode與block

二、inode內容

三、inode的號碼

四、inode的大小

五、連結檔案

六、inode節點耗盡故障處理

七、恢復EXT型別的檔案編譯安裝extundelete軟體包

八、xfs型別檔案的備份和恢復

九、日誌檔案

十、核心及系統日誌

十一、使用者日誌檔案

十二、程式日誌分析

十三、日誌管理策略

一、inode與block

inode和block概述

檔案資料包括元資訊與實際資料

檔案儲存在硬碟上,硬碟最小儲存單位是"扇區",每個扇區儲存512位元組

block(塊

  • 連續的八個扇區組成一個 block(4K)
  • 是檔案存取的最小單位

inode (索引節點)

  • 中文譯名為"索引節點",也叫i節點
  • 用於儲存檔案元資訊

知識拓展

檔案是儲存在硬碟上的,硬碟的最小儲存單位叫做"扇區"(sector),每個扇區儲存512位元組。

一般連續八個扇區組成一個"塊"(block),一個塊是4K大小,是檔案存取的最小單位。作業系統讀取硬碟的時候,是一次性連續讀取多個扇區,即一個塊一個塊的讀取的。

檔案資料包括實際資料與元資訊(類似檔案屬性)。檔案資料儲存在"塊"中,儲存檔案元資訊(比如檔案的建立者、建立日期、檔案大小、檔案許可權等)的區域就叫做inode。因此,一個檔案必須佔用一個 inode,並且至少佔用一個 block。 inode不包含檔名。檔名是存放在目錄當中的。Linux 系統中一切皆檔案,因此目錄也是一種檔案。

每個inode都有一個號碼,作業系統用inode號碼來識別不同的檔案。Linux系統內部不使用檔名,而使用inode號碼來識別檔案。對於系統來說,檔名只是inode號碼便於識別的別稱,檔名和inode號碼是一一對應關係,每個inode號碼對應一個檔名。

所以,當用戶在Linux系統中試圖訪問一個檔案時,系統會先根據檔名去查詢它對應的inode號碼; 通過inode號碼,獲取inode資訊; 根據inode資訊,看該使用者是否具有訪問這個檔案的許可權;如果有,就指向相對應的資料block,並讀取資料。

注:一個檔案必須佔用一個inode,但至少也佔用一個block

二、inode的內容

1)inode包含檔案的元資訊

  • 檔案的位元組數
  • 檔案擁有者的User ID
  • 檔案的Group ID
  • 檔案的讀、寫、執行許可權
  • 檔案的時間戳

2)用命令可以檢視某個檔案的inode資訊

兩種方法
ls -i   檔名

stat   檔名

3)Linux系統檔案三個主要的時間屬性

atime (accesstime):

當使用這個檔案的時候就會更新這個時間。

mtime (modification time) :

當修改檔案的內容資料的時候,就會更新這個時間,而更改許可權或者屬性,mtime不會改變,這就是和ctime的區別。

ctime (status time) :

當修改檔案的許可權或者屬性的時候,就會更新這個時間,ctime並不是create time,更像是change time,只有當更新檔案的屬性或者許可權的時候才會更新這個時間,但是更改內容的話是不會更新這個時間。

4)目錄檔案的結構

  • 目錄也是一種檔案
  • 目錄檔案的結構

每個inode都有一個號碼,作業系統用inode號碼來識別不同的檔案

Linux系統內部不使用檔名,而使用inode號碼來識別檔案

對於使用者,檔名只是inode號碼便於識別的別稱

三、inode的號碼

1、使用者通過檔名開啟檔案時,系統內部的過程

  1. 系統找到這個檔名對應的inode號碼
  2. 通過inode號碼,獲取inode資訊
  3. 根據inode資訊,找到檔案資料所在的block,讀出資料

2、硬碟分割槽後的結構

3、 訪問檔案的簡單流程

四、inode的大小

1、inode也會消耗硬碟空間

  • 每個inode的大小
  • 一般是128位元組或256位元組

格式化檔案系統時確定inode的總數

使用df -i命令可以檢視每個硬碟分割槽的inode總數和已經使用的數量

inode也會消耗硬器空間,所以格式化的時候,作業系統白動將礦盤分成兩個區域。一個是資料,存放檔案資料;另一個是 inode區,存放 inode 所包含的資訊。每個 inode 的大小,一般是 128 位元組或 256 位元組。

通常情況下不需要關注單個 inode 的大小,而是需要重點關注 inode 總數。inode 的總數在格式化時就給定了,執行 "df-i"命令即可檢視每個硬碟分割槽對應的的 inodo 總數和已經使用的inode 數量。

2、由於 inode 號碼與檔名分離,導致Linux 系統具備以下幾種特有的現象∶

1.檔名包含特殊字元,可能無法正常刪除。這時直接刪除 inode,能夠起到刪除檔案的作用;

2.移動檔案或重新命名檔案,只是改變檔名,不影響 inode 號碼;

3.開啟一個檔案以後,系統就以 inode 號碼來識別這個檔案,不再考慮檔名。

4.檔案資料被修改儲存後,會生成一個新的 inode 號碼。

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

注:如果你移動到掛載目錄下,會發現inode號也會改變

五、連結檔案

為檔案或目錄建立連結檔案

連結檔案分類

標記文字
In 原始檔 目標位置

軟連結
In 【-s】原始檔或目錄…連結檔案或目標位置

六、inode節點耗盡故障處理

#使用fdisk建立分割槽/dev/sdb1,分割槽大小30M即可
fdisk /dev/ sdb .
mkfs.ext4 /dev/ sdb1
mkdir /test
mount /dev/sdb1 /mnt
df -i

#模擬inode節點耗盡故障
for ( (i=1; i<=7680; i++) ) 
>do 
>touch /test/ file$i
>done
touch {1. . 7680} . txt

df -i
df -hT

#刪除檔案恢復
rm -rf /test/ *
df -i
df -hT

舉例

七、恢復EXT型別的檔案編譯安裝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
#使用fdisk建立分割槽/dev/sdc1,格式化ext3檔案系統
fdisk /dev/sdb
partprobe /dev/sdb
mkfs.ext3 /dev/ sdb1
mkdir /mnt
mount /dev/sdb1 /mnt
df -hT

#安裝依賴包
yum -y install e2fsprogs-devel e2 fsprogs-l ibs

#編譯安裝extundelete
cd /opt
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/

模擬刪除並執行恢復操作

cd /mnt
echo a>a
echo a>b
echo a>C .
echo a>d
ls

extundelete /dev/sdb1 --inode 2 
#檢視檔案系統/dev/sdc1下存在哪些檔案,i節點是從2開始的,2代表該檔案系統最開始的目錄

rm-rf a b
extundelete /dev/sdc1 -- inode 2
cd ~
umount /mnt
extundelete /dev/sdc1 --restore-all
#恢復/dev/sdc1檔案系統下的所有內容

#在當前目錄下會出現一-個RECOVERED_ FILES/目錄,裡面儲存了已經恢復的檔案
ls RECOVERED_FILES/

舉例

八、xfs 型別檔案備份和恢復

Centos 7 系統預設採用 xfs型別的檔案,xfs 型別的檔案可使用 xfsdump 與 xfsrestore 工具進行備份恢復,區xfsdump 的備份級別有兩種∶ 0 表示完全備份; 1-9 表示增量備份。xfsdump 的備份級別預設為 0。

xfsdump 的命令格式為∶

xfsdump -f 備份存放位置 要備份的路徑或裝置檔案

xfsdump 命令常用的選項∶-f∶指定備份檔案目錄

-L∶指定標籤 session label

-M∶ 指定裝置標籤 media labe1

-s∶備份單個檔案,-s 後面不能直接跟路徑

xfsdump使用限制∶

1.只能備份已掛載的檔案系統

2.必須使用root的許可權才能操作

3.只能備份XFS檔案系統

4.備份後的資料只能讓xfsrestore解析

5.不能備份兩個具有相同UUID的檔案系統 (可用 blkid命令檢視)

#使用fdisk建立分割槽/dev/sdb1,格式化xfs檔案系統
fdisk /dev/ sdb
partprobe /dev/ sdb
mkfs.xfs [-f] /dev/ sdb1
mkdir /data
mount /dev/ sdb1 /data/
cd /data
cp /etc/passwd ./
mkdi rtest
touch test/a

#使用xfsdump 命令備份整個分割槽
rpm -qa| grep xfsdump
yum install -y xfsdump
xfsdump -f /opt/dump_sdb1 /dev/sdb1 [-L dump sdb1 -M sdb1 ]

#模擬資料丟失並使用 x fsrestore 命令恢復檔案
cd /data/
rm -rf ./*
ls

xfsrestore -f /opt/dump_ sdb1 /data/

舉例

九、日誌檔案

1、日誌的功能

  • 用於記錄系統、程式執行中發生的各種事件
  • 通過閱讀日誌,有助於診斷和解決系統故障

2、日誌檔案的分類

核心及系統日誌

  • 由系統服務rsyslog統一進行管理,日誌格式基本相似
  • 主配置檔案/etc/rsyslog.conf

使用者日誌

  • 記錄系統使用者登入及退出系統的相關資訊

程式日誌

3、日誌儲存位置

●預設位於∶/var/log目錄下

主要日誌檔案介紹
核心及公共訊息日誌
/var/log/messages
記錄Linux核心訊息及各種應用程式的公共日誌資訊,包括啟動、Io錯誤、網路錯誤、程式故障等 對於未使用獨立日誌檔案的應用程式或服務,一般都可以從該日誌檔案中獲得相關的事件記錄資訊 計劃任務日誌
/var/log/cron
記錄crond計劃任務產生的事件資訊 系統引導日誌
/var/log/dmesg
記錄Linux系統在引導過程中的各種事件資訊 郵件系統日誌
/var/log/maillog
記錄進入或發出系統的電子郵件活動 使用者登入日誌
/var /log/lastlog
記錄每個使用者最近的登入事件,二進位制格式 /var/log/secure
記錄使用者認證相關的安全事件資訊 /var/log/wtmp
記錄每個使用者登入、登出及系統啟動和停機事件,二進位制格式 /var/run/btmp
記錄失敗的、錯誤的登入嘗試及驗證事件,二進位制格式

十、核心及系統日誌

1、由系統服務 rsyslog 統一管理

  • 軟體包∶rsyslog-7.4.7-16.el7.x86_64
  • 主要程式∶ /sbin/rsyslogd
  • 配置檔案∶ /etc/rsyslog.conf

2、日誌訊息的級別

注:數字等級越小,優先順序越高,訊息越重要

日誌記錄的一般格式

時間標籤: 訊息發出的日期和時間

主機名:生成訊息的計算機的名稱

子系統名稱: 發出訊息的應用程式的名稱

訊息: 訊息的具體內容

十一、使用者日誌分析

1、儲存了使用者登入、退出系統等相關資訊

  • /var/log/lastlog∶ 最近的使用者登入事件
  • /var/log/wtmp∶ 使用者登入、登出及系統開、關機事件
  • /var/run/utmp∶ 當前登入的每個使用者的詳細資訊
  • /var/log/secure: 與使用者驗證相關的安全性事件

2、分析工具

  • users、who、w、last、lastb
  • last 命令用於查詢成功登入到系統的使用者記錄
  • lastb 命令用於查詢登入失敗的使用者記錄

十二、程式日誌分析

1、由相應的應用程式獨立進行管理

Web服務∶ /var/log/httpd/

  • access_log //記錄客戶訪問事件
  • error_log //記錄錯誤事件

代理服務∶ /var/og/squid/

  • access.log、cache.log

2、分析工具

  • 文字檢視、grep過濾檢索、Webmin管理套件中檢視
  • awk、sed等文字過濾、格式化編輯工具
  • Webalizer、Awstats等專用日誌分析工具

十三、日誌管理策略

1、及時作好備份和歸檔

2、延長日誌儲存期限

3、控制日誌訪問許可權

  • 日誌中可能會包含各類敏感資訊,如賬戶、口令等

4、集中管理日誌

  • 將伺服器的日誌檔案發到統一的日誌檔案伺服器
  • 便於日誌資訊的統一收集、整理和分析
  • 杜絕日誌資訊的意外丟失、惡意篡改或刪除

總結

1、 block與inode

2、 硬連結與軟連結

3、恢復誤刪除的檔案

4、 Linux主要包含的日誌檔案

5、 Linux系統的日誌訊息級別

6、 Linux系統中使用者日誌的查詢命令

(who、W、users、 last、 lastb)