目錄
- 一、檔案系統
- 扇區:
- 塊(block):
- 檔案資料:
- inode(索引節點):
- 用戶在Linux系統訪問一個檔案的程序
- 二、inode節點耗盡故障處理
- 準備作業
- 模擬故障
- 解決故障
- 三、EXT型別檔案恢復
- 使用fdisk創建磁區/dev/sdc1
- 安裝依賴包
- 模擬洗掉并執行恢復操作
- 四、xfs 型別檔案備份和恢復
- xfsdump 命令常用的選項:
- xfsdump使用限制:
- 步驟
- 五、系統日志
一、檔案系統
檔案是存盤在硬碟上的,硬碟的最小存盤單位是“扇區”,連續的八個扇區組成一個“塊”,
扇區:
每個扇區存盤512位元組
塊(block):
一般連續八個扇區組成一個“塊”,一個塊4k的大小,是檔案存取的最小單位,檔案資料存盤在塊中,
作業系統讀取硬碟的時候,是一次性連續讀取多個扇區,即一個塊一個塊的讀取的,
檔案資料:
檔案資料包括實際資料與元資訊,
檔案資料存盤在“塊”(block)中,檔案元資訊存盤在inode中,

inode(索引節點):
inode不包含檔案名,檔案名是存放在目錄當中的,Linux 系統中一切皆檔案,因此目錄也是一種檔案,
inode是存盤檔案元資訊(比如檔案的創建者、創建日期、檔案大小、檔案權限等)的區域,
查看檔案名對應的inode號
ls -i 檔案名
stat 檔案名

inode也會消耗硬碟空間,所以格式化的時候,作業系統自動將硬碟分成兩個區域,一個是資料區,存放檔案資料;另一個是 inode 區,存放 inode 所包含的資訊,每個 inode 的大小,一般是 128 位元組或 256 位元組,
通常情況下不需要關注單個 inode 的大小,而是需要重點關注 inode 總數,inode 的總數在格式化時就給定了,執行 “df -i”命令即可查看每個硬碟磁區對應的的 inode 總數和已經使用的inode 數量,

用戶在Linux系統訪問一個檔案的程序
系統會先根據檔案名去查找它對應的inode號碼;通過inode號碼,獲取inode資訊;根據inode資訊,看該用戶是否具有訪問這個檔案的權限;如果有,就指向相對應的資料block,并讀取資料,
二、inode節點耗盡故障處理
準備作業
#使用fdisk創建磁區/dev/sdb1,磁區大小30M即可
fdisk /dev/sdb
mkfs.ext3 /dev/sdb1
mkdir /sdb1 #根上建一個子目錄用于掛載
mount /dev/sdb1 /sdb1
df -i




模擬故障
#模擬inode節點耗盡故障
for ((i=1; i<=7700; i++));do touch /sdb1/file$i;done;
df -i
df -hT

只用561k但是inode號已經用光


若想再創建檔案,僅需將內部檔案洗掉,解除inode占用即可
解決故障
#洗掉檔案恢復
rm -rf /test/*
df -i
df -hT

三、EXT型別檔案恢復
注:extundelete 是一個開源的 Linux 資料恢復工具,支持 ext3、ext4檔案系統,(ext4只能在centos6版本恢復)
使用fdisk創建磁區/dev/sdc1
#使用fdisk創建磁區/dev/sdc1,格式化ext3檔案系統
fdisk /dev/sdb
mkfs.ext3 /dev/sdb1
mkdir /sdb1
mount /dev/sdb1 /sdb1
df -hT

安裝依賴包
#安裝依賴包
yum -y install e2fsprogs-devel e2fsprogs-libs
#編譯安裝 extundelete
cd /sdb1
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 /sdb1
echo a>a
echo a>b
echo a>c
echo a>d
ls
extundelete /dev/sdb1 --inode 2 #查看檔案系統/dev/sdb1下存在哪些檔案,i 節點是從 2 開始的,2 代表該檔案系統最開始的目錄,


rm -rf a b
extundelete /dev/sdb1 --inode 2
cd ~
umount /sdb1
extundelete /dev/sdb1 --restore-all #恢復/dev/sdc1 檔案系統下的所有內容
#在當前目錄下會出現一個RECOVERED_FILES/目錄,里面保存了已經恢復的檔案
ls RECOVERED_FILES/



四、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、使用fdisk創建磁區/dev/sdb1,格式化xfs檔案系統
fdisk /dev/sdb
partprobe /dev/sdb #重讀磁區表,磁盤查詢不到時使用
mkfs.xfs [-f] /dev/sdb1
mkdir /sdb1
mount /dev/sdb1 /sdb1/
cd /sdb1
cp /etc/passwd ./
mkdir pw
touch pw/pw.txt



2、使用 xfsdump 命令備份整個磁區
rpm -qa | grep xfsdump
yum install -y xfsdump
xfsdump -f /opt/dump_sdb1 /dev/sdb1 [-L dump_sdb1 -M sdb1]
沒有就yum裝
xfsdump -f /opt/dump_sdb1 /dev/sdb1 [-L dump_sdb1 -M sdb1]
是將/dev/sdb1中的檔案備份到/opt/dump_sdb1檔案中,-L后面是檔案名,-M后面是設備名,

3、模擬資料丟失并使用 xfsrestore 命令恢復檔案
cd /sdb1/
rm -rf ./*
ls
xfsrestore -f /opt/dump_sdb1 /sdb1/


五、系統日志
常見的一些日志檔案:
#內核及公共訊息日志:
/var/log/messages:記錄Linux內核訊息及各種應用程式的公共日志資訊,包括啟動、IO錯誤、網路錯誤、程式故障等,對于未使用獨立日志檔案的應用程式或服務,一般都可以從該日志檔案中獲得相關的事件記錄資訊,
#計劃任務日志:
/var/log/cron:記錄crond計劃任務產生的事件資訊,
#系統引導日志:
/var/log/dmesg:記錄Linux系統在引導程序中的各種事件資訊,
#郵件系統日志:
/var/log/maillog:記錄進入或發出系統的電子郵件活動,
#用戶登錄日志:
/var/log/secure:記錄用戶認證相關的安全事件資訊,
/var/log/lastlog:記錄每個用戶最近的登錄事件,二進制格式
/var/log/wtmp:記錄每個用戶登錄、注銷及系統啟動和停機事件,二進制格式
/var/run/btmp:記錄失敗的、錯誤的登錄嘗試及驗證事件,二進制格式
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/233587.html
標籤:其他
