将 VHDX 引入到文件存储的设想

查看 46|回复 2
作者:shalingye   
我想探讨一下关于引入 VHDX 技术到文件存储,是否具有可行性?
VHDX 可以为数据提供类似还原点的保护。
经典的场景例如误删了某个文件,可以通过只读挂载之前的 VHDX 节点可以马上取回。
VHDX 可以跨磁盘存储。
利用父子链机制将父盘和子盘放置在不同的物理磁盘、甚至是 SMB 、ISCSI 空间,在一定程度上类似于 JBOD 阵列的效果。这样就可以将所有介质利用起来,并且由于 VHDX 是作为文件而存在的,不需要重新格式化任何介质,属于一种弹性机制。
VHDX 利于备份。
例如,利用父子链机制产生了 G1 、G2 、G3 、G4 ,4 个 VHDX ,可以将这些 VHDX 文件分别保存到不同的存储介质中,例如云盘、冷备份等等。原始 VHDX 链条的任何一块 VHDX 出现丢失( VHDX 所在的物理磁盘损坏),都可以通过补全 VHDX 链条的方式取回数据。而每一个 VHDX 都仅仅包含所有数据的一部分(取决于建立该节点和下一个节点的时间间隔),例如一个完整的块或者扇区,因此除了第一个节点以外,都无法被单独打开使用,具有相对的安全性。
VHDX 有一定的抗病毒能力。
某些勒索病毒会把电脑上的文件加密,然后给你留下勒索信息。然而如果采用了 VHDX 技术存储,可以立即回到上一个节点取回所有文件,因为病毒所做的任何加密都只是对原有文件的修改,VHDX 仅仅是将这些修改保存到了最新的子节点里面。VHDX 文件序列(包括整条父子链,例如 G1~G4 )本身在挂载的时候是无法被修改的,具有系统内核级别的占用。
缺点:
缺点也是有的。例如读写效率相比原生硬盘较低。同时也会占用更多的 CPU 时间。此外,VHDX 还会占用少部分空间用于记录块分配表以及元数据。
VHDX 不具备任何压缩的能力,仅仅是将数据打包,提到这个就延伸出另一个用法:文件打包。使用 VHDX 来打包文件的好处在于,在传输大量数据的时候节约压缩和解压的时间,接收者仅仅只需要双击即可挂载 VHDX 文件为一个单独的盘符,然后访问里面的文件。VHDX 自从 Win8 开始已经得到了广泛支持,在 PC 市场普及很广,Linux 也有相对应的 VM 工具用于挂载。
相关软件
BOOTICE 是一个很好的软件,实现了很多 VHDX 的功能,但它利用的是系统的接口。另外,我已经完成了 VHDX Tools 的大部分开发,但由于界面还不太美观还需锤炼,所以并未发布。技术方面是根据微软的 VHDX 文档:MS-VHDX 自己实现的逻辑,大部分功能可以跨平台运行而无需依赖于 Powershell 接口。目前的功能主要是对 VHDX 进行管理,如果有需要的话后期会开发对文件存储相关的功能,例如创建完 VHDX 后顺便把文件系统也创建了,这样挂载完毕后就是一个可用的分区;对父子链的记录也有一定的必要。
一些问题
VHDX 技术能否真正应用于文件存储?有哪些阻碍或者不足?这不是一个刚出现的技术,而是在很多年前就被应用于虚拟化的技术,具有相当的可靠性,但似乎从未推广到文件存储。
笔者的思路和见识都有限,如果你有什么疑问或想法,可以写下你的思考。

vhdx, 文件, 节点, 存储

Donahue   
https:///t/957235#reply4
我想过用 qcow2 做储存,但是实践发现一些问题:
用 guestmount 挂载,会导致所有新建文件的权限都是 root, 即使我是用非 root 用户执行挂载命令
用 qemu-nfs 挂载,会有很严重的性能问题,100MB 的文件写入性能只有 100MB/s 左右. 然后修改一些参数"cache=unsafe, discard=on"可以提高写入速度到 2GB/s, 离原生 3GB/s 还有点距离,而且感觉 cache=unsafe 对数据安全也不好。
最后还是简单点,数据分别在固态硬盘一份,机械硬盘一份,机械硬盘是冷备份,平时不接电脑,每半年用 rclone 把固态上需要更新的部分更新到机械
Donahue   
@Donahue qemu-nfs -> qemu-nbd
不过或许也可以开一个虚拟机用网络共享的形式把磁盘暴露出去,暂时不折腾这个了
您需要登录后才可以回帖 登录 | 立即注册

返回顶部