我终于设法归结了一个我已经挣扎了几个星期的问题。我使用带有“授权密钥”的 SSH 远程运行命令。一切都很好,除非我在 while 循环中进行。循环在使用 ssh 命令完成任何迭代后终止。
很长一段时间我都认为这是某种 ksh 的怪异行为,但我现在发现 bash 的行为实际上是相同的。
一个重现问题的小示例程序。这是从一个更大的实现中提炼出来的,它拍摄快照并在集群中的节点之间复制它们。
#!/bin/bash
set -x
IDTAG=".*zone"
MARKER="mark-$(date +%Y.%m.%d.%H.%M.%S)"
REMOTE_HOST=sol10-target
ZFSPARENT=rpool
ssh $REMOTE_HOST zfs list -t filesystem -rHo name,mounted $ZFSPARENT | grep "/$IDTAG " > /tmp/actionlist
#for RMT_FILESYSTEM in $(cat /tmp/actionlist)
cat /tmp/actionlist | while read RMT_FILESYSTEM ISMOUNTED
do
echo ${RMT_FILESYSTEM}@${MARKER}
[ "$ISMOUNTED" = "yes" ] && ssh $REMOTE_HOST zfs snapshot -r ${RMT_FILESYSTEM}@${MARKER}
echo Remote Command Return Code: $?
done
Run Code Online (Sandbox Code Playgroud)
(请注意,根据 zfs list "-H" 选项的行为定义,grep 搜索表达式中有一个 TAB 字符。)
我的示例有一些 ZFS …
我如何安全地摆脱这种情况?
详情如下:
xen 服务器已将块设备分配给 VM。但这些设备也已经安装在 Xen 中。
事实上,这些块设备中有 44 个是这样安装的。更糟糕的是,每个物理设备在 4 条路径上可见,并且每条路径都安装在单独的挂载点上。换句话说,每个设备实际上安装了 5 次。
VM 来宾操作系统通过 PowerPath 伪设备(作为 phy:块设备分配给 domU)查看路径
一些设备被格式化为 ext2 和 reiserfs。
无需向我解释这里涉及的文件系统损坏风险。
恐怕只是卸载文件系统也有可能造成损坏,觉得此时拔掉主机的电源,是最安全的选择。
请注意,所有 VM 中的应用程序(大部分为 Oracle 数据库)仍在运行和使用中。
我在调查 dom0 上的高 CPU 使用率时发现了这一点。有一个无法杀死的“查找”进程,cwd -> /media/disk-12 从/dev/sdf1 挂载,属于/dev/emcpowerr
在有人问之前,我曾经见过进程无法被杀死并继续使用 CPU 和 RAM(与失效/僵尸进程不同)时,是当有未完成的提交 I/O,例如同步返回但尚未物理上磁盘时. 更常见的是,这发生在磁带 I/O 上。
建议!?
PS我希望设备在安装后被“保留”,以防止这种事情?或者这在 Linux 上是不可能的?
编辑:首先,我确信管理程序中的 KDE)是罪魁祸首。看起来 KDE 正在安装它可以在日志记录中创建桌面图标的设备。然而,同样的事情不会发生在其他 Xen 服务器上,但所有其他服务器都运行更旧版本的 SLES 和 KDE ...... V4 似乎是有问题的,3.4 表现更好)。
此外,两个非关键虚拟机已挂起。关闭它们后,由于文件系统损坏,它们将无法再次启动。主/生产虚拟机仍在运行,其上的数据库仍在运行,但显然这是一个定时炸弹。客户正尝试在另一台服务器上的另一台 VM 上重新构建环境,但在配置某些组件时遇到问题,因此我们正在等待...
无论如何,我觉得到目前为止没有一个答案不仅仅是“最佳实践总是优雅地关闭”而且我希望得到更具体的东西......无论如何,我觉得这种情况可能需要更加小心思维。关闭是否会导致未完成的 IO(特别是来自管理程序的文件系统元数据更新)同步并导致潜在的主要文件系统损坏?
我的工作代理服务器需要使用 Microsoft AD 域用户凭据进行身份验证。每个人都知道它是如何工作的:如果您登录 Windows 工作站,您的基于“Internet Explorer”浏览器的 Internet 访问请求将使用您的域登录凭据自动进行身份验证(和识别)。
我发现 Firefox 也可以对这些代理服务器进行身份验证,并且长期以来一直认为它们“做了一些特别的事情”。最近,一位同事在 VM 中安装了 Linux Mint,令我惊讶的是他正忙于从 Internet 获取更新。当我问他是如何得到它的时候,他耸了耸肩说“它只是奏效了”
这促使我重新查看代理设置。我运行 Kubuntu(混合使用 G* 和 K* 应用程序,但我只在我确信 GTK 应用程序比任何 K* 应用程序都好得多时才使用 GTK 应用程序)
我仍然有一个在 VirtualBox VM 中运行的 Windows 来宾副本,主要用于打印和访问内部/公司网站(这都需要通过 MS 域凭据进行身份验证和识别)以及每隔几天更改我的域密码.
因此,如果我可以通过代理服务器让我的 [部分/大部分/全部] Linux 应用程序工作,那将会非常有帮助。我最迫切的需求是让 Akregator 和 Muon 能够工作。其他可能受益的应用程序是一些自动更新的应用程序(例如 Virtual Box Extensions)或将自己包裹在浏览器中(想到获取更多主题/墙纸/等,以及偶尔使用 wget)
SSH/SCP 客户端无需身份验证即可通过防火墙工作。
什么是配置它的正确方法(工具和/或程序),最好是在一个位置,因为必须在多个位置维护我的密码是锁定我的帐户的秘诀:-/
哦,如果我能拥有相当于 Firefox“快速代理”代理禁用/启用实用程序,例如单击以启用或禁用代理的使用,而无需退出并重新登录,那将是梦想成真,取决于我在哪个网络上。实际上考虑一下,应该可以训练一个实用程序来查看您的 IP 地址并知道何时需要使用代理!但我离题了。
我想运行一个可以动态添加身份验证并在需要时转发到上游代理服务器的本地代理服务器可能是唯一真正的解决方案。
我正在寻找一种设置计算机的方法,以便对磁盘进行分区,以便多引导到两个操作系统:Linux 和 Windows。
无论启动哪个,我都希望另一个可以作为 VM 来宾访问,即当启动到 Linux 时,Windows 分区必须可以作为 VM 启动。
我首选的虚拟化软件是 VirtualBox,但如果没有办法,我会考虑另一种选择。它甚至不必在每个操作系统下都使用相同的虚拟化软件。
如何对磁盘进行分区?我应该使用还是应该避免 EFI 标签?我应该按什么顺序安装操作系统?我应该使用哪些引导加载程序,我是否可以毫不费力地维护这些引导加载程序。当特定操作系统作为主机/客户操作系统加载时,安装的虚拟化软件设备驱动程序和客户附加组件/驱动程序是否会优雅地退出?是否有任何特定版本的 Windows 不可能/几乎不可能?
对于奖励积分,我想添加 Solaris 和其他 Linux 发行版。
PS 这个要求的主要原因是每个操作系统下都能运行虚拟化软件!有时我想研究一下不同主机操作系统下虚拟化之间的差异。
disk ×1
domain ×1
filesystems ×1
hard-disk ×1
http-proxy ×1
input ×1
linux ×1
proxy ×1
shell-script ×1
ssh ×1
unmounting ×1
virtualbox ×1
windows ×1
xen ×1