在 Linux 上為家庭伺服器選擇什麼易於管理的檔案系統?

在 Linux 上為家庭伺服器選擇什麼易於管理的檔案系統?

我有一台運行在 HP Proliant Microserver Gen7 上的家庭伺服器,具有 10GB ECC 內存,運行 Debian 8 (jessie)。現在,我有一個小型系統磁碟(使用 rsnapshot 備份)和 2 個 3TB 儲存磁碟,使用 mdadm 設定為 Raid 1,最上面我有用於不同目的的 LVM 組,其中之一 - 另外 dm-crypt / luks 加密為保留私人資料。

我計劃額外購買兩個相同大小的 HD 用於儲存池,並可能從頭開始設定伺服器,肯定會再次使用 debian,但這次可能在 xenserver 虛擬化下。因此,儲存池將為 4x 3TB,Raid1 留下可用的 6TB,Raid5(或 raidz1)留下可用的 9TB。

雖然 mdadm / lvm / dm-crypt 的組合工作得很好,但我發現它非常複雜,特別是計劃一個簡單的災難復原策略。我需要研究每一層最好的元資料備份和復原過程是什麼等。

在一個完美的世界中,我將使整個儲存成為一個加密的 raidz1 池,但是加密還沒有進入 Linux 上的 Zfs,並且根據我的研究,完全不清楚何時可以實現它

Btrfs 也有一些相同的情況:至少它看起來生產穩定 - 但可惜 - 加密也只會在不可預見的未來到來。

因此,從我更喜歡使用的檔案系統來看,兩者本身都不支援 Linux 上的加密(目前)。嗯,有很多關於如何將 LUKS 加密的 LVM 與 ZFS 或 BtrFS 結合使用的方法和教程。有一種在 ZFS 之上使用 LVM 或在 LVM 之上使用 ZFS 的方法 - 對我來說,這聽起來像是一團糟。

我根本不喜歡 EncFS 的概念,所以這也不是選擇。

希望有一些我沒有聽說過的選項,因此我的問題是:還有什麼可以實現這一「簡單(如可擴展等,如zfs、糾錯)來管理在Linux 上為家庭伺服器選擇的檔案系統,這可以完全或部分加密嗎?

2017 年 12 月更新:Linux 上的 ZFS 即將推出加密功能: https://blog.heckel.xyz/2017/01/08/zfs-encryption-openzfs-zfs-on-linux/

答案1

mdadm / lvm / dm-crypt 可能是你最好的選擇- 而且它一點也不復雜- 你只需適當地處理每一層- 或者,根據你的需要, mdadm / dm-crypt / lvm (如果你希望所有LV 都使用 1 個密碼共享單一設備)

你不使用 encfs 是對的 -它不安全

答案2

如果您選擇 ZFS 設置,我建議:

  • 不使用 LVM,在池頂部建立 ZVOL

  • 對於作業系統 - 帶有鏡像(或 raidz)的未加密 ZFS 池的 GPT 分割區

  • 對於私有資料 - 在 GPT 分割區上使用 LUKS,然後在頂部建立 ZFS 池鏡像(或 raidz)

啟動後透過 ssh 登錄,輸入加密分割區的密碼,匯入 LUKS 之上的池,然後啟動虛擬機器(最好寫一個 shell 腳本)

所以建議的模式是VM 的 GPT / LUKS / ZFS / 資料或 ZVOL

如果你不使用UEFI啟動,不要忘記建立一個BIOS分割區(大小1M),也不要忘記為GRUB建立一個分割區,例如150M

對於大量隨機 IO,我建議停用 ZFS 預取 (echo 1 > /sys/module/zfs/parameters/zfs_prefetch_disable)

答案3

這是對所有想要加密某些資料的人的建議,始終對連接到電腦的所有可能儲存裝置進行 100% 加密,無論是 Grub 分割區、系統分割區、主分割區、資料分割區、交換分割區等。

為什麼?因為您無法控制應用程式/系統保存資料的位置。

Disarter 範例事件順序:

  1. 開機正常
  2. 使用應用程式
  3. 開啟“私人”文檔
  4. 系統當機(軟體或硬體)
  5. 下次啟動就不行了
  6. 一台設備壽命結束(不再運作)

您無法刪除此類設備上的內容(它不起作用),您無法讀取它,那麼,那裡保存了什麼?也許是一些「私人」的東西?你甚至不知道什麼都不知道在哪裡。

但是其他人(也許口袋裡有數百萬美元)將其刪除,因此您不能將該設備放入垃圾箱,除非您確認“私人”數據不存在...但您無法知道,除非您給出該設備給一家公司,但“私人”再次面臨風險,也許他們“複製”它(在那裡工作的壞人等)。

問你這個:你是否知道你使用的所有程式碼(啟動程式碼、系統程式碼、應用程式碼等)的每個原始碼行,你自己編譯的原始碼......並且從不使用任何類型的「二進位」......所以你必須用鉛筆和紙來編譯編譯器。

否則你使用的程式碼你不知道它的作用。

附註:如果您需要使用「私人」數據,永遠不要再將該電腦連接到互聯網......也許您使用過的應用程式的某些部分確實保存了一些數據,並在很長的將來將其傳送到互聯網伺服器。

極端範例:您使用寫入應用程式讀取TXT 文件,它有一個隱藏程式碼將其保存隱藏在某處...然後經過幾年的更新,該應用程式(或另一個應用程式)具有隱藏程式碼來讀取隱藏的已保存數據,並將其發送到互聯網伺服器或第三方電腦等。

案例很極端嗎?我以艱難的方式學習它們......在我的Linux上輸入一個troyan(在我想使用的應用程式內)顯然不執行任何操作(沒有套接字連接等),但它正在記錄某種「寫入」到磁碟並進行雙重寫入...近兩週後,另一個玩具人獲取了該資訊並嘗試將其發送到IP..天哪,我的網路連線「中間」有另一台電腦(是的,當然我是並且我是一個十足的偏執狂,這救了我)“發現”這些連接並“阻止”它們......更不用說我只使用“Linux”,因為Windows 無法受到控制。這些特洛伊人是在不知道應用程式作者的情況下存在的,它們是在應用程式儲存在儲存庫中時注入的。希望您能理解,我不想說哪個應用程式從現在起已經被「修復」了……誰知道從什麼時候開始!

你認為我只考慮特洛伊人、隱藏的東西等,一點也不,記住交換、臨時文件等......一些應用程式保存你正在使用/創建的文檔,以幫助你不丟失你所做的事情,他們到底把這些資料保存在哪裡?在您的加密分割區上不需要,可能在交換、臨時資料夾或應用程式作者想要的一般位置,所以您不能總是知道它保存在哪裡....再次加密所有。

哦,是的,grub.cfg 可以駐留在RAID0 中,LUKS 超過LUKS ...超過LUKS 等等。大量轉儲)即可讓Grub2啟動...在網際網路上搜尋 BIOS GRUB 分割區。

抱歉,我還沒有嘗試過 ZFS,不確定 Grub 檔案(grub.cfg 等)是否可以駐留在 ZFS 中...但我已經測試過它們:Ext4 over LVM over LUKS over LVM over LUKS ...等等某些級別...超過真正的GPT(也位於MBR 中),沒有EFI 分區並且啟動正常...只需要添加擴展名“crypto”和“lvm”,在安裝grub2 時...我更喜歡輸入我自己的grub.cfg 所以我從不使用與grub2 相關的grub2-install 以外的任何東西(我再次偏執)。

我總是使用我自己的grub.cfg 作為主引導加載程序來調用其他引導加載程序,這樣我就可以讓系統管理自己的引導程序,而無需觸及我用文本編輯器手動編輯的主引導加載程序。

抱歉,我完全是個偏執狂。

你必須怎麼想?如果存在可以寫入/讀取未加密資料的任何“位置”,則任何類型的“私有”資料都是完全遺失的,有時可以將其寫入該未加密部分。為了安全起見,永遠不要有任何未加密的部分。

PD:如果您使用 EFI 分割區,請記住任何程式碼都可以寫入它,因為它根本沒有保護,而且它是一個不可加密的 FAT32 分割區。

PPD:FAT32 上的資料可以儲存在哪裡?任何地方,也可以在自由空間。那麼在 Ext4 中呢?完全相同...始終加密所有儲存。

相關內容