我在ZFS镜像池上运行带有root的FreeBSD 9.1。
起初,池(标为zroot )总共有1TB,跨越两个1TB的驱动器。
最近我们遇到了磁盘空间问题,在这个问题中,99%的资源分配了大约15G的空闲空间。 单独在/home文件系统中占用大约800G。
为了解决这个问题,我们增加了2个1TB硬盘。
我们想保留这些驱动器的镜像。 现在的问题仍然是,我们应该如何将额外的2个1TB驱动器添加到池中?
我们应该将它们添加到现有的zroot池并分配它。 这似乎是一个坏主意,因为原始池被devise为作为根文件系统运行。
我们是否应该创build一个带有镜像驱动器的新池,然后创build一个新的/home2并将高使用率的用户转换到该分区?
对我们来说,ZFSfunction的程度还不清楚。 我们倾向于选项(2),因为它不会在根镜像上增加不必要的依赖关系。 但是,我们希望能够采取何种行动方面的任何见解和想法。
谢谢。
我们应该将它们添加到现有的zroot池并分配它。 这似乎是一个坏主意,因为原始池被devise为作为根文件系统运行。
首先,zpools和zfs文件系统是不同的概念(你不能将它们分开,但应该在考虑它们的设置时)。 因此,池不是“作为根文件系统运行”,在zpool上有一个文件系统,configuration为作为根文件系统运行。
因为这个zpool拥有根文件系统,所以它必须是非冗余的单个vdev,或者必须是单个镜像。 所以你不能只添加更多的驱动器。
我们是否应该创build一个带有镜像驱动器的新池,然后创build一个新的/ home2并将高使用率的用户转换到该分区?
为每个用户创buildzfs文件系统会更容易,并将其挂载到其主驱动器位置。 这消除了janky / non-standard /home2想法,并允许您在每个用户的主文件夹上设置配额,预订等等。
当我安装一个ZFS服务器时,我使用2/3个较小的磁盘作为引导zpool(我有100-320GB的磁盘,这是我常用的),或者从主存储驱动器大小相同,使用GPT分区)。 驱动器的其余部分得到一个大的分区,然后进入存储zpool。
这里是我的家庭服务器设置,例如:
pool: tank0 state: ONLINE scan: scrub repaired 0 in 1h39m with 0 errors on Sat Jun 8 07:59:40 2013 config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 gpt/tank0-d0 ONLINE 0 0 0 gpt/tank0-d1 ONLINE 0 0 0 errors: No known data errors pool: tank1 state: ONLINE scan: scrub repaired 0 in 3h11m with 0 errors on Mon Jun 1 08:57:39 2013 config: NAME STATE READ WRITE CKSUM tank1 ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 gpt/tank1-d0 ONLINE 0 0 0 gpt/tank1-d1 ONLINE 0 0 0 gpt/tank1-d2 ONLINE 0 0 0 gpt/tank1-d3 ONLINE 0 0 0
首先让我猜你目前的configuration。 您是否使用zpool add将新驱动器zpool add到池中? 如果是这样你的zpool应该看起来像:
zpool: mirror: disk1 disk2 disk3 disk4
在这种情况下镜像你的新驱动器,你应该这样做:
zpool attach <pool-name> <disk3> <disk5> zpool attach <pool-name> <disk4> <disk6>
这会给你一个由三个镜子组成的池,每个池有两个驱动器。
在我看来,使用zraid2或者zraid3这个设置会更好,你会得到更快的池和更好的可靠性。 在你当前的设置中,你可能会失去两个驱动器来杀死一个池。 有了zraid2,你也可以失去两个驱动器,但你会得到1TB额外的空间。 使用zraid3你可以安全地丢失三个驱动器。
您可以考虑的另一个选项是在您的池上启用压缩。 不要为根文件系统启用压缩!