在类 Unix 系统上移动实时文件

在类 Unix 系统上移动实时文件

最近,数据中心招聘一名通用 Unix 管理员,其中列出的要求是在数据中心环境中移动实时文件。这是什么意思?如何移动实时文件?

答案1

移动实时文件...据我所知,没有一个理智的管理员会尝试这样做(并不是说大多数管理员都是完全理智的)。通常文件是锁定的,所以你不能移动它们,直到操作系统或应用程序允许它们移动,如果你移动实时文件,那么你将面临一些应用程序崩溃和/或数据损坏的情况。

很有可能,要么是有人搞砸了广告,要么是某个不知道自己在说什么的人发布的(或者这很好地暗示了为什么前任员工尖叫着跑掉了)。

或者他们含糊其辞,指的是虚拟机的实时迁移或故障转移服务、集群等,但广告只是纯粹的猜测。

如果您对这个职位感兴趣,您唯一能做的就是申请,然后在面试时询问他们到底是什么意思,因为您不知道有什么安全的方法可以移动正在使用的文件,而无需额外的故障转移机制或虚拟机实时迁移来实现这一点。他们是不是说可能安装一台新服务器并停用当前正在生产的服务器?

答案2

它是实时文件还是实时图像?

他们可能正在讨论如何将虚拟机从一个具有特定平台的运行系统实时移动到另一个运行系统而不会中断这些图像。

答案3

如果是实时文件,那么他们基本上是在谈论 HA 解决方案;如果文件不必 100% 更新,但你需要防止损坏,那么就像快照需要使用。

答案4

我同意其他答案的观点,认为这个问题过于模糊,需要澄清。

假设移动“活动文件”意味着移动当前由正在读取或写入它的进程打开的文件;给定一些参数,这通常不是问题。当程序打开文件时,它通常通过引用文件名来执行此操作。对于我们的示例,我们使用“/var/log/myimportant.log”。此文件名实际上只是指向磁盘上某个 inode 的指针。一旦进程打开此文件,删除 inode 的目录条目或添加指向同一 inode 的新目录条目都无关紧要。移动文件通常就是这样:删除 inode 的一个目录条目并添加另一个。我说经常而不是总是,因为如果您尝试将文件从一个文件系统移动到另一个文件系统,情况就不如此。

请注意,这就是日志轮换的工作原理。进程可能正在写入的文件被移动。即使文件被移动,进程仍会继续写入文件。然后,一段时间后,进程要么重新启动,要么发送 HUP 信号,触发进程在原始位置打开一个新文件。

相关内容