文章目錄
- 一、inode和block概述
- 1、檔案、扇區
- 2、塊(block)
- 3、檔案資料
- 4、inode(索引節點)
- 5、結論
- 二、模擬inode節點耗盡實驗
- 二、EXT型別檔案恢復
- 1、實驗環境:CentOS7
- 2、詳細圖解程序
- 三、xfs型別檔案修復
- 1、實驗環境:CentOS7
- 2、詳細圖解程序
一、inode和block概述
1、檔案、扇區
●檔案是存盤在硬碟上的,硬碟的最小存盤單位叫做“扇區”(sector),每個扇區存盤512位元組,
2、塊(block)
●一般連續八個扇區組成一個"塊"(block),一個塊是4K大小,是檔案存取的最小單位,檔案資料存盤在“塊”中,
3、檔案資料
●檔案資料包括實際資料與元資訊(類似檔案屬性),
●檔案資料存盤在“塊”中,檔案元資訊存盤在inode中,
4、inode(索引節點)
●inode不包含檔案名,檔案名是存放在目錄當中的,Linux 系統中一切皆檔案,因此目錄也是一種檔案,
●inode是存盤檔案元資訊(比如檔案的創建者、創建日期、檔案大小、檔案權限等)的區域,
5、結論
當用戶在Linux系統中試圖訪問一個檔案時,系統會先根據檔案名去查找它對應的inode號碼;通過inode號碼,獲取inode資訊;根據inode資訊,看該用戶是否具有訪問這個檔案的權限;如果有,就指向相對應的資料block,并讀取資料,
●查看檔案的inode資訊
ls -i 檔案
stat 檔案

二、模擬inode節點耗盡實驗
命令步驟:
fdisk /dev/sdb #管理磁盤
mkfs.xfs /dev/sdb1 #格式化磁盤
mkdir /sdb1 #創建/目錄下sdb1目錄,用于掛載
mount /dev/sdb1 /sdb1 #掛載
df -i #查詢可用inode號
模擬inode節點耗盡
for ((i=1;i<=7700;i++));do touch /sdb1$i;done;
詳細圖解:
1、關閉虛擬機,編輯虛擬機設定,添加新硬碟,這里我們隨便給20G,點擊下一步并確認,開啟虛擬機

2、查看磁盤串列

3、管理磁盤,創建磁盤,詳情請看下圖

4、進行掛載之前需先確定檔案系統型別,進行格式化,格式華為ext3

5、在根目錄下創建一個子目錄/sdb1用于掛載

6、查看掛載表,確認檔案系統型別更改成功

7、查看inode號

8、使用for回圈創建檔案,超出inode號范圍是否會無法創建

9、經過查看掛載表,發現已用容量僅561k,卻無法再創建檔案

若想再創建檔案,僅需將內部檔案洗掉,解除inode占用即可
得出結論:磁盤內可用inode號使用完后,即使磁盤還剩余空間也無法再創建檔案,
二、EXT型別檔案恢復
●extundelete 是一個開源的 Linux 資料恢復工具,支持 ext3、ext4檔案系統,(ext4只能在centos6版本恢復)
●下載網址:extundelete-0.2.4.tar.bz2
1、實驗環境:CentOS7
●命令步驟:
● 使用fdisk創建磁區/dev/sdb2,格式化ext3檔案系統
fdisk /dev/sdb
mkfs.ext3 /dev/sdb2
mkdir /sdb2
mount /dev/sdb2 /sdb2
yum -y install e2fsprogs-devel e2fsprogs-libs #安裝依賴包
cd /sdb2
拖入壓縮包
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 /sdb1
echo a>a
echo a>b
echo a>c
echo a>d
ls
●查看檔案系統/dev/sdb2下存在哪些檔案,i 節點是從 2 開始的,2 代表該檔案系統最開始的目錄,
extundelete /dev/sdb1 --inode 2
rm -rf a b
cd ~
umount /sdb2
extundelete /dev/sdb2 --restore-all 恢復/dev/sdb2檔案系統下的所有內容
在當前目錄下會出現一個RECOVERED_FILES/目錄,里面保存了已經恢復的檔案
ls RECOVERED_FILES
2、詳細圖解程序
我直接接著上面inode耗盡實驗做的,因為上面實驗僅耗費30M,不影響操作,也可以將上面磁區洗掉
1、管理磁盤sdb,創建磁區2,將剩余大小全部分配給磁區2,并partprobe重繪磁區


2、要記住,新磁盤要使用就得掛載,掛載就需要掛載點,要掛載的前提就是確定檔案系統型別,也就是格式化,不然你可以試一下,會報錯,前些天博客有示范

3、下載壓縮包,下載好后將壓縮包拖入Xshell中,在哪個目錄下執行的,壓縮包就在哪個目錄下


4、將壓縮包復制到/sdb2中并切換到/sdb2進行解壓縮,再切換進入extundelete目錄中將configure進行編譯安裝

5、創建軟鏈接,在/sdb2中創建檔案寫入內容,并查詢inode號


6、模擬洗掉,并使用工具恢復內容,恢復之前需解掛載,恢復的是磁盤內的內容


三、xfs型別檔案修復
●CentOS 7 系統默認采用 xfs型別的檔案,xfs 型別的檔案可使用 xfsdump 與 xfsrestore 工具進行備份恢復,
●xfsdump 命令常用的選項:
-f:指定備份檔案目錄
-L:指定標簽 session label
-M:指定設備標簽 media label
-s:備份單個檔案,-s 后面不能直接跟路徑
●xfsdump使用限制:
1.只能備份已掛載的檔案系統
2.必須使用root的權限才能操作
3.只能備份XFS檔案系統
4.備份后的資料只能讓xfsrestore決議
5.不能備份兩個具有相同UUID的檔案系統(可用 blkid命令查看)
1、實驗環境:CentOS7
●命令步驟:
使用fdisk創建磁區/dev/sdb1,格式化xfs檔案系統
fdisk /dev/sdb
partprobe /dev/sdb
mkfs.xfs /dev/sdb1
mkdir /sdb1
mount /dev/sdb1 /sdb1
cd /sdb1
cp /etc/passwd ./
mkdir test
touch test/a
使用 xfsdump 命令備份整個磁區
yum install -y xfsdump
xfsdump -f /opt/dump_sdb1 /dev/sdb1 -L dump_sdb1 -M sdb1
模擬資料丟失并使用 xfsrestore 命令恢復檔案
cd /sdb1
rm -rf ./*
xfsrestore -f /opt/dump_sdb1 /sdb1
2、詳細圖解程序
這里重新使用一臺虛擬機增加磁盤的步驟就省去了和上面一樣的給到20G,進來管理磁盤全部回車默認20G也全給到/dev/sdb1,我這邊就直接切入正題了
1、進行格式化,創建掛載點,磁盤掛載,進入掛載點,復制或創建一下目錄檔案用于實驗,詳情看下圖

2、檢查安裝xfsdump工具,一般系統默認安裝,若是沒有,使用rpm -qa | grep “xfsdump”,再使用yum -y install 進行安裝

3、接下來,進行備份,洗掉,恢復,詳情請看下圖決議

完成
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/231085.html
標籤:其他
上一篇:實驗七:Linux系統的行程管理
下一篇:物聯網通信方式
