java - Solaris:与 ZFS 一起使用的虚拟片/磁盘

标签 java solaris zfs virtual-disk

这与我之前的问题Solaris: Mounting a file system on an application's handlers有点相关。除了这个问题是出于不同的目的并且更简单,因为没有打开/关闭/锁定,它只是具有读/写操作的固定长度的字节 block 。

我是否可以创建一个虚拟切片,有点像 RAM 磁盘或 SVM 切片..但我希望读取和写入通过我的应用程序。

我计划使用 ZFS 获取多个虚拟切片/磁盘,并将它们变成一个更大的虚拟切片/磁盘,用于带有快照的分布式备份存储。我真的很喜欢 ZFS 提供的压缩和堆栈功能。如果有必要,我可以保证一次只有一个 ZFS 实例访问这些虚拟磁盘(以防止缓存冲突等)。如果一个实例出现故障,我们可以确保它不会重新启动,然后我们可以启动该 ZFS 的另一个实例。

我计划将这些磁盘分成大约 4GB 左右的 block ,然后我可以移动每个 block 并决定将它们存储在哪里(当然多次镜像),然后让 ZFS 访问这些 block 并将它们放在一起分成更大的 block 以供实际使用。此外,如果需要增加大块的大小,ZFS 还允许添加这些小块。

我知道如果我们在 Java 中使用我自己的应用程序,将会有额外的延迟/网络流量,但这仅用于备份存储。生产存储是完全不同的配置,不相关。

编辑:我们有一个使用所有可用空间的系统,基本上当空间不足时,它会删除旧快照并增加旧快照之间的间隙。我建议的目的是让生产设备中未使用的空间能够在不增加成本的情况下得到使用。在不同的时间,我们的生产设备的不同单元会有可用空间。此外,我所描述的系统应该消除尝试访问数据时的任何单点故障。我希望不必购买两个大型设备并保持它们同步。我希望只有两个接入点,然后我们可以以任何我们想要的方式混合大/小单元并无缝地移动数据。

这是一个交叉帖子,因为这与软件相关而不是与系统管理相关原始问题在这里:https://serverfault.com/questions/212072 。关闭原始版本可能是个好主意

最佳答案

一种方法是编写 Solaris 设备驱动程序,准确地说是一种模拟真实磁盘的 block 设备,但它将与您的应用程序进行通信。

首先阅读 Device Driver Tutorial ,然后看看OpenSolaris source code真正的驱动程序代码。

或者,您可以研究将 Solaris iSCSI 目标修改为与您的应用程序的接口(interface)。再次查看 OpenSolaris COMSTAR将是一个好的开始。

关于java - Solaris:与 ZFS 一起使用的虚拟片/磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4432915/

相关文章:

c++ - DBX:AIX 等同于 Solaris 版本

ubuntu-16.04 - 通过 systemd 管理 ZFS 清理

java - 逆乘法表javafx

java - 支持构建 Java/maven 项目吗?

c++ - 在共享库中填充全局函数指针(Solaris、Sun Studio)

docker - 从 docker 容器访问主机 zfs

UNIX ZFS ACL 未得到遵守

java - 在 Appium 中动态选择驱动程序类型以编写 'hybrid' 测试

java - 如何在Kotlin中将泛型类映射到相同类的泛型数组

c++ - 如何为 Solaris 和 HP-AIX 定义 _FILE_OFFSET_BITS & _LARGE_FILES 宏