在 Linux 上为家庭服务器选择哪种易于管理的文件系统?

在 Linux 上为家庭服务器选择哪种易于管理的文件系统?

我有一个家庭服务器,在 HP Proliant Microserver Gen7 上运行,配有 10GB ECC 内存,运行 Debian 8 (jessie)。目前,我有一个小型系统磁盘(使用 rsnapshot 备份)和 2 个 3TB 存储磁盘,使用 mdadm 设置为 Raid 1,此外,我还为不同目的设置了 LVM 组,其中一个 - 另外还使用 dm-crypt / luks 加密以保存私人数据。

我计划为存储池购买另外两个相同大小的硬盘,并可能从头开始设置服务器,肯定会再次使用 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 脚本)

所以建议的模式是虚拟机的 GPT / LUKS / ZFS / 数据或 ZVOL

不要忘记创建一个 BIOS 分区(大小为 1M),如果你不使用 UEFI 启动,也不要忘记为 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 上输入一个木马(在我想使用的应用程序中)显然什么也没做(没有套接字连接等),但它记录了某种“写入”磁盘的操作并进行了双重写入……将近两周后,另一个木马获取了该信息并试图将其发送到 IP……天哪,我的互联网连接“中间”有另一台计算机(是的,我当然是,我是个十足的偏执狂,它救了我)“发现”了这些连接并“阻止”它们……更不用说我只使用“Linux”,因为 Windows 无法控制。这样的木马存在而不知道应用程序作者,它们是在应用程序存储在存储库时注入的。希望大家明白,我不想说是哪个应用程序,因为现在已经“修复”了……谁知道从什么时候开始!

你以为我只考虑特洛伊、隐藏的东西等吗?根本不是,记住交换、临时文件等……有些应用程序会保存你正在使用/创建的文档,以帮助你不丢失你所做的一切,他们到底把这些数据保存在哪里?没有必要保存在你加密的分区上,也许在交换、临时文件夹或应用程序作者想要的一般地方,所以你不能总是知道它保存在哪里……再次加密所有内容。

哦,是的,grub.cfg 可以驻留在 RAID0 中,LUKS 位于 LUKS 之上...位于 LUKS 之上,等等。您只需要一个非常小的分区用于第 1.5 阶段或第 2 阶段,大小为 8MiB 或更少,并且未格式化(批量转储),即可让 Grub2 启动...在互联网上搜索 BIOS GRUB 分区。

抱歉,我还没有尝试过 ZFS,也不确定 Grub 文件(grub.cfg 等)是否可以驻留在 ZFS 中......但我已经测试过它们通过以下方式:Ext4 通过 LVM 通过 LUKS 通过 LVM 通过 LUKS ...所以在某种程度上......通过 LUKS 通过真正的 GPT(也在 MBR 中)没有 EFI 分区并且它可以正常启动......只需要在安装 grub2 时添加扩展“crypto”和“lvm”......我更喜欢输入自己的 grub.cfg,所以除了 grub2-install 之外我从不使用与 grub2 相关的任何其他东西(我再次感到偏执)。

我总是使用自己的 grub.cfg 作为主引导加载程序,它会调用其他引导加载程序,这样我就可以让系统管理自己的引导加载程序,而无需触碰我使用文本编辑器手动编辑的主引导加载程序。

对不起,我是个彻头彻尾的偏执狂。

你会怎么想?如果有任何“地方”可以写入/读取非加密数据,任何类型的“私人”数据都是完全错误的,有时可以写入未加密的部分。为了安全起见,永远不要有任何非加密部分。

PD:如果您使用 EFI 分区,请记住任何代码都可以写入它,因为它根本没有保护并且它是一个不可加密的 FAT32 分区。

PPD:FAT32 上的数据可以存储在哪里?任何地方,也可以是空闲空间。Ext4 呢?完全一样……始终加密所有存储。

相关内容