inode節點與文件恢復
阿新 • • 發佈:2018-06-29
找到 pty sda 磁盤 半徑 fdisk tun 塊大小 std 一、inode和block
1.塊→block
硬盤劃分為磁頭(Heads)、柱面(Cylinder)、扇區(Sector)。 磁頭(Heads):每張磁片的正反兩面各有一個磁頭,一個磁頭對應一張磁片的一個面。因此,用第幾磁頭就可以 表示數據在哪個磁面。 柱面(Cylinder):所有磁片中半徑相同的同心磁道構成“柱面",意思是這一系列的磁道垂直疊在一起,就形成一 個柱面的形狀。簡單地理解,柱面就是磁道。 扇區(Sector):將磁道劃分為若幹個小的區段,就是扇區。雖然很小,但實際是一個扇子的形狀,故稱為扇區。 每個扇區的容量為512字節,是硬盤最小的存儲單位。 塊(Block)是系統讀取單位,一個塊大小為4KB,由8個扇區組成
存儲容量=磁頭數×柱面數×扇區數×每扇區字節數
2.元信息→inode(一個文件/目錄占用一個)
註:當磁盤有剩余空間,但inode用盡時,不能存儲任何內容
inode內容
(1)文件大小
(2)文件所有者
(3)文件所有組
(4)文件權限
(5)文件創建時間
查看inode
stat 文件 //查看指定文件的inode信息;ls -i 文件也可簡單查看文件對應inode號 df -i //查看硬盤所有的inode號,已使用inode等信息 ls -i 文件 //查看指定文件的inode號 ls -id 目錄 //查看指定目錄的inode號 dumpe2fs -h 分區 | grep -i "Inode size" //查看指定磁盤分區inode號占用大小
find / -type f -empty //搜索系統中所有為空的文件
數據讀取流程
(1)系統通過文件找到inode號
(2)通過inode,尋找inode信息
(3)根據inode信息,找到文件所對應的block位置,讀取數據
註:一個文件的inode號一般不用更改,只有當刪除文件時會釋放
i節點耗盡
df -i //查看硬盤IFree的inode剩余情況
rm -rf 文件 //刪除硬盤下文件,會自動釋放inode號
案例:測試i節點耗盡
(1)新增1G硬盤分區並掛載
fdisk /dev/sdb --> n --> p --> 1 --> 回車 --> 回車 --> w mkfs -t ext4 /dev/sdb1 mkdir /data mount /dev/sdb1 /data/
(2)模擬故障
df -i /dev/sdb1
touch /data/{1..65269}
(3)測試
touch /data/ab //報錯,磁盤空間不足
rm -rf /data/1
touch /data/ab //可正常創建
touch /data/ac //報錯
二、硬鏈接與軟鏈接
1.硬鏈接
ln 源文件 目標文件
特點:
a.對其中一個內容修改,其余全部同步
b.當刪除其中一個文件時,不影響其余文件
c.鏈接的大小為源文件大小
d.只支持鏈接文件
2.軟鏈接
ln -s 源文件 目標文件
特點:
a.對其中一個內容修改,其余全部同步
b.當刪除源文件/目錄時,目標文件/目錄不能使用
c.目標/文件不占用空間
d.可鏈接文件/目錄
三、案例:恢復誤刪除文件,恢復誤刪除分區
針對ext4文件系統(debugfs、ext3grep、extundelete);testdisk可恢復分區表
1.安裝依賴包
yum -y install e2fsprogs-*
2.上傳extundelete軟件包,並編譯安裝
tar -jxvf extundelete-0.2.4.tar.bz2
cd ~/extundelete-0.2.4/
./configure --prefix=/usr/local/ex && make && make install
cd /usr/local/ex/bin
3.使用
touch /data/11111
mkdir /data/aa/
rm -rf /data/11111 //刪除文件,測試
./extundelete /dev/sdb1 --restore-all //恢復磁盤被刪除內容
ls RECOVERED_FILES/ //查看恢復目錄下是否有恢復完成的文件
./extundelete /dev/sdb1 --restore-file=11111 //只恢復名為11111的文件
./extundelete /dev/sdb1 --restore-inode=12 //只恢復inode為12的文件
./extundelete /dev/sdb1 --restore-directory=aa //只恢復aa目錄及其下所有文件內容
./extundelete /dev/sdb1 --inode=2 //查看/dev/sdb1所有被誤刪除的文件名及inode號
4.testdisk恢復分區表
tar -jxvf testdisk-7.1-WIP.linux26-x86_64.tar.bz2 //解壓testdisk軟件包
mv testdisk-7.1-WIP /data/ //移動到別的硬盤中
dd if=/dev/zero of=/dev/sda bs=512 count=1 //模擬磁盤MBR引導損壞
reboot //重啟,無法進入系統
放入光盤,進入恢復模式
mkdir /a && mount /dev/sdb1 /a //新建目錄/a,並掛載磁盤/dev/sdb1到/a
/a/testdisk-7.1-WIP/testdisk_static /dev/sda --> Proceed(選擇需恢復的磁盤)-->intel(選擇磁盤分區類型)-->Analyse(分析磁盤分區情況)-->Write(回車,將搜索到的分區表寫入到磁盤中)-->y-->quit
chroot /mnt/sysimage //進入原系統環境
grub-install /dev/sda //重新安裝grub引導程序
reboot
inode節點與文件恢復