我计划在 opensolaris 上构建一个文件服务器,使用 raid z1 或 z2。是否可以稍后一次升级一个磁盘并立即访问增加的存储空间?还是只有当 raid z 中的每个设备都升级后,才能使用增加的存储空间?
另外,常规 zpools 如何处理不同大小的设备?我找不到关于这个问题的确切答案。我可能一开始必须在 zpool 中设置两个大小不同的驱动器,并且没有任何冗余。我听说有些人认为每个驱动器都被视为最小磁盘的大小(在 zpools 和 raid zs 中都是如此),但 zfs 文档似乎暗示并非如此。
答案1
我刚刚在 VirtualBox 中测试了这一点。结果发现,您受到池中最小磁盘大小的限制。因此,raidz1 中的 2x500GB 和 1x250GB 只能产生 250GB 的可用空间。一旦您升级最后一个磁盘(并确保zpool set autoexpand=on thepool
),您就可以访问额外的空间。
常规 zpools 将数据分条到池中尽可能多的磁盘/vdev 上,如果其中一个大于另一个,则当较小的磁盘已满时,它会停止分条。
答案2
您无需升级 raidz 磁盘,因为升级所有磁盘之前,这无助于增加池大小,您可以通过向池中添加全新的 raidz 来增加池的大小。
关于你的第二个问题,如果你不是在池中使用冗余并使用不同大小的磁盘,全局可用大小将是每个磁盘大小的总和,而不受最小磁盘大小的限制。如果您使用冗余(镜像或 raidz),则最小磁盘大小将占主导地位。
答案3
从技术上讲,您可以进行 RAIDZ 设置,这样您就可以一次升级一个磁盘,并让增加的空间可用。但这需要在所有驱动器上设置分区,还需要在新驱动器上创建分区才能使用它。虽然不是那么困难,但这并不简单。它只需要一点规划和对 ZFS 和 RAIDZ 的工作方式的良好理解。
示例如下:http://www.cod3r.com/2010/04/zfs-on-different-sized-disks/
如果您想要一个简单的升级路径并且有备用的磁盘控制器,使用多个镜像池可能会更容易,如https://blogs.oracle.com/constantin/entry/opensolaris_home_server_zfs_and