NILFS2 是 /home 的防彈文件系統

NILFS2 是 /home 的防彈文件系統

如您所知,如果麻煩可能發生,那麼它肯定會發生。可能每個人都遇到過最近的重要文件被意外刪除,或者文字編輯器中的文字被意外選擇和破壞的情況。

如果您是主機託管商或網站所有者,那麼您可能遇到過使用者帳戶或網站遭到駭客攻擊的情況。在這種情況下,恢復時間順序、找到進入方法以及攻擊者使用的漏洞非常重要。

NILFS2 檔案系統非常適合解決此類問題。

它從 2.6.30 版本開始就出現在 Linux 核心中。

這個檔案系統的奇特之處在於它類似於版本控制系統:你可以隨時回滾系統的狀態,看看前段時間會是什麼樣子。

要提供此功能,您不需要設定 Cron 腳本、拍攝快照等。 NILFS2 檔案系統自行完成這一切。它永遠不會覆蓋舊數據,並且如果有足夠的可用磁碟空間,則始終寫入磁碟的新區域。完全按照Copy-on-Write原則。

事實上,對檔案的任何變更都會自動建立檔案系統的新快照,因此您可以將此 FS 用作時間機器並倒帶檔案的狀態。

故事

NILFS2 是 /home 的防彈文件系統NILFS2 的開發深入 日本電報電話公司事實上,是國有(擁有控股權)、日本最大的電信公司。更具體地說,在網路空間實驗室的領導下 小西龍介.

它的具體開發目的尚不清楚,但可以假設,這種具有「時間機器」功能的 FS 非常適合存儲情報部門可能想要挖掘的數據,以便重放整個事件的全貌。短信、電子郵件等.. ....

NILFS2 對於內部安全服務也可能是一個非常有價值的工具,因為它允許您恢復郵件資料庫中所有已刪除的信件,從而暴露員工的門框,這些員工隨後可能會試圖透過刪除或更改檔案來偽裝它們。

如何追蹤您的整個通訊歷史記錄?在 Linux 伺服器上(出於內部安全目的,應安裝 NILFS2),儲存電子郵件的檔案方法通常用於儲存電子郵件。所謂格式 郵件目錄。夠放的 快遞郵件伺服器 並在 Maildir 中設定郵件儲存。其他格式 郵箱 是一個大型文字文件,可以輕鬆解析為單獨的訊息。

如果郵件伺服器使用資料庫,那麼 NILFS2 將能夠恢復資料庫變更的準確時間,並且能夠在任何這些時刻恢復資料庫。然後你需要使用資料庫工具來查看當時的內容...

然而,出了點問題。要么是日本政府改變了對每個人進行監控的想法(按照 Yarovaya 原則),要么是 NILFS2 在傳統 HDD 上的性能低於標準,NILFS2 在 GPL 許可下發布並很快進入了 Linux 內核,因為對於用高品質的日文寫的程式碼沒有什麼特別的抱怨,Linux 核心的開發人員沒有它。

NILFS2 是什麼樣的呢?

從使用的角度來看:在版本控制系統上 SVN。每個 FS 檢查點都是在發生任何變更時在使用者不知情的情況下自動進行的提交:無論是刪除、變更檔案內容或變更存取權限。每次提交都有一個線性增加的數字。

從程式設計師的角度來看:循環緩衝區。檔案系統累積變更並將其寫入大約等於 8 MB 的區塊(2000 * 4096,其中 2000 是區塊中的元素數量,4096 是記憶體頁的大小)。整個磁碟被分成這樣的區塊。錄音按順序進行。當可用空間耗盡時,最舊的快照將被刪除並覆蓋區塊。

NILFS2 的基本功能

  • 版本控制!!!
  • 故障後恢復檔案系統的過程很簡單:載入時,搜尋具有正確校驗和的最後一個區塊,並在其上安裝超級區塊。這幾乎是即時操作。
  • 由於記錄總是線性進行,因此:
    • 在隨機寫入緩慢的 SSD 上運行時可以顯示出良好的結果。
    • NILFS2 節省了 SSD 資源,因為幾乎沒有寫倍增因子。
      更準確地說,不超過2個。事實是,當循環重寫整個磁碟時,NILFS2 會將不可更改的資料轉移到新的片(區塊)中。

      如果磁碟上有 10% 不變的數據,那麼透過 10 次完全重寫,我們將獲得 1% 的寫入增量。好吧,對於磁碟的 50 次完全重寫,設備填充度達到 50% 時增加了 1%。

      最大寫入增益為 2。考慮到所有內容都是依序寫入的,這個增益非常低。一般來說,寫入動畫將小於具有 4096 位元組磁區的傳統碎片檔案系統的寫入動畫。 (思想靈感來自 評論).

  • 實作複製到遠端 NILFS2 FS 的潛在便利性

NILFS2 用於 /home

在類別 Unix 作業系統中,通常有一個 /home 資料夾,用於儲存使用者資料。各種程式將其用戶特定設定保存在此資料夾中。

如果不是用戶,誰最常犯錯?因此,正如他們所說,上帝親自下令在 /home 上使用 NILFS2。

此外,隨著SSD的廣泛使用,我們現在不必再擔心使用CoW檔案系統時會出現嚴重的損耗。

是的,我們可以在 ZFS 和 BTRFS 中隨意建立 FS 快照,但始終存在快照之間遺失檔案變更的風險。而且圖片仍然需要管理:舊的需要刪除。在 NILFS2 中,所有這一切都會自動發生,幾乎每隔幾秒鐘就會發生一次。

我使用lvcreate建立了一個邏輯磁碟區(在nvme磁碟區組中,精簡池thin)。我建議在 lvm 卷上創建它,因為以後可以輕鬆擴展它。我建議 NILFS50 留出 2% 的可用磁碟空間,以獲得適當的版本深度。

lvcreate -V10G -T nvme/thin -n home

並在 NILFS2 中進行格式化:

mkfs.nilfs2 -L nvme_home /dev/nvme/home

mkfs.nilfs2 (nilfs-utils 2.1.5)
Start writing file system initial data to the device
      Blocksize:4096  Device:/dev/nvme/home1  Device Size:10737418240
File system initialization succeeded !!

之後,您需要從目前/home複製所有資料。

我在啟動電腦後立即執行此操作,然後以根用戶身份登入我的帳戶。如果我以我的使用者身分登錄,某些程式會打開我的使用者的 /home/user 資料夾中的套接字和文件,這將使乾淨的副本變得困難。如您所知,root 使用者的主資料夾通常位於 /root 路徑上,因此 /home 分割區上不會開啟任何檔案。

mkdir /mnt/newhome
mount -t nilfs2 /dev/nvme/home /mnt/newhome
cp -a /home/. /mnt/newhome

最後一行,請參閱 一篇文章.

接下來我們編輯/etc/fstab,其中掛載/home的檔案系統,以

/dev/disk/by-label/nvme_home /home nilfs2    noatime 0 0

選項 noatime 需要提高效能,以便 atime 不會隨著每次文件存取而改變。接下來我們重新啟動。

NILFS2 中的影像類型。

無法刪除的常規快照稱為檢查點或復原點。
不受自動刪除保護的快照稱為快照,簡稱快照。

使用 lscp 指令查看檢查點

查看快照 lscp -s

我們可以隨時使用以下方法自行建立快照和檢查點:

mkcp [-s] устройство

我們恢復資料。

NILFS 允許我們在使用主 FS 分支的同時掛載任意數量的舊快照。但僅限於閱讀模式。

一切都是這樣安排的。 NILFS2 製作的常規檢查點可以隨時自動刪除(當磁碟空間耗盡或根據 nilfs_cleanerd 規則),因此在安裝之前我們必須將檢查點轉換為快照,或者用俄語來說,捕獲快照。

chcp ss номер_чекпоинта

之後,我們可以掛載快照,例如,如下所示:

mount -t nilfs2 -r -o cp=номер_чекпоинта /dev/nvme/home /mnt/nilfs/номер_чекпоинта

之後,我們將復原的檔案從快照複製到/home。
隨後我們從快照中刪除不可刪除的標誌,以便將來自動垃圾收集器可以刪除過時的資料:

chcp cp номер_чекпоинта

NILFS2 實用程式

但這就是問題所在。是的,當然,我們可以創建一個檔案系統,在線上更改其大小,查看挑戰點列表,創建和刪除它們。 nilfs2-utils 軟體包提供了一個最小的紳士套裝。

由於 NTT 削減了資金,因此沒有快速的低階實用程式可以讓您顯示檔案變更的歷史記錄或在快照之間進行比較。

我的 n2u 實用程序

為了填補這個真空我寫了 你的 n2u 實用程序,它可以顯示特定文件/目錄的更改歷史記錄:

n2u log filename

輸出是這樣的:

          CHECKPOINT        DATE     TIME     TYPE          SIZE  MODE
             1787552  2019-11-24 22:08:00    first          7079    cp
             1792659  2019-11-25 23:09:05  changed          7081    cp

對於所選的實作方法來說,它的工作速度非常快:它使用二分法查找檔案之間的差異,快速掛載並比較不同快照中的檔案/目錄。

您可以使用 鍵設定一系列檢查點 -cp CP1:CP2-cp {YEAR-MM-DD}:{YEAR-MM-DD}.

您也可以查看特定檔案或目錄的檢查點之間的差異:

n2u diff -r cp1:cp2 filename

您可以顯示整個變更時間順序:特定檔案/目錄的檢查點之間的所有差異:

n2u blame [-r cp1:cp2] filename

也支援此命令中的日期間隔。

開發商的吶喊

有很多研究哈布雷的專家。請完成 NILFS2。進行複製、修訂之間的低級快速差異、重新連結和其他好東西!

引用

尼爾夫官方網站.

儲存庫:
尼爾夫斯2.
NILFS2 實用程式和模組.

時事通訊:
針對 NILFS2 開發人員的電子郵件通訊。 linux-nilfs 訂閱的 ID。
時事通訊存檔.

nilfs_cleanerd 設定指南.
對 EXT4、Btrfs、XFS 和 NILFS2 效能測試進行基準測試.

謝謝:

  • NILFS2 開發人員:Ryusuke Konishi、Koji Sato、Naruhiko Kamimura、Seiji Kihara、Yoshiji Amagai、Hisashi Hifumi 和 Satoshi Moriai。其他主要貢獻者包括:Andreas Rohner、Dan McGee、David Arendt、David Smid、dexen deVries、Dmitry Smirnov、Eric Sandeen、Jiro SEKIBA、Matteo Frigo、Hitoshi Mitake、Takashi Iwai、Vyacheslav Dubeyko。
  • 感謝安培林娛樂公司 (Amblin Entertainment) 和環球影業 (Universal Pictures) 製作的精彩系列電影。 “回到未來”。貼文的第一張圖片取自電影《回到未來3》。
  • 公司介紹 右室紫外可見分光光度計 尋求支持並有機會在您的 Habré 部落格上發表文章。

聚苯乙烯 請透過私人訊息發送您發現的任何錯誤。我為此增加我的業力。

您可以從以下網站訂購虛擬機器來試驗 NILFS2: 右室紫外可見分光光度計 使用下面的優惠券。所有新客戶均可享有 3 天的免費試用期。

NILFS2 是 /home 的防彈文件系統

來源: www.habr.com

添加評論