我是 btrfs 新手,想了解一些关于分区和子卷策略的建议。该系统是一个轻型 Web 服务器,假设它只有一个磁盘。
对于 ext 文件系统,我总是为 /、/var、swap(可能还有 /boot 和 /home)创建单独的分区。对我来说,/var 始终包含所有有价值的 Web 服务器数据(例如 MySQL 数据库),但不包含任何代码。这样,我可以轻松地将数据移动到其他系统(移动或复制 /var)或重新安装操作系统而不会破坏数据(重新格式化 /)等。
使用 btrfs,我可以做同样的事情,使用相同的分区方案,并在每个分区上拥有单独的 btrfs 文件系统。或者,我可以有一个分区,并使用 btrfs 子卷作为 /、/var 等。这样做的优缺点是什么?
在我看来,拥有 /-only 和 /var-only 快照可能有一些优势,例如(“将所有数据恢复到以前的检查点” vs “恢复所有代码” vs “恢复两者”)。是这样吗,还是只是看起来是这样?
附加问题:在 btrfs 文件系统下使用 lvm 有什么优势吗?
附加问题 2:如果系统有两个相同大小的磁盘,您的建议会如何改变?
任何关于“这是我做的以及它对我有何作用”的文章的提示都将不胜感激。我可以找到很多关于我能做什么的材料,但我找不到太多关于“这是我尝试过的以及它为什么有效或无效”的文章。
答案1
如果您没有特殊需求,请像使用其他文件系统一样使用 btrfs。分离 /home 是一种很好的做法。
就我个人而言,在家庭服务器上,我唯一的子卷是 /etc,因此我可以对配置进行快照。这可以使用 snapper 等工具自动完成。
通常,人们不太愿意只恢复 /var 的先前版本,因为还需要恢复 /lib/stuff。这是一个全有或全无的情况。
/home 的快照可能非常大,因此磁盘大小管理很快就会成为问题。这可以毫无问题地完成,但要注意剩余空间。此外,由于快照只能在同一磁盘上制作,因此它们不是磁盘故障时的备份解决方案。可以将它们视为“哎呀,我两个小时前删除了这个文件,但我仍然需要它”等情况的解决方法。
奖励 1:无。事实上,btrfs 的设计是为了简化堆栈 mdadm+lvm+fs。所以最好避免它。
奖励 2:不,但要制作 RAID 1!简单而高效,您的数据会爱上您 :)
忍者奖励:你真的可能想好好看看btrfs 维基。
答案2
我最近一直在重新审视这个问题,并想分享一篇经过深思熟虑的文章,其中建议一个分区的顶级目录包含子卷:https://bbs.archlinux.org/viewtopic.php?id=194491
总结
subvolid=0
├── subvol_root
│ └── /usr, /bin, /sbin, /.snapshots, etc
├── subvol_snapshots
├── subvol_home
└── subvol_opt