在数据中心最近发布的一个Unixpipe理员工作中,列出的要求是在数据中心设置中移动实时文件。 这是什么意思,如何移动文件?
移动活动文件…据我所知,没有理智的pipe理员会试图这样做(不是大多数pipe理员是完全理智的)。 通常文件是locking的,所以你不能移动它们,直到操作系统或应用程序放行,如果你移动一个活动文件,那么你将有一些应用程序崩溃和/或损坏的数据。
有可能是有人搞砸了这个广告,或者是某个不知道他们在说什么的人发布的(或者是以前的工作持有人为什么要尖叫)。
或者他们是模糊的,意味着虚拟机或故障转移服务的实时迁移,集群等等,但是广告使得这种纯粹的推测。
只有当你对这个职位感兴趣时,你才能做的事情是适用的,当面试时问他们究竟是什么意思,因为你不知道任何正在使用的文件的安全方式,没有额外的故障转移机制或虚拟机的实时迁移来实现这一点。 他们是否意味着可能安装一个新的服务器,并退役当前的生产服务器?
它是活文件还是实时图像?
他们可能会谈论虚拟机器,从一个运行的系统与某个平台移动到另一个,而不会中断这些图像。
如果是活文件,那么他们基本上是在谈论一个高可用性解决scheme; 如果文件不必是100%的最新,但你需要防止腐败,然后像fssnap需要使用。
我同意其他答案,这个问题过于模糊,需要澄清。
假定移动“活文件”意味着移动正在读取或写入的进程正在打开的文件; 给定一些参数通常不是一个问题。 当一个程序打开一个文件时,通常通过引用一个文件名来完成。 对于我们的例子,我们使用“/var/log/myimportant.log”。 这个文件名实际上只是指向磁盘上某个inode的指针。 一旦进程打开了这个文件,把这个目录入口删除到inode,或者添加一个指向这个inode的新目录入口并不重要。 移动一个文件通常就是这样的:删除一个目录到一个inode并添加另一个。 我经常说而不是总是这样,因为如果你试图将文件从一个文件系统移动到另一个文件系统,这是不正确的。
请注意,这是日志旋转的工作原理。 一个进程可能正在写入的文件被移动。 该过程继续写入文件,即使它被移动。 然后过一段时间,重新启动过程或发送一个HUP信号,触发过程在原始位置打开一个新文件。