我计划在不久的将来将 Debian 安装从一个磁盘迁移到另一个磁盘。作为其中的一部分,我正在考虑以不同的方式设置文件系统,以便面向未来并简化设置。
我当前的设置是在 SSD 上的分区上设置单设备 RAID1 LVM(我最初打算设置系统磁盘的镜像,但从未抽出时间实际执行此操作)。该 RAID1 又包含 ext4 根文件系统,其中 /opt 以及 /usr 和 /var 的一部分分离到 ZFS 存储上。特别是,/boot 是根文件系统的一部分,我使用 GRUB 2 使用旧式 MBR 进行引导。
这个想法是拥有一个带有 *nix 式文件系统(可能是 ext4)的大型根文件系统,并分离出有特殊需要的部分。
我想保留稍后迁移到 UEFI 启动的可能性,可能包括迁移到 GPT,而不需要移动任何东西。 (备份/重新分区/恢复是另一回事,从 MBR 迁移到 GPT 可能需要备份/重新分区/恢复,但在这成为问题之前我可能会再次获得新磁盘。)
我还希望能够选择稍后将根文件系统迁移到 ZFS,或者至少设置 dm-verity 进行数据完整性验证。 (是的,把所有事情都做好会有点头疼,尤其是半就位。那是以后的事情了;他们对这个问题唯一考虑的是以后的选择。 )
除了那些我已经从根文件系统中分离出来的文件之外,这一切似乎都为分离 FAT32 和 FAT32(最后一个最初可能是空的)/
提供/boot
了明显的理由。/boot/efi
但还有其他人吗?
- 哪个系统由持久存储支持的文件系统应与根文件系统分开以及为什么在现代 Linux 安装上?
- 执行这些文件系统中的任何一个需要使用 MBR 时转到特定分区位置,还是它们的位置是任意的?例如,/boot/efi 是否需要进入第一个主分区或类似的分区?
答案1
至少,将包管理的目录与非管理的目录分开。
根据我的经验,非托管目录通常是(但不一定是唯一的)/opt
、/usr/local
,当然还有/home
。
(我还标记了我手动编辑的包托管目录中的文件,因此我可以轻松地在将来的任意时刻识别它们。)
答案2
首先,这很大程度上是基于意见的。如果你问十几个不同的人,你可能会得到至少 3-4 个不同的答案。
也就是说,这是我对此的看法:
/home
与分开/
。这里的主要推理基本上与以往一样。它使您的用户更难意外地用完 上的所有空间/
,并且在需要重新安装时更容易保留用户数据。此外,它将大多数系统最大的部分之一与系统的其余部分隔离,这对于管理备份特别有用。- 保持
/tmp
并/var/tmp
与 分开/
。这两个区域都用于临时存储,这可能在根文件系统上引起的混乱量可能对其性能产生重大的长期影响。此外,数据保证是瞬态的,且生命周期相对较短。这意味着您不应该备份它们(这只是浪费空间),并且当您移动到新磁盘时可能不会复制它们。也就是说,现在/tmp
通常应该是一个实例,并且如果您可以将 RAM 中可能存在的所有内容都放入的话,通常也应该是这样。tmpfs
/var/tmp
- 有点争议,更具侵入性,但是将全局缓存目录与它们通常所在的文件系统隔离开来。典型的例子是
/var/cache
,但可能还有其他例子,具体取决于您的特定系统(我认为/var/cache
在 Debian 上完全涵盖了它)。这与隔离/tmp
、/var/tmp
、 和具有许多相同的优点/home
,但它也为您提供了一个不需要备份的明确区域(它是一个缓存,如果应用程序因为在那里找不到数据而中断) ,这是一个写得不好的应用程序),因此当您移动到新磁盘时也不需要复制。 - 将您的数据集与
/
.这是故意抽象的,但包括系统托管的任何网站的页面和数据、系统提供的任何数据库或目录服务的后端存储以及其他此类内容。隔离这些数据有两大好处。首先,它提供了/home
与保持分离相同的一般好处/
。其次,它至少部分地将根文件系统的性能与数据卷的性能分离。这还允许您将这些数据集转换到不同的存储配置,而不会直接影响系统的其余部分,这可能意味着在线维护期(服务只是降级,但没有完全关闭)和离线维护期之间的差异一。 - 将可以轻松重新生成或重新获取的“一次性”数据与其他数据分开。示例包括来自互联网的可公开访问的数据(git 存储库、包存储库索引、ISO 映像等),以及一些非常琐碎以至于您不会备份它们的数据。这主要是为了简化备份规划,但在切换到新磁盘时也很有帮助(即,您不需要有复制大部分甚至全部数据,因为您可以根据需要重新获取/重新生成它)。
- 将不由包管理器管理的目录结构与那些由包管理器管理的目录结构分开。这不是强制性的,但可以大大简化升级和重新安装。从技术上讲,这包括我上面提到的内容,但在本例中,我更具体地指的是
/opt
和/usr/local
。注意/opt
可能包含由您的包管理器管理的数据(例如 Dropbox 和 Google Chrome 都安装在那里)。