问题标签 [virtual-disk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3608 浏览

c# - 我可以以编程方式在内存中创建虚拟磁盘吗?

出于性能目的,我想写入外部应用程序可以读取的内存。我无法将两个应用程序链接在一起,所以我认为唯一的方法是编写文件。但是将其写入物理磁盘还不够快。我想挂载一个虚拟分区,以便任何应用程序都可以访问它。怎么做?

0 投票
4 回答
9480 浏览

c# - 从磁盘号检索虚拟磁盘文件名

当我在 diskpart 中列出虚拟磁盘时:

对我来说有趣的部分是文件名。如果我知道磁盘号,我试图找到给我文件名(在文件列下)的等效函数。

理想情况下,我会给出“ \\?\PhysicalDrive2 ”,结果会得到“ C:\Disk.vhd ”。

我已经尝试过:

  1. 使用 diskpart 和解析输出 - 由于它是无证格式,它可以随时更改。这不是我会依赖的东西。
  2. 通用VHD API - 没有函数将磁盘号作为参数。
  3. Microsoft.Storage.Vds.dll - 有通过每个驱动器的枚举(例如 Service.Providers),但没有属性/函数可以给我源文件的名称。虽然我现在可以确定例如驱动器 D: 是虚拟驱动器,但我仍然不知道附加了哪个 .vhd 文件。

知道可能是哪个功能吗?

0 投票
1 回答
1335 浏览

c# - 错误:在 WIN7 中使用“CreateVirtualDisk”函数时访问被拒绝

现在我正在尝试使用 CreateVirtualDisk 函数从物理磁盘和虚拟磁盘创建 VHD。由于错误:当我尝试从物理磁盘创建 VHD 时访问被拒绝,我在这里被困了一个星期。我总是以管理员权限运行该程序,所以理论上它应该可以解决,但它没有。我真的不知道这里出了什么问题。

您可以在此处找到 VHD API 文档:VHD

我使用 PInvoke 从库“virtdisk.dll”中调用此方法,这就是我定义函数的方式:

这就是我收到错误的方式:

我像这样设置所有参数:

我尝试了字符串变量'sourcepath'的许多值,结果如下:

  1. 使用现有虚拟磁盘的绝对路径:sourcepath = @"D:\VirtualDisk\KarhuBearOS.vhd"; 成功!
  2. 带物理磁盘的绝对路径:sourcepath = @"C:\"; 失败的! 访问被拒绝。
  3. 使用 VSS 服务创建的卷 ID:sourcepath = @"\?\Volume{a3c3c244-8b7a-11de-a777-806e6f6e6963}\" 失败! 访问被拒绝。
  4. 使用 VSS 服务创建的卷 ID 的绝对路径 sourcepath = @"\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy30\" 失败! 访问被拒绝。

如果您能告诉我解决此问题的方法,我将非常感谢您的帮助。

我最好的,

黄英阮

0 投票
2 回答
507 浏览

java - Solaris: virtual slices/disks for use with ZFS

This is a little related to my previous question Solaris: Mounting a file system on an application's handlers except this question is for a different purpose and is simpler as there is no open/close/lock it is just a fixed length block of bytes with read/write operations.

Is there anyway I can create a virtual slice, kinda like a RAM disk or a SVM slice.. but I want the reads and writes to go through my app.

I am planning to use ZFS to take multiple of these virtual slices/disks and make them into one larger one for distributed backup storage with snapshots. I really like the compression and stacking that ZFS offers. If necessary I can guarantee that there is only one instance of ZFS accessing these virtual disks at a time (to prevent cache conflicts and such). If the one instance goes down, we can make sure it won't start back up and then we can start another instance of that ZFS.

I am planning to have those disks in chunks of about 4GB or so,, then I can move around each chunk and decide where to store them (multiple times mirrored of course) and then have ZFS access the chunks and put them together in to larger chunks for actual use. Also ZFS would permit adding of these small chunks if necessary to increase the size of the larger chunk.

I am aware there would be extra latency / network traffic if we used my own app in Java, but this is just for backup storage. The production storage is entirely different configuration that does not relate.

Edit: We have a system that uses all the space available and basically when there is not enough space it will remove old snapshots and increase the gaps between old snapshots. The purpose of my proposal is to allow the unused space from production equipment to be put to use at no extra cost. At different times different units of our production equipment will have free space. Also the system I am describing should eliminate any single point of failure when attempting to access data. I am hoping to not have to buy two large units and keep them synchronized. I would prefer just to have two access points and then we can mix large/small units in any way we want and move data around seamlessly.

This is a cross post because this is more software related than sysadmin related The original question is here: https://serverfault.com/questions/212072. it may be a good idea for the original to be closed

0 投票
1 回答
4582 浏览

c++ - 使用 VirtualDisk API 创建 VHD 文件

我正在尝试使用 VSS 快照作为 CreateVirtualDisk() 的源。环境/工具是 W7x64Ultimate 上的 C++ VS2008SP1 和 7.1 SDK

[已编辑]

这适用于 Windows 7 x64

[已编辑] - 现在以 ERROR_INVALID_PARAMETER 的不同方式失败。参数如下,根路径为“\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy64”

有任何想法吗?虚拟磁盘 API 似乎没有太多示例代码。

谢谢++

杰瑞。

0 投票
2 回答
3130 浏览

c# - 创建虚拟磁盘装载点

我使用了带有 .NET 包装器的 ImDisk 库,在我的 C# 应用程序中创建了一个虚拟磁盘。但是,在创建设备之后,我显然还需要创建一个挂载点,以便设备实际显示为驱动器号。我不完全理解应该为它提供什么来创建挂载点,但我相信这更多地与虚拟设备有关,而不是库。

我的功能:

CreateMountPoint 定义:

更新

格式化驱动功能:

0 投票
0 回答
224 浏览

windows-7 - 虚拟磁盘挂载 Win7 虚拟磁盘 sdk

我使用 Windows 7 SDK、虚拟磁盘功能用 C++ 编写程序。当我们挂载一个虚拟磁盘时,我们如何才能得到 Windows 分配给这个新磁盘的哪个字母呢?

0 投票
1 回答
364 浏览

c# - 从具有自定义图标和有限存储大小 C# 的文件夹映射虚拟驱动器

我有一个奇怪的要求。

我必须将一个文件夹映射为一个带有自定义驱动器图标Virtual Drive的文件夹。My Computer此外,映射的虚拟驱动器应具有预定义的有限大小(例如 XX GB)。

我知道并将文件夹映射为计算机中的虚拟驱动器,但我无法限制驱动器的大小,因为它是Shortcut文件夹的一种,而且我们也不能将文件夹限制为特定大小。在搜索该主题时,我发现IsolatedStorage这不是我需要的。我还发现DefineDosDevice(int flags, string devname, string path)通过kernel32.dll它可以将文件夹映射到我的计算机但无法实现其他功能。

是否有可能实现我正在寻找的东西?

0 投票
1 回答
927 浏览

save - 将引导加载程序保存到虚拟磁盘

希望这听起来不疯狂或什么的

我正在尝试创建一个迷你操作系统(谁没有?,这就像一个穆斯林访问麦加 - 任何程序员都必须在他的生活中至少做一次)

因此,我创建了一个简单的引导加载程序,当从虚拟机( Oracle VM Virtual Box)中的虚拟可引导 ISO 执行时,它工作正常。它现在只显示一条消息。此时,我应该将控制权交给另一个代码,它将开始成为我的操作系统所有这些都将从虚拟光盘执行。我可以将它刻录在 CD 上并在 i386 上运行。

不,要真正做到这一点,我想运行“操作系统”。从硬盘,所以我想知道是否有办法直接在虚拟磁盘(如.vmi、.vhd、.hdd)上“刻录”可引导信息(引导加载程序和其他要加载的文件)

当我在虚拟机上从 ISO 映像安装传统操作系统(如 Windows 或 Linux)时,引导加载程序会启动一个新的代码部分,将操作系统安装在虚拟磁盘上。我也应该这样做:为操作系统创建一个安装程序,它将我的引导部分写入虚拟磁盘。这意味着每次我对我的操作系统进行更改时,我都必须重新安装它。我不喜欢那样。我希望能够直接在虚拟磁盘文件中编写启动代码,在 Virtual Box 中启动机器,然后看到它运行。我用 HEX 编辑器打开了 .vmi 文件,但我不知道应该把代码放在哪里才能被认为是可启动的。

现在,告诉我我是否不知道我在说什么,或者是否有解决方案。谢谢大家!

0 投票
1 回答
3081 浏览

c# - 创建一个 shell 命名空间扩展

acronis 如何创建此虚拟文件夹。例如,我创建了Example位于以下位置的文件夹C:\Example的备份:备份的外观如下:

在此处输入图像描述

如果我双击该文件,那么我可以导航到:

在此处输入图像描述

如果我右键单击该文件夹,我将不会获得与目录一起获得的常规菜单。如果我双击该目录,那么我将导航到该文件夹​​的内容:

在此处输入图像描述

请注意,我正在查看的内容位于不在 Windows 资源管理器上的文件中。

我知道如果我将 VirtualDir.tib 发送给某人,他们将无法看到相同的内容,因为他们没有安装acronis true 映像

我怎么能用 c# 做类似的事情?


编辑

对不起,我刚刚更新了标题。如何使用 c# 创建一个 chell 命名空间扩展?