Fed*_*ico 34 linux vhd dd liveusb disk-image
再一次,我不得不求助于 SuperUser 的专家,因为我的其他来源(主要是 Google ;-))并没有证明很有帮助......
所以基本上,我想创建一个物理磁盘的 VHD 映像,以便存档/访问/甚至可能安装在虚拟机中。现在,网上有很多关于如何做到这一点的文章和教程,但没有一个完全符合我想要达到的条件:
disk2vhd实用程序,但我想找到一个不需要启动该 Windows XP安装的解决方案(即保持磁盘只读)但是,我遇到的所有解决方案都在 linux 下使用disk2vhd或使用该dd命令,该命令执行磁盘的完整副本(即甚至是空块)并且不输出 VHD 文件。Linux下有没有可以直接创建VHD文件的工具/程序?或者是否可以将使用 dd 创建的原始磁盘映像转换为 VHD 文件,而无需为空块分配空间?你将如何进行?
与往常一样,非常感谢任何建议或评论!!
Fed*_*ico 32
为了将来参考,以下是我最终的处理方式,并对遇到的各种问题或陷阱发表了一些评论:
第一步是使用 Linux 实时系统启动包含要映像的磁盘的机器。
注意:我的第一个想法是使用 Ubuntu Live USB 磁盘,但机器不支持从 USB 引导,所以我发现使用旧的Knoppix live CD更容易。
dd并通过管道传输数据ssh然后,我用复制所有磁盘内容到一个文件中的图像我的本地服务器上dd,并通过管道中的数据ssh:
$ dd if=/dev/hdX bs=4k conv=noerror,sync | ssh -c 河豚 myuser@myserver 'dd of=myfile.dd'
这里有一些评论:此方法将读取所有磁盘内容,因此可能需要很长时间(80Gb 磁盘花了我 5 小时)。瓶颈不是网络,而是磁盘读取速度。在启动副本之前,我建议检查 BIOS/磁盘/系统参数以确保磁盘和主板以尽可能高的速度工作(这可以使用命令hdparm -i和运行测试来检查hdparm -Tt /dev/hdX)。
注意:dd不输出操作的进度,但我们可以通过从另一个终端向进程 PID发送USR1信号来强制它这样做dd:
$ kill -USR1 PIDofdd
注意:较新版本dd支持status=LEVEL选项 ( man dd)
status=LEVEL
The LEVEL of information to print to stderr; 'none' suppresses everything but error messages, 'noxfer' suppresses
the final transfer statistics, 'progress' shows periodic transfer statistics
Run Code Online (Sandbox Code Playgroud)
此时,不再需要源计算机,我们将专门在目标服务器上工作(也运行 Linux)。VirtualBox 将用于将原始磁盘映像转换为 VHD 格式,但在此之前,我们可以将未使用的块清零,以便 VirtualBox 不会在最终文件中为它们分配空间。
为此,我将图像安装为环回设备:
$ mount -o loop,rw,offset=26608813056 -t ntfs-3g /mnt/mydisk/myfile.dd /mnt/tmp_mnt
$ cat /dev/zero > zero.file
$ rm zero.file
Run Code Online (Sandbox Code Playgroud)
注意:可以通过parted在映像文件上使用来获取指示磁盘映像内分区开始的偏移量:
$ parted /mnt/mydisk/myfile.dd
(parted) unit
Unit? [compact]? B
(parted) print
Model: (file)
Disk /mnt/mydisk/myfile.dd: 80026361856B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 32256B 21936821759B 21936789504B primary ntfs boot
2 21936821760B 80023749119B 58086927360B extended lba
5 26608813056B 80023749119B 53414936064B logical ntfs
Run Code Online (Sandbox Code Playgroud)
NOTE2:默认的Linux内核NTFS驱动提供只读访问,因此需要安装和使用用户空间ntfs-3g驱动,否则写入磁盘会报错!
此时,我们可以使用 VirtualBox 实用程序将原始图像转换为 VHD 文件:
VBoxManage convertfromraw myfile.dd myfile.vhd --format VHD
Run Code Online (Sandbox Code Playgroud)
Yir*_*kha 19
我试图做与 OP 完全相同的事情(同时拯救 Windows 安装)并最终为它创建了一个新工具,ntfsclone2vhd.
然后,您只需执行以下操作:
ntfsclone --save-image -o - /dev/sdXX | ntfsclone2vhd - /mnt/usb/output.vhd
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
122904 次 |
| 最近记录: |