标签: omnios

OmniOS/ZFS/Windows 7:对于 CIFS/SMB 上的所有文件大小,应用程序中的“另存为”延迟 5 秒

情况:

在运行 OmniOS r151018 (95eaa7e) 的单个文件服务器上发生了以下奇怪的问题,该服务器通过 SMB 向 Windows 和 OS X 客户机提供文件。

通过 SMB 共享上的“另存为...”对话框窗口保存某些文件(.docx、.xlsx、某些图像)会导致大约 3 到 5 秒的延迟,应用程序根本没有响应,之后文件正常保存。

该问题确实“一夜之间”发生,没有对服务器做任何事情,但很难确定确切日期,因为用户投诉只在第一次发生后的一段时间内出现。服务器重新启动后,镜像根池的一个 vdev 不可用,但仔细检查并没有发现设备上的任何故障,并将其重新附加到池中。问题仍然存在。

一些观察:

  • 它发生在所有 Windows 7 客户端上
  • 它发生在所有文件大小
  • 它发生在这台机器的所有共享上,无论权限如何
  • 它发生在从另一台服务器通过 iSCSI 在主机上导入的更快的存储
  • 通过 GBit 以太网的正常复制速度为 110 MB/秒
  • 数据和根池似乎没问题
  • 它不会发生在其他文件服务器上
  • 当文件保存在本地,然后通过资源管理器复制时不会发生这种情况
  • 它不会在 OS X 上发生(只能用 OpenOffice 测试)
  • dmesg显示了NOTICE: bge0: interrupt: flags 0x0 - not updated?具有不同值的多个计数,但这也是之前的情况并且没有伤害

进一步的想法/计划:

由于没有找到明确的错误消息,我可能需要进行一些反复试验以寻找原因。我会考虑的一些事情(结果以斜体显示):

  • 用 Intel 卡替换 Broadcom 网卡=> 没有区别
  • 用 SATA SSD 替换根池(目前 SLC 内存 U 盘可以正常工作超过 3 年)=> …

zfs file-server server-message-block microsoft-office-2010 omnios

9
推荐指数
1
解决办法
853
查看次数

zfs 上的不完整递归快照

我在我们的一个系统上安装了一堆新磁盘,并想将现有池转移给它们,所以我所做的是:

zfs snapshot -r old-pool@replicaton
zfs send -R old-pool@replication | mbuffer -m 1G  | zfs receive -F -d  new-pool
Run Code Online (Sandbox Code Playgroud)

但是在操作进行到一半时,我收到了来自 的警告zfs send,抱怨快照old-pool/some/fileset@replication不存在......

当我去调查时,我发现确实zfs snapshot -r忽略了在old-pool/some/fileset. 所以我跑了

zfs list -r -o name old-pool | \
xargs -n1 perl -e 'system "zfs","list",$ARGV[0]."\@replication"'
Run Code Online (Sandbox Code Playgroud)

并发现大约有 10% 的文件集缺少此快照...

然后我继续单独创建丢失的快照,并且工作正常。

此后我重复了实验并再次发现了同样的问题......

知道这怎么可能吗?

这是发生在omios r151010

zfs illumos omnios

7
推荐指数
1
解决办法
613
查看次数

为什么 ZFS 重新同步器会扫描整个池?

我有一个 zpool,我刚刚更换了一个故障磁盘,并开始重新同步到新磁盘。

我不明白的是,zpool status当 vdev 的大小为 ~30TB 时,为什么说它要扫描 129TB。当我查看时,iostat -nx 1我可以看到 vdev 中的 5 个磁盘读取量很大,而新磁盘的写入量也很大。所以 zfs 不会像它所说的那样扫描所有数据。

# zpool status tank3 |head
  pool: tank3
 state: ONLINE
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
  scan: resilver in progress since Thu Apr 30 09:59:15 2015
    61.2T scanned out of 129T at 3.03G/s, 6h23m to go
    946G resilvered, 47.34% …
Run Code Online (Sandbox Code Playgroud)

hardware solaris zfs hard-drive omnios

7
推荐指数
2
解决办法
2680
查看次数

如果cfgadm状态断开连接,如何在Solaris中自动检测插入的SATA磁盘?

我的目标是在结合 SATA 磁盘的小型 OpenSolaris NAS(在 HP Microserver N54L 上运行 OmniOS + napp-it)上自动执行备份程序。

背景:

我安装了其中一个 5.25" -> 3.5" 无托架硬盘托盘,其中包含一个简单的 SATA 或 SAS/SATA 背板,带有一个端口、一个电源按钮和一些 LED(电源和硬盘活动)。为了备份多个 HDD(每周轮换一个,异地存储),我编写了一个脚本,用于zfs send/recv转储完整的主池,包括所有快照(仅更新新块)。当我手动启动它时,这个脚本工作正常。

我想进一步自动化该过程,因为 NAS 没有直接连接 VGA 或串行控制台,插入磁盘、返回桌面系统、登录 Web 界面或 SSH 并手动启动脚本很繁琐. 通过 cron 作业定时启动不是一种选择,因为备份的日期可能略有不同(忘记磁盘、假期等)。所以备份应该在插入磁盘后立即开始。

问题:

在我cfgadm用来连接 + 配置和稍后取消配置 + 断开磁盘的脚本中。如果我只插入磁盘并且它旋转起来,我就无法知道磁盘在那里。我已经考虑过的可能解决方案:

  1. 通过使用cfgadm -f -c connect和检查错误结果,每 x 分钟连续探测新磁盘和 zpool 。不是很优雅。
  2. /var/adm/messages每 x 分钟检查一次并搜索设备路径或 AHCI。不可能,因为只有在手动连接设备时才会写入消息。
  3. 使用iostat -En. 显示磁盘,但我必须 grep 获取确切的序列号,因为它没有列出端口信息。还需要每 x 分钟完成一次。
  4. 使用cfgadmSELECT 语法过滤插座状态。不起作用,因为插入不会触发任何东西(也许背板太便宜了)。
  5. 识别机柜的电源开/关。会好的,但我无法弄清楚如何实现这一点。
  6. 重新映射电源按钮或向机器添加另一个按钮。可以工作,但我也不知道如何做到这一点。

我想我需要两件事:

  • 一种结合识别磁盘和端口状态的可靠方法(因此仅检测到正确插槽中的正确磁盘)
  • 一种注册此检测并触发事件的方法(启动 …

solaris hard-drive hba illumos omnios

5
推荐指数
1
解决办法
1526
查看次数

我的 ZFS SMB 共享在哪里?

我们运行这对提供文件存储的 OpenSolaris 服务器。它们主动/被动运行,并通过每分钟左右的快照复制保持同步。最初,他们都运行 OpenIndiana,但由于 OI 的开发似乎停滞不前,我们决定切换到开发更积极的 OmniOS。

我们首先升级了备份服务器。一切都按计划进行,除了我看不到通过 SMB 从系统共享的 zfs 文件系统。

文件系统上启用 SMB 共享:

NAME        PROPERTY  VALUE                             SOURCE
zpool/data  sharesmb  abe=true,name=data,guestok=false  local
Run Code Online (Sandbox Code Playgroud)

smb/server 服务上线,以及其依赖:

fmri         svc:/network/smb/server:default
name         smbd daemon
enabled      true
state        online
next_state   none
state_time   Mon Mar  7 14:31:29 2016
logfile      /var/svc/log/network-smb-server:default.log
restarter    svc:/system/svc/restarter:default
contract_id  16253
dependency   require_any/error svc:/milestone/network (online)
dependency   require_all/error svc:/system/filesystem/local (online)
dependency   require_all/none svc:/system/idmap:default (online)
dependency   require_all/none svc:/network/smb/client:default (online)
Run Code Online (Sandbox Code Playgroud)

Sharemgr 知道共享

default nfs=()
smb smb=()
        * /var/smb/cvol
                  c$=/var/smb/cvol       smb=(abe="false" guestok="false")      "Default Share"
zfs smb=() nfs=() …
Run Code Online (Sandbox Code Playgroud)

solaris zfs opensolaris server-message-block omnios

5
推荐指数
1
解决办法
1887
查看次数