深刻理解Linux文件系統(一)

inode和block概述

  • 文件數據包括元信息與實際數據
  • 文件存儲在硬盤上,硬盤最小儲存單位是 「扇區」,每一個扇區儲存512字節。
  • block(塊)
    中文譯名爲「索引節點」,也叫i節點
    用於存儲文件元信息
    深刻理解Linux文件系統(一)

一、inode的內容

inode 包含不少的文件元信息,但不包含文件名,例如
文件的字節數
文件擁有着的UserID
文件的GropuID
文件的讀、寫、執行權限
文件的時間戳
目錄文件的結構
目錄也是一種文件
目錄文件的結構
每個inode都有一個號碼,操做系統用inode號碼來識別不一樣的文件
Linux系統內部不使用文件名,而是用inode號碼來識別文件
對於用戶來講,文件只是inode號碼便於識別的別稱
inode號碼
(1)、系統找到這個文件名對應的inode號碼
(2)、經過inode號碼獲取inode信息
(3)、根據inode信息,找到文件數據所在的block,讀出數據
inode的大小
inode也會消耗硬盤空間,每一個inode的大小,通常是128字節或256字節
格式化文件系統時肯定inode總數
使用df-i能夠查看每一個硬盤分區的inode總數和已經使用的數量node

實際操做
一、咱們在opt裏輸入mkdir abc建立一個空目錄,輸入 touch aaa.txt再abc目錄裏裏建立一個空文件,能夠經過ls -i 查看文件的inode節點號
深刻理解Linux文件系統(一)
二、也可stat aaa.txt查看詳細狀況
深刻理解Linux文件系統(一)
三、把aaa.txt建立成連接文件,輸入ln aaa.txt a01.txt,再輸入ls -i 查看inode號能夠看到相同,可是名字都相同。
深刻理解Linux文件系統(一)
三、咱們輸入stat aaa.txt能夠看到aaa.txt硬連接有2個。
深刻理解Linux文件系統(一)
四、用file aaa.txt能夠查看文本類型。
深刻理解Linux文件系統(一)
五、也能夠用ls -i查看文本類型(開頭是d的爲目錄)。
深刻理解Linux文件系統(一)
六、inode節點能夠用df -i 查看。
深刻理解Linux文件系統(一)c++

硬連接與軟連接

在Linux下面的連接文件有兩種,一種相似於Windows的快捷方式文件,能夠快速鏈接到目標文件或目錄;另外一種則是經過文件系統的inode連接來產生的新文件名,而不是產生新文件,這種稱之爲硬連接。
一、硬連接
通常狀況下,文件名和inode號碼是一一對應關係,每一個indoe號碼對應一個文件名。網絡

因爲硬連接的元數據與源文件的徹底一致(就是同一條元數據),因此有了它的一系列特性。ide

1,不能跨文件系統;工具

2,有相同的iNode和data block;操作系統

3,硬連接只能對已經存在的文件進行建立;設計

4,不能針對目錄文件進行建立,Linux文件系統在設計時對目錄默認建立了兩個硬連接, . .. 若是再支持目錄建立硬連接的話會生成目錄環可能會形成死鎖(筆者一家之言);3d

5,刪除文件時,必須刪除全部的硬連接才能真正釋放data block.
軟連接
軟連接就是再建立一個獨立的文件,而這個文件會讓數據的讀取指向它鏈接的那個文件的文件名。
一、 軟鏈接有本身的元數據,因此能夠對其進行權限控制(做用於原文件)rest

二、 可跨越文件系統(包括網絡)建立軟鏈接blog

三、可對不存在的文件和目錄建立(打破不能連接目錄的限制)

四、 建立軟鏈接,源文件連接數不增長

五、 刪除軟鏈接時不影響源文件

恢復誤刪除的文件

咱們刪除一個文件,實際上並不清楚inode節點和block的數據,只是在這個文件的父目錄裏面的block文件,刪除這個文件的名字。Linux是經過Link的數量來控制文件刪除,只有當一個文件不存在任何Link的時候,這個文件纔會被刪除。
·
一、須要使用在開始操做以前咱們須要安裝實驗所須要的軟件包,咱們的光驅掛載在/mnt/裏,開始安裝所須要的軟件,
深刻理解Linux文件系統(一)

在安裝第二個包以前要安裝libcom。
深刻理解Linux文件系統(一)
二、如今要把工具包進行編譯安裝,在編譯以前輸入smbclient -L //192.168.10.10/
看看共享出來的文件名是什麼。
深刻理解Linux文件系統(一)
三、知道文件名以後就開始進行編譯安裝
建立mkdir /aaa,輸入mount.cifs //192.168.10.10./CAA/aaa ,就能夠看到/aaa裏就有裏extundelete這個包
深刻理解Linux文件系統(一)

四、對這個壓縮包進行解壓輸入tar jxvf extundelete-0.2.4.tar.bz2 -C /opt/
深刻理解Linux文件系統(一)
五、進入深刻理解Linux文件系統(一)extundelete-0.2.4./中,能夠看到configure。
深刻理解Linux文件系統(一)
六、配置以前要安裝環境,輸入yum install gcc gcc-c++ -y。
深刻理解Linux文件系統(一)
七、./configure 直接進行執行。
深刻理解Linux文件系統(一)
八、輸入make install 進行安裝。
深刻理解Linux文件系統(一)
九、接下來將添加的磁盤進行分區和格式化。
深刻理解Linux文件系統(一)
深刻理解Linux文件系統(一)
十、進行掛載,mkdir /data 輸入mount /dev/sdb1 /data,而後進入data裏查看。
深刻理解Linux文件系統(一)
十一、在data裏寫入三個文件。
深刻理解Linux文件系統(一)
十二、模擬刪除文件,rm -rf b,b的文件就被刪除了
深刻理解Linux文件系統(一)
1三、這時候咱們就能夠恢復了,在這以前要先解掛載。
深刻理解Linux文件系統(一)
1四、接下來輸入extundelete /dev/sdb1 --restore all,來恢復刪除的全部文件,若是誤刪了文件以後,要立馬將設備解掛載,要否則新的文件將你的inode號佔用就沒法恢復了。
深刻理解Linux文件系統(一)
1五、輸入cd RECOVERD_FILES/就能夠看到恢復的文件。
深刻理解Linux文件系統(一)

恢復LINUX中XFS類型的文件

xfsdump命令
格式:xfsdump -f 備份存放位置 要備份的路徑或設備文件
經常使用選項:
-f:指定備份文件位置
-L:指定會話標籤(免交互)
-M:指定設備標籤(免交互)
-s:備份指定的文件
xfsrestore命令
格式:xfsrestore -f 恢復文件的位置 存放恢復後文件的位置
-f:指定備份文件位置
-s:恢復指定文件恢復
-t:查看文件的內容及詳細信息
一、首先添加一塊磁盤,而後對其進行配置,格式化爲xfs格式,而後掛載到新建的目錄/data裏。
深刻理解Linux文件系統(一)
二、複製passwd文件到「/data/」目錄下,而後在「/data/」目錄裏新建一個「test」目錄,並在目錄裏建立一個空文件。
深刻理解Linux文件系統(一)
三、返回到data目錄下,而後將sdb1裏的分區備份到/opt/裏,命名爲"xfs_dump"。
深刻理解Linux文件系統(一)
四、刪除/data/裏的內容,模擬刪除。
深刻理解Linux文件系統(一)
五、刪除完以後如今咱們開始恢復。
深刻理解Linux文件系統(一)
六、輸入ls查看你/data/裏文件是否恢復回來。
深刻理解Linux文件系統(一)
xfsdump使用限制:

一、只能備份已掛載的文件系二、必須使用root的權限才能操做三、 只能備份XFS文件系統四、備份後的數據只能讓xfsrestore解析五、 不能備份兩個具備相同UUID的文件系統