服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

如何将数据存储在随机切断电源的机器上

我有一个物理机主机上运行的虚拟机(Debian)。 虚拟机作为它经常在本地networking上接收的数据的缓冲区(这个数据的周期是0.5s,因此吞吐量相当高)。 收到的任何数据都存储在虚拟机上,并通过UDP重复转发到外部服务器。 一旦外部服务器(通过UDP)确认已收到数据包,原始数据将从虚拟机中删除,而不会再次发送到外部服务器。 连接虚拟机和外部服务器的互联网连接是不可靠的,这意味着它可能一度停机数天。 托pipe虚拟机的物理机器随机每天多次切断电源。 没有办法知道何时会发生这种情况,并且不可能为系统添加UPS,电池或类似的解决scheme。 最初,数据存储在虚拟机上基于文件的HSQLDB数据库上。 然而,频繁的停电最终会导致数据库脚本文件被破坏(不在文件系统级别,即可读,但HSQLDB无法理解),这导致了我的问题: 数据应该如何存储在一个断电的环境中,并经常发生? 我能想到的一个select是使用平面文件,将每个数据包作为文件保存在文件系统上。 这样,如果文件由于断电而损坏,则可以忽略,其余数据保持不变。 然而,这带来了一些问题,主要与可能存储在虚拟机上的数据量有关。 在每个数据之间0.5秒时,10天内将生成1,728,000个文件。 这至less意味着使用具有增加数量的inode的文件系统来存储这些数据(当前的文件系统设置在约250,000条消息和30%的磁盘空间使用inode)。 而且,很难(不可能)pipe理。 还有其他的select吗? 是否有在Debian上运行的数据库引擎不会因为停电而被破坏? 另外,应该使用什么文件系统? ext3是目前使用的。 在虚拟机上运行的软件是使用Java 6编写的,所以希望解决scheme不会不兼容。