可怕的情况-由多个独立的OS实例同时安装的文件系统


14

我如何安全地摆脱这种情况?

详细信息如下:

Xen服务器已将块设备分配给VM。但是这些设备也已安装在Xen内部。

实际上,这些块设备中的44个已像这样安装。更糟的是,每个物理设备在4条路径上可见,并且每个都安装在单独的安装点上。换句话说,设备实际上每个安装5次。

VM guest虚拟机操作系统通过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已挂起。关闭它们后,由于文件系统损坏,它们将无法再次启动。主/生产VM仍在运行,并且其上的数据库仍在运行,但这显然是定时炸弹。客户正在尝试在另一台服务器上的另一台VM上重建环境,但是在配置某些组件时遇到了问题,因此我们正在等待...

无论如何,我觉得到目前为止,答案都还不只是“最佳实践总是正常关闭”,而且我希望得到一些更具体的信息……无论如何,我认为这种情况可能需要更加谨慎思维。关闭会导致未完成的IO(尤其是来自虚拟机管理程序的文件系统元数据更新)同步并可能导致主要的文件系统损坏吗?


1
现在,在“关闭”之前进行的任何备份都可能只是备份损坏的数据,尽管在这种情况下,文件系统元数据更可能是损坏的,而不是文件内容。
2013年

恐怕无论如何您都会丢失至少一些数据。物理上关闭主机或强行终止VM可能会造成混乱的结果(即,即使那些仅安装一次的文件系统)。我可能会尝试尽可能干净地终止所有操作,以最大程度地减少损失。当然要确保它不会再次发生。
彼得

为了防止这种情况,IIUC您可能会尝试在来宾打开 dom0 在dom0中设置设备的权限,但是由于fs权限(在设备文件上)可以被root跨越(除非您有修补的内核),所以它可能不需要帮助。
彼得

1
关于您的后脚本:如果设备通过多个路径可见,那么内核可能甚至都不知道它们都是同一设备,那么它怎么“保留”它呢?至于将设备从dom0导出到多个domU,它使您可以执行此操作,因为您可能实际上是故意这样做的(例如,使用支持该文件系统的文件系统,或在各处安装只读文件)。
Celada 2013年

@Celada我对此表示怀疑,但是可以使用“锁定”设备的方法:PowerPath应该(在Solaris的情况下)保留设备的所有父路径(在初始化时)。另外,SCSI“保留”命令由目标设备管理,因此一旦保留了目标,它就应拒绝允许针对该设备的任何路径进行保留。至少那是我有限的理解。
2013年

Answers:


2

如果从单个安装点写入磁盘,则不会造成任何危害。进行彻底关机,(如果需要,请从挂起状态备份)修复安装座。除了Dom0上几乎不需要的应用程序外,不要运行其他任何程序。如果OTOH,分区是从多个路径写入的,那就是BAD,并且到第二步会变得更糟。拔插头。


0

我没有具体的原因,但是我的直觉告诉我,以下可能是最好的方法:

  1. 关闭应用程序。
  2. 通过网络将所有数据从VM复制到备份位置。
  3. 从VM内卸载文件系统。
  4. 关闭虚拟机。(现在,该主机上仅运行一个VM)。
  5. 确保没有将domU设置为自动启动。
  6. 拔出主机上的电源,以防止管理程序执行任何“关闭”操作,同步未完成的I / O等。
  7. 启动虚拟机,希望虚拟机管理程序本身能够承受强大的电源。
  8. 如果失败,请重新构建环境。(VM引导磁盘是基于文件的,但是数据安装点位于分配为块设备的外部磁盘上)
  9. 检查系统管理程序是否正在挂载属于domU的任何文件系统。在开始任何domU之前先卸载它们)
  10. 关闭KDE自动挂载。
  11. 启动VM并强制执行完整的FS检查。

11的替代方法:启动VM并在没有完整fsck的情况下挂载文件系统。

原因是我不希望Xen虚拟机管理程序有更多必要的机会导致domU文件系统损坏。


0

我不是Xen专家,也没有经验。但是,如果我在您的位置,我的方法将是:首先,我知道我可能会丢失数据(甚至可能丢失所有数据);其次,我将尝试创建快照,然后挂起VM,将其还原到安全的不同环境中。
我不想给你虚假的希望,但是我想如果你能恢复任何东西,你会很幸运。

警告:遵循这些建议可能会使您丢失所有数据。这取决于您是否值得冒险。

幸运的是,您的应用程序仍在运行,因为它们使用的数据全部在易失性内存中。您应该尝试利用这种情况(尝试评估每个应用程序是否可能出现这种情况),并在应用程序提供此类功能时将实时数据导出到网络共享中。如果磁盘上有任何数据,则find由于磁盘数据已更改/损坏,此导出功能可能像语句中那样被“锁定” 或崩溃(并使应用程序或OS崩溃)。

然后,您可以尝试执行实时快照,如以下文章中的说明:在Xen中创建快照。我会逐字节快照,尽管它可能会像您的find命令那样卡住...但是,我不会给予太大希望。

在执行上一个命令之前,您应该从Citrix阅读本文档,该文档有助于理解Xen(PDF)中的快照

祝你好运。


谢谢。客户确实有数据库的导出。我认为他们只是使用FTP将其从VM中删除,但是可以挂载网络共享并直接导出到该共享。
2013年

我一直在想先挂起VM,然后将完整副本移交给另一台主机,然后尝试a)从睡眠中恢复它,或b)启动它,然后重新启动和fsck。这样做的原因是,由于我仍在原始主机上保留了挂起的VM,因此如果副本不能在另一台主机上工作,我也许可以恢复该虚拟机。
2013年

同样,FWIW返回备份的问题是担心最近几个月进行的所有备份都已损坏。
2013年

@Johan这很可能是对的,大多数(如果不是全部)备份(由于发生问题)可能已损坏。对于数据库导出,可能同样如此。再次祝您好运,您将需要它!
惠更斯州2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.