1. 程式人生 > 實用技巧 >深入理解linux系統(block與inode的介紹)

深入理解linux系統(block與inode的介紹)

深入理解linux系統(block與inode的介紹)

文章目錄

1.inode與block詳解

1.inode和block概述

檔案資料包括元資訊與實際資料
檔案儲存在硬碟上,硬碟最小儲存單位是“扇區”,每個扇區儲存512位元組
block(塊)
	連續的八個扇區組成一個block
	是檔案存取的最小單位
inode (索引節點)
	中文譯名為:索引節點 ,也叫i節點
	用於儲存檔案元資訊
12345678

lock 的作用:用來存真正的資料內容
每個扇區的大小規定是512B,系統在讀取硬碟資料時,並不會一個個扇區去讀,而是一次性連續性讀取多個扇區,即一次性讀取一個快,這種多個扇區組成的塊,是檔案存取的最小單位,塊的大小,最常見的是4kb,即連續8個sector組成一個block

inode 的作用:用來存資料的元資訊的,所謂元資訊指的就是該資料的一些屬性,特性。
那我們的inode可以記錄的資訊有哪些?
可以是檔案許可權(rwx)的記錄,檔案的屬主,屬組,檔案大小,時間戳等,這種儲存檔案元資訊的區域就叫做 inode,中文譯名"索引節點”,也叫i節點,因此,一個檔案必須佔用一個inode,但至少佔用一個block
注:inode中並不包括檔名,其實檔名是存放在目錄當中的,linux系統中一切皆檔案,因此目錄也是一種檔案即檢視目錄中的檔案,cd轉目錄後通過ls列目錄裡可以檢視檔名,而我們每個inode都有一個號碼,系統用inode號碼識別不同的檔案,系統內部不使用檔名,而使用inode號碼來識別檔案。
1234567

2.inode的內容

inode包含檔案的元資訊
	檔案的位元組數
	檔案擁有著的USER ID(不包含檔名)
	檔案的GROUP ID
	檔案的讀,寫,執行許可權
	檔案的時間戳
用stat 明令可以檢視某個檔案的inode資訊
	示例: stat aa.txt
Linux系統檔案的三個主要的時間屬性
ctime(change time ) 改變
	最後一次改變檔案或目錄 (屬性)的時間
atime (access time)訪問
	最後一次訪問檔案或目錄的時間
mtime(modify time) 修改
	最後一次修改檔案或者目錄(內容)的時間)
目錄檔案的結構
	目錄檔案也是一種檔案
	目錄檔案的結構
每個inode都有一個號碼,作業系統用inode號碼來識別不同檔案
linux系統內部不使用檔名,而使用inode號碼來標識檔案
對於使用者,檔名只是inode號碼便於識別的別稱
123456789101112131415161718192021

3.inode的號碼

使用者通過檔名開啟檔案時,系統內部的過程(重要)
	系統找到這個檔名對應的inode號碼
	通過inode號碼,獲取inode獲取資訊
	根據inode資訊,找到檔案資料所在的block,讀出資料
檢視inode號碼的方法
12345

4.inode的大小

inode 也會消耗硬碟空間
	每個inode的大小
	一般是128位元組或256位元組
格式化檔案系統時確定inode的總數
使用df -i命令可以檢視每個硬碟分割槽的inode總數和已經使用的數量
12345

5.inode 的特殊作用

由於inode號碼與檔名分離,導致一些UNIX/LINUX系統具有以下現象
	當檔名包含特殊字元,可能無法正常刪除檔案,直接刪除inode,也可以刪除檔案
	移動或重新命名檔案時,只改變檔名,不影響inode號碼
	開啟一個檔案後,系統通過inode號碼來識別該檔案,不再考慮檔名
1234

6.如何刪除亂碼檔案

 方法一:
 touch a.txt
 ls -i a.txt
 145326742727878 a.txt
 find . -inum 145326742727878 -exec rm -i {} \;
 解釋:意思就是find找到內容作為後面rm刪除物件
 
 方法二:
 ls -i at.txt
 10663364 at.txt
 find . -inum 100663364 | xargs rm -f //xargs這個引數就是強力的意思,如 果前面的輸出結果包含空格或製表符也會被強力執行)
1234567891011

2.inode耗盡故障處理

過程:
正常對一塊磁碟分割槽,格式化,掛載(此處是實驗所以儘量將分割槽設定的小一點)
df -i / 掛載點 檢視該掛載點的inode點的可用數量
vi 一個shell檔案,具體內容如下:
    vi kill.sh
    #! /bin/bash
    i=l
    while [ i
    let i++
    done
然後df -i 查詢下inode可用數量還有沒有
確認inode數量沒有後,再touch一個新檔案,看看是什麼結果
123456789101112

3.恢復誤刪除檔案

1.編譯安裝extundelete(6.5上做)

在安裝前需要先安裝兩個依賴包

2.模擬刪除並執行恢復操作

案例1:恢復XFS型別的檔案
xfsdump 命令格式
xfsdump -f 備份存放位置 要備份的路徑或裝置檔案
xfsdump備份級別 (預設為0)
0 :完全備份
1-9 : 增量備份
xfsdump 常用選項 : -f , -L -M , -s
1234567
選項 功能
-f 指定備份檔案目錄
-L 指定標籤 session label
-M 指定裝置標籤media label
-s 備份單個檔案,-s後面不能直接跟路徑

xfsrestore命令格式

xfsrestore -f 恢復檔案的位置 存放恢復後文件的位置
1

模擬刪除並執行恢復操作

注: extundelete 工具可以恢復 EXT 型別檔案,無法恢復CentOS 7 系統預設採用xfs類別的檔案,針對xfs檔案系統目前也沒有比較成熟的檔案恢復工具,所以建議提前做好資料備份,以避免資料丟失xfs 型別的檔案可使用xfsdump 與 xfsrestore 工具進行備份恢復,若系統中未安裝xfsdump與xfsrestore工具,可以通過yum install -y xfsdump 命令安裝。xfsdump 按照inode順序備份一個xfs檔案系統。xfsdump 的備份級別有兩種:0 表示完全備份;1-9表示增量備份,xfsdump 的備份級別預設為0 ,xfsdump的命令格式為 : xfsdump -f 備份存放位置

加註

xfsrestore:Restore Status:SUCCESS

【#】ls /data/

passwd test

使用 xfsdump時,需要注意以下的幾個限制:

xfsdump 不支援沒有掛載的檔案系統備份,所以只能備份已經掛載的;

xfsdump 必須使用root的許可權才能操作(涉及檔案系統的關係);

xfsdump:只能備份XFS檔案系統

xfsdump 備份下來的資料(檔案或儲存媒體)只能讓xfsrestore解析;

xfsdump 是透過檔案系統的uuid來分辨各個備份檔的,因此不能備份兩個具有相同

UUID的檔案系統

案例2:恢復EXT型別的檔案 (用cp)

拷貝的命令:cp /root/RECOVERED_FILES/{a,b,c} /data

備份德明令:extundelete /dev/sdb1 -o /opt/back

編譯安裝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

模擬刪除並執行恢復操作

extundelete 需要額外的去裝,而xfsdump預設系統自帶
extundelete 恢復時候需要解掛載,而xfsdump需要掛載點線上時使用
xfsdump 使用時必須時root賬戶才能使用
extundelete 只能恢復檔案系統格式是ext格式的檔案(必須是centos6)
xfsdump只能恢復檔案系統格式的xfs的檔案(centos7預設是xfs檔案系統格式)
12345

4.分析日誌檔案

日誌的功能
	用於記錄系統,程式執行中發生的各種事件
	通過閱讀日誌,有助於診斷和解決系統故障
日誌儲存位置
	預設位於:/var/log目錄下
12345

主要日誌檔案介紹

核心及公共訊息日誌 /var/log/messages
計劃任務日誌 /var/log/cron
系統引導日誌 /var/log/dmesg
郵件系統日誌 /var/log/maillog
使用者登入日誌 /var/log/lastlog,/var/log/secure,/var/log/wtmp,/var/run/btmp

1.日誌檔案的分類

核心及系統日誌

由系統服務rsyslog統一管理進行,日誌格式基本相似

日誌記錄的一般格式:

時間標籤,主機名,子系統名,訊息欄位

使用者日誌

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

2.日誌檔案分析

日誌訊息級別

級號 訊息 級別 說明
0 EMERG 緊急 會導致主機系統不可用的情況
1 ALERT 警告 必須馬上採取措施解決問題
2 CRIT 嚴重 比較嚴重的情況
3 ERR 錯誤 執行出現錯誤
4 WARNING 提醒 可能會影響系統功能的事件
5 NOTICE 注意 不會影響系統但值得注意
6 INFO 資訊 一般資訊
7 DEBUG 除錯 程式或系統除錯資訊

3.使用者日誌分析

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

功能 位置
記錄linux核心訊息及各種應用程式的公共日誌資訊 /var/log/message
記錄crond計劃任務產生的事件資訊 /var/log/cron
記錄linux系統在引導過程中的各種事件資訊 /var/log/dmesg
記錄進入或發出系統的電子郵件活動 /var/log/maillog
記錄每個使用者認證相關的安全事件資訊 /var/log/secure
記錄每個使用者登入,登出及系統啟動和停機事件 /var/log/wtmp
記錄失敗的,錯誤的登入嘗試及驗證事件 /var/log/btmp
記錄每個使用者最近登入的事件 /var/log/lastlog
分析工具
	users, who, w, last, lastab
查詢使用者登入的歷史記錄
	last 檢視成功登入到系統的使用者記錄
	lastb檢視登入失敗的使用者記錄
12345

程式日誌分析

由相應的應用程式梳理進行管理
web服務:/var/log/httpd/
	access_log,error_log
代理服務:/var/log/squid/
	access.log, cache.log,
FTP服務 : /var/log/xferlog
分析工具
	文字檢視,grep過濾檢索,webmin管理套件中檢視
	awk,sed等文字過濾,格式化編輯工具
	Webalizer, Awststs等專用日誌分析工具
12345678910

4.日誌管理策略

及時做好備份和歸檔
延長日誌儲存期限
控制日誌訪問許可權
	日誌中可能會包含各類敏感資訊,如賬戶,口令等
集中管理日誌
	將伺服器的日誌檔案發到統一的日誌檔案伺服器
	便於日誌資訊的統一收集,整理和分析
	杜絕日誌資訊的意外丟失,惡意篡改或刪除