실제 머신 호스트에서 실행중인 가상 머신 (Debian)이 있습니다. 가상 머신은 로컬 네트워크를 통해 자주받는 데이터의 버퍼 역할을합니다 (이 데이터의 기간은 0.5 초이므로 상당히 높은 처리량). 수신 된 모든 데이터는 가상 머신에 저장되고 UDP를 통해 반복적으로 외부 서버로 전달됩니다. 외부 서버가 UDP를 통해 데이터 패킷을 수신했음을 확인하면 원래 데이터가 가상 시스템에서 삭제되고 외부 서버로 다시 전송되지 않습니다. VM과 외부 서버를 연결하는 인터넷 연결은 신뢰할 수 없으므로 한 번에 며칠 동안 다운 될 수 있습니다.
VM을 호스팅하는 물리적 시스템은 하루에 여러 번 전원이 임의로 차단됩니다. 언제 이런 일이 일어날 지 알 수 없으며 UPS, 배터리 또는 이와 유사한 솔루션을 시스템에 추가 할 수 없습니다.
원래 데이터는 가상 머신의 파일 기반 HSQLDB 데이터베이스에 저장되었습니다. 그러나 자주 전원이 꺼지면 데이터베이스 스크립트 파일이 손상됩니다 (파일 시스템 수준이 아닙니다. 즉 읽을 수 있지만 HSQLDB는 이해할 수 없습니다).
정전이 자주 발생하는 환경에 데이터를 어떻게 저장해야합니까?
내가 생각할 수있는 한 가지 옵션은 플랫 파일을 사용하여 각 데이터 패킷을 파일 시스템의 파일로 저장하는 것입니다. 이렇게하면 전원 손실로 인해 파일이 손상된 경우 무시해도되고 나머지 데이터는 그대로 유지됩니다. 그러나 이는 가상 머신에 저장 될 가능성이있는 데이터의 양과 관련하여 몇 가지 문제를 야기합니다. 각 데이터 사이에서 0.5 초에 10 일 안에 1,728,000 개의 파일이 생성됩니다. 이것은 최소한이 데이터를 저장하기 위해 증가 된 inode 수를 가진 파일 시스템을 사용하는 것을 의미합니다 (현재 파일 시스템 설정은 ~ 250,000 메시지 및 30 % 디스크 공간 사용으로 inode가 부족함). 또한 관리하기가 어렵습니다 (불가능하지는 않습니다).
다른 옵션이 있습니까? 전원 차단으로 손상되지 않는 데비안에서 실행되는 데이터베이스 엔진이 있습니까? 또한 어떤 파일 시스템을 사용해야합니까? ext3은 현재 사용되는 것입니다.
가상 머신에서 실행되는 소프트웨어는 Java 6을 사용하여 작성되었으므로 솔루션이 호환되지 않기를 바랍니다.