我计划使用 OpenSolaris 和 ZFS 构建一个文件服务器,它将提供两个主要服务 - 成为 XenServer 虚拟机的 iSCSI 目标和成为通用家庭文件服务器。我正在查看的硬件包括 2 个 4 端口 SATA 控制器、2 个小型引导驱动器(每个控制器上一个)和 4 个用于存储的大型驱动器。这允许每个控制器有一个空闲端口,用于升级阵列。
我有点困惑的是如何设置存储驱动器。对于性能,镜像似乎是王道。我很难看出使用 RAIDZ 而不是镜像会有什么好处。通过此设置,我可以看到两个选项 - 一个条带中的两个镜像池,或 RAIDZ2。两者都应该防止 2 个驱动器故障和/或一个控制器故障……RAIDZ2 的唯一好处是任何2 个驱动器都可能发生故障。在这两种情况下,存储都应该是容量的 50%,但第一个应该具有更好的性能,对吧?
我想解决的另一件事是具有两个以上设备的镜像阵列的好处。对于数据完整性,如果有的话,RAIDZ 比三向镜像有什么好处?由于 ZFS 维护文件完整性,RAIDZ 带来了什么……ZFS 的完整性检查不是否定 RAIDZ 奇偶校验的值吗?
我计划在我的家庭服务器上安装 OpenSolaris(现在它有 Linux),我想知道如何准备将来升级服务器以拥有更大的硬盘驱动器。现在服务器有 4 个 400GB SATA 驱动器,我会在它们上安装带有 ZFS RAID-Z 的 OpenSolaris。今年晚些时候或明年的某个时候,我将把驱动器升级到 4 个 1TB SATA 驱动器。
如何使用 ZFS 升级和增加分区大小?这是一个简单而轻松的操作(例如,一次更换一个驱动器,ZFS 将自动调整自身大小以使用整个空间),还是需要一些特殊步骤?是否可以在不关闭系统的情况下完成?
我已经使用 OpenSolaris 和 ZFS 工作了 6 个月,主要是在 Sun Fire x4540 以及标准的戴尔和惠普硬件上。标准 Perc 和 HP Smart Array 控制器的一个缺点是它们没有真正的“直通”JBOD 模式来将单个磁盘呈现给 ZFS。
可以配置多个 RAID 0 阵列并使它们在 ZFS 中工作,但这会影响热插拔功能(因此需要在磁盘故障/更换时重新启动)。我很好奇什么 SAS/SATA 控制器被推荐用于自制的 ZFS 存储解决方案。此外,电池供电的写缓存 (BBWC) 对 ZFS 存储有什么影响?
我有一个 CentOS 5 VMWare 服务器通过 NFS 连接到 OpenSolaris 2009.06 机器,该机器保存磁盘映像。我的虚拟机似乎受到缓慢 IO 的限制,所以我想尽我所能来优化连接。
我不确定在生产系统上测量吞吐量的最佳方法,但使用dd bs=1024k count=400显示本地 (OpenSolaris) 写入 ~1.6GB/s 和远程 (CentOS) 写入 ~50MB/s 的一些不科学测试。我想这些比我实际得到的要低,因为目前有 7 个虚拟机正在连接上运行。
目前,这两台机器是直连的 gigE,在两个 NIC 上都启用了巨型帧 (MTU=9000)。除此之外,没有进行任何优化。NFS 挂载/导出使用默认值。
我应该从哪里开始转动旋钮以提高性能?
目前,我们使用 iSCSI SAN 作为多个 VMware ESXi 服务器的存储。我正在研究将 Linux 服务器上的 NFS 目标用于其他虚拟机。如果可以提供显着优势,我也愿意使用替代操作系统(如 OpenSolaris)。
哪种基于 Linux 的文件系统支持非常大的连续文件(如 VMware 的磁盘映像)?或者,人们是如何在 OpenSolaris 上找到 ZFS 来处理此类工作负载的?
(这个问题最初是在 SuperUser 上提出的;如果您知道如何迁移,请随时在此处迁移答案)。
我在带有 12 个 Midline (7200 RPM) SAS 驱动器的 HP ProLiant DL180 G6 上运行的辅助存储服务器上使用 Nexentastor。该系统具有 E5620 CPU 和 8GB RAM。没有 ZIL 或 L2ARC 设备。
上周,我创建了一个 750GB 的稀疏 zvol,启用了重复数据删除和压缩,以通过 iSCSI 共享到 VMWare ESX 主机。然后我创建了一个 Windows 2008 文件服务器映像并将大约 300GB 的用户数据复制到 VM。对系统满意后,我将虚拟机移动到同一池中的 NFS 存储。
在 NFS 数据存储上启动并运行我的 VM 后,我决定删除原来的 750GB zvol。这样做会使系统停滞。访问 Nexenta Web 界面和 NMC 停止。我最终能够获得原始外壳。大多数操作系统操作都很好,但系统挂在zfs destroy -r vol1/filesystem命令上。丑陋的。我发现了以下两个 OpenSolaris bugzilla 条目,现在知道机器将变砖一段未知的时间。已经 14 小时了,所以我需要一个能够重新访问服务器的计划。
http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6924390
和
将来,我可能会采纳其中一种 buzilla 解决方法中给出的建议:
Workaround
Do not use dedupe, and do not attempt to destroy zvols …Run Code Online (Sandbox Code Playgroud) 我在 Joyent 的 Base64 1.8.1 SmartOS 映像上的 SMF(服务器管理工具)下运行服务器进程。
对于那些不熟悉 SmartOS 的人,它是 IllumOS 和 KVM 的基于云的发行版。但本质上它就像 Solaris 并且继承自 OpenSolaris。因此,即使您没有使用过 SmartOS,我也希望能在 ServerFault 上利用一些 Solaris 知识。
我的问题是我希望允许非特权用户重新启动他们拥有的服务。我已经通过使用 RBAC 以及向/etc/security/auth_attr我的用户添加授权并将该授权与我的用户相关联来确定如何做到这一点。
然后,我将以下内容添加到服务的 SMF 清单中:
<property_group name='general' type='framework'>
<!-- Allow to be restarted-->
<propval name='action_authorization' type='astring'
value='solaris.smf.manage.my-server-process' />
<!-- Allow to be started and stopped -->
<propval name='value_authorization' type='astring'
value='solaris.smf.manage.my-server-process' />
</property_group>
Run Code Online (Sandbox Code Playgroud)
这在导入时效果很好。我的非特权用户可以重新启动、启动和停止自己的服务器进程(这是用于自动代码部署)。
但是,如果我导出 SMF 清单,此配置数据就会消失……我在该部分中看到的只是:
<property_group name='general' type='framework'>
<property name='action_authorization' type='astring'/>
<property name='value_authorization' type='astring'/>
</property_group>
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会这样?是我的语法错误,还是我只是错误地使用了 SMF?
在 Solaris 或 OpenSolaris 上可以找到哪些在典型 Linux 发行版上不可用的有用命令、工具或技巧?
http://hub.opensolaris.org/bin/view/Main/downloads
我看到 2009.06 的下载和 2010.03 的开发下载。(当前月份是 2010-12)
这是否意味着自从 Oracle 收购 Sun 之后,OpenSolaris 就停滞不前了?(迄今为止)
我计划在 opensolaris 之上构建一个文件服务器,使用 raid z1 或 z2。是否可以稍后一次升级磁盘并立即访问增加的存储空间?还是只有当 raid z 中的每个设备都升级时才能使用增加的存储空间?
另外,常规 zpools 如何处理不同大小的设备?我没有找到关于这个的确定答案。我可能必须首先在 zpool 中使用两个不同大小的驱动器,而没有任何冗余。我从一些人那里听说,每个驱动器都被视为最小磁盘的大小(在 zpools 和 raid zs 中),但 zfs 文档似乎暗示并非如此。
opensolaris ×10
zfs ×7
nfs ×3
solaris ×3
raid ×2
centos ×1
hp-proliant ×1
illumos ×1
linux ×1
nexenta ×1
smartos ×1
smf ×1
tcpip ×1
vmware-esxi ×1