在 Solaris 11 发布之前,我在 Solaris 11 Express 上运行了一个 NAS/SAN 机器。包装盒是带有 D2700 的 HP X1600。总共 12 个 1TB 7200 SATA 磁盘,12 个 300GB 10k SAS 磁盘在单独的 zpool 中。总内存为 30GB。提供的服务包括 CIFS、NFS 和 iSCSI。
一切都很好,我有一个 ZFS 内存使用图,如下所示:
大约 23GB 的相当健康的 Arc 大小 - 利用可用内存进行缓存。
但是,当它出来时,我升级到了 Solaris 11。现在,我的图表如下所示:
的部分输出arc_summary.pl
是:
System Memory:
Physical RAM: 30701 MB
Free Memory : 26719 MB
LotsFree: 479 MB
ZFS Tunables (/etc/system):
ARC Size:
Current Size: 915 MB (arcsize)
Target Size (Adaptive): 119 MB (c)
Min Size (Hard …
Run Code Online (Sandbox Code Playgroud) 我设置了一台 Solaris Express 11 机器,在 RAID 控制器后面有一些相当快的 HDD,将设备设置为启用压缩的 zpool,并向其中添加了一个镜像日志和 2 个缓存设备。数据集作为 FC 目标公开以与 ESX 一起使用,我已经用一些数据填充了它以进行处理。L2ARC 部分填满(由于某种原因不再填满),但我几乎看不到它的任何用途。zpool iostat -v
显示过去从缓存中读取的内容不多:
tank 222G 1.96T 189 84 994K 1.95M
c7t0d0s0 222G 1.96T 189 82 994K 1.91M
mirror 49.5M 5.51G 0 2 0 33.2K
c8t2d0p1 - - 0 2 0 33.3K
c8t3d0p1 - - 0 2 0 33.3K
cache - - - - - -
c11d0p2 23.5G 60.4G 2 1 33.7K 113K
c10d0p2 23.4G 60.4G 2 1 34.2K 113K
Run Code Online (Sandbox Code Playgroud)
和L2ARC启用arcstat.pl脚本显示了L2ARC 100个%未命中当前工作负载: …
在使用 zfs 时,我看到某些现有文件系统的“zfs get all”会列出在文件系统名称中添加“%”(百分号)的属性。像这样:
# zfs list
...
test_zpool2/test_vol_91 564M 19.4G 564M /vol/test_zpool2/test_vol_91
# zfs get all
...
test_zpool2/test_vol_91 version 6 -
test_zpool2/test_vol_91 vscan off default
test_zpool2/test_vol_91 xattr on default
test_zpool2/test_vol_91 zoned off default
...
test_zpool2/test_vol_91% creation Wed Nov 19 17:01 2014 -
test_zpool2/test_vol_91% mountpoint /vol/test_zpool2/test_vol_91 -
test_zpool2/test_vol_91% share.* ... inherited
test_zpool2/test_vol_91% zoned off default
Run Code Online (Sandbox Code Playgroud)
我一直无法找出这是什么原因,手册页中没有提到任何内容。有人知道吗?
更多输出
# zfs list -H
rpool 11.7G 7.60G 4.64M /rpool
rpool/ROOT 9.10G 7.60G 31K legacy
rpool/ROOT/solaris 9.10G 7.60G 7.50G …
Run Code Online (Sandbox Code Playgroud) 我对 ZFS 的经验通常是它可以正常工作,所以我希望答案是,这不是问题——但我有一个数据池,如果它发生故障,它会毁掉我的一月,所以我想仔细检查一下。
这个问题实际上可能在涉及单独数据池的两种不同情况下出现。现在我正在处理第一个,但我也想知道第二个:
rpool
)失败了,但是数据池的存储是好的,所以你想从备份中恢复系统盘,但继续使用数据池的实时存储。rpool
),但数据池存储在处于“独立”模式、RDM 等的磁盘上,因此将不会被回滚。在这两种情况下,当 Solaris 重新启动时,它会看到一个它知道的数据池,但它处于它从未(据它记得)放入的状态。
我主要只关心在系统磁盘回滚之前系统被彻底关闭的情况,以及系统在它被回滚到的映像之前被彻底关闭的情况。我希望在运行状态之间切换可能会有点棘手。
还要注意,在我的特殊情况下,池的存储几何结构和存储路径没有改变。同样,如果他们有的话,我希望这会更棘手。
我甚至不会与Windows和NTFS会问这个,因为这是一个比较简单的解耦系统,所以很难看出为什么它不会工作。但是,似乎 Solaris 将某种池元数据保留在带外,正如您应该zpool export
以及zpool import
在系统之间移动池时所证明的那样(由于 VMware,我从未以这种方式这样做过)。我对此元数据及其用途的了解有限,因此我很难推断这种情况下的影响。(对此的解释会很棒!)
我实际上仍然可以访问预回滚系统。它位于由 HP SmartArray 支持的 VMFS 数据存储中,在一次不幸的预防性维护磁盘更改(由于 SmartArray 比 ZFS 更笨拙而导致数据丢失)后,该 SmartArray 发出了 1716 POST 警告。所有重要的虚拟机看起来仍然很好,并且对其文件系统的扫描没有发现任何错误,但我计划从最近的备份中恢复阵列,因为我有理由怀疑 ESXi 会默默地将坏扇区归零,而不是将错误传递给来宾,所以我不想冒险一些归零的部门潜伏在某处稍后咬我的屁股。
对于 Solaris VM,我不必担心归零扇区,因为 ZFS 会捕捉到这一点,但大多数其他 VM 使用哑文件系统。不过,备份是整个 VMware 数据存储的映像,因此修复它们也会回滚 Solaris VM。实际上,我rpool
对这个 VM进行了清理并没有发现任何错误,所以如果我愿意,我可以将它的 VMDK 藏在其他地方并在回滚后将其复制回来,然后整个问题就是没有实际意义。如果没有人回答,我想这就是我会做的,哈哈。但这是我想知道一段时间的事情,所以我仍然会问。
那么,问题是,我可以继续回滚系统盘的存储并完成它吗? 或者我是否必须从预回滚系统导出池,回滚,在附加存储之前删除池,然后附加存储并导入池?我不喜欢后者的声音,部分原因是该池同时提供 CIFS 和 …
我将如何决定使用哪一个?
我们计划运行我们自己的 http/https 网络服务器并运行 sendmail smtp 服务器。我们将使用 ZFS 作为引导分区,并在可能的情况下使用 ZFS 加密(除操作系统外的所有地方)。
除了用户、组和权限之外,我们不会使用 UNIX 用户安全功能。就像没有基于角色的安全性或任何其他东西一样。为了锁定,我们将创建我们自己的程序,该程序以 root 身份运行,并且可以通过我们自己的设备登录,由较低权限的用户进行操作。
Solaris 11 中存在的 Solaris 10 缺少哪些功能?(假设对于 Solars 10 和 11,截至本文的最新更新都是 9/2010)
当我输入“ifconfig | more”或“ifconfig | less”时,Solaris 上的输出不会分页(我习惯于 Linux 和 FreeBSD)。有没有办法在 Solaris 11 上做到这一点?
在 Solaris 10 中,我可以使用以下命令配置(和审计) arp_cleanup_interval 变量:
$ ndd -get /dev/arp arp_cleanup_interval
300000
Run Code Online (Sandbox Code Playgroud)
在 Solaris 11(速成版和发行版)中,相同的命令返回“未知属性”错误:
$ ndd -get /dev/arp arp_cleanup_interval
operation failed: Unknown property
Run Code Online (Sandbox Code Playgroud)
有谁知道此变量是否已更改或已从 Solaris 11 中删除?