这与我之前的问题Solaris: Mounting a file system on an application's handlers有点相关,除了这个问题是出于不同目的而且更简单,因为没有打开/关闭/锁定它只是一个固定长度的字节块,带有读/写操作
无论如何,我可以创建一个虚拟切片,有点像RAM磁盘或SVM切片......但我希望读取和写入通过我的应用程序。
我打算使用ZFS来获取这些虚拟切片/磁盘中的多个,并将它们分成一个较大的虚拟切片/磁盘,用于带快照的分布式备份存储。我非常喜欢ZFS提供的压缩和堆叠。如果有必要,我可以保证一次只有一个ZFS实例访问这些虚拟磁盘(以防止缓存冲突等)。如果一个实例出现故障,我们可以确保它不会重新启动,然后我们可以启动该ZFS的另一个实例。
我计划将这些磁盘放在大约4GB左右的块中,然后我可以移动每个块并决定在哪里存储它们(当然多次镜像)然后让ZFS访问块并将它们放在一起进入更大的块以供实际使用。如果需要,ZFS还允许添加这些小块以增加更大块的大小。
我知道如果我们在Java中使用自己的应用程序会有额外的延迟/网络流量,但这只是用于备份存储。生产存储是完全不同的配置,与之无关。
编辑我们有一个使用所有可用空间的系统,基本上当没有足够的空间时,它会删除旧快照并增加旧快照之间的间隙。我的建议的目的是允许生产设备中未使用的空间投入使用,无需额外费用。在不同时间,我们生产设备的不同单位将拥有自由空间。此外,我描述的系统应该在尝试访问数据时消除任何单点故障。我希望不必购买两个大型单元并保持同步。我希望只有两个接入点,然后我们可以以任何我们想要的方式混合大/小单位并无缝地移动数据。
这是一篇交叉帖子,因为这与sysadmin相关的软件相关更多原始问题在这里:https://serverfault.com/questions/212072。关闭原件可能是一个好主意
答案 0 :(得分:2)
一种方法是编写Solaris设备驱动程序,恰好是一个模拟真实磁盘的块设备,但它将与您的应用程序进行通信。
首先阅读Device Driver Tutorial,然后查看OpenSolaris source code的真实驱动程序代码。
或者,您可以考虑将Solaris iSCSI目标修改为与您的应用程序的接口。再次,看OpenSolaris COMSTAR将是一个良好的开端。
答案 1 :(得分:-1)
似乎任何文件系统上的任何固定长度文件都将用于块设备以与ZFS一起使用。不确定重新启动是如何工作的,但我确信我们可以编写一些启动命令来解决这个问题。
编辑:固定长度文件将位于网络文件系统上,例如NFS。