我已经在 VirtualBox 中使用 Xubuntu Linux 设置了虚拟机。
该磁盘为 4.5 GB 的 .vdi 文件。
我怎样才能从中制作一个 IMG 或 ISO 文件,以便我可以将其写入可启动的 USB 闪存驱动器,
使用 Rufus 磁盘成像器软件(在 Windows 上)
或与dd if=myvm.img of=/dev/sdc
?
TL;DR:我正在寻找一种convert-vmdisk myvm.vdi myvm-bootable.img工具。
我已经尝试过是否可以将虚拟机转换为物理环境?尤其是
VBoxManage internalcommands converttoraw file.vdi output.img
Run Code Online (Sandbox Code Playgroud)
但是将此 .img 写入 USB 闪存驱动器(使用 Rufus)后,PC 将无法在此 USB 闪存驱动器上启动。
我想做的事:
我正在尝试将驻留在一个硬盘驱动器上的 2 个不同的物理 Windows XP 系统虚拟化到 Windows 7 下的 VirtualBox。
我做了什么(每个驱动器一次):
从 Linux 系统:
dd if=/dev/sd(disk) of=d1.img conv=noerror,sync bs=64k
Run Code Online (Sandbox Code Playgroud)
从 Windows 7 系统
vboxmanage convertfromraw d1.img d1.vdi
Run Code Online (Sandbox Code Playgroud)
我在哪里:
在任一 VM 启动期间,Windows 似乎在加载时挂起(在安全模式下)mup.sys。在正常启动时,它只是一个空白屏幕。我真的没有很多事情要做,所以获得更多调试输出的任何点也很好。
我很确定我以前在 Linux 和类似系统上使用过这种方法,我在这里做了什么蠢事吗?与 Xen 或 KVM 相比,我对 VirtualBox 的了解非常有限。
我有两个 2TB 驱动器:
/dev/sde WCD WD20EZRX-00D8PB0 固件修订版80.00A80(全新消费级WD Green系列)
/dev/sdf WCD WD2002FYPS-01U1B1 固件修订版 04.05G05(老款专业级服务器省电驱动)
第一个 ( sde) 是全新的。我只使用了几天,它被格式化为 ext4。
第二个 ( sdf) 已用作备份驱动器几年。它在 lmv2 之上几乎是满的和 ext4 格式的。
两个驱动器都使用相同的电缆连接到同一个 SAS 控制器,并使用相同的电缆 (Silverstone PP06B-4SATA10) 供电。两个 SAS 驱动器也共享那些完全相同的电缆。
我在具有 64GB RAM 的空闲 8 核工作站上运行以下命令:
dd if=/dev/zero of=/dev/sdX iflag=nocache oflag=direct bs=4096
Run Code Online (Sandbox Code Playgroud)
对于 sde,该过程在 54329.1 秒后以 36.8 MB/s 的速度完成。
对于 sdf,进程仍在以 4.8 MB/s 的速度运行(在 354117 秒后kill -USR1)(如 后报告)。
这意味着相同的命令在旧服务器驱动器中比在新消费者驱动器中花费的时间多近 8 倍。
两者都是具有 64MB 缓存的“IntelliPower”驱动器,并且确实预计较新的驱动器会以某种方式更快(可能快两倍,慷慨,但 8 倍?)
问题
更新
按照@MKzero …
考虑以下两个命令,它们都创建了一个 1KB 的哑文件
dd if=/dev/urandom of=test.file bs=1024 count=1
dd if=/dev/urandom of=test.file bs=1 count=1024
Run Code Online (Sandbox Code Playgroud)
第一个命令使用 1024 字节的块大小和 1 的块计数,第二个则相反。
我的猜测是没有区别,限制块大小是与 RAM 相关的问题:块大小不能大于可用内存。
当我想要或必须使用第一个案例而不是第二个案例时,是否有任何特殊情况?反之亦然?
(我所说的错误是指“会破坏事物”。)
假设我们要使用dd. 我们选择了一组有效的if、of、 以及可能的seek和skip。我们仔细确保该命令不会写入超出我们预期的输出区域。
现在我们如何通过选择bs和的错误组合来巧妙地破坏事物count?我们怎么知道?
我问的原因是似乎出现了神奇的首选值。例如,在这个关于生成随机 1G 文件的问题中,前两个答案使用if=/dev/urandom、of=sample.txt、bs=64M和count=16。
当然,这些并不是唯一有效的设置,但两个答案都使用了这些设置,表明这个选择特别好且合理。特别是在没有文件系统甚至物理磁盘的情况下,我不清楚设置的选择是否可能是错误的——不仅效率低下,而且是错误的。我的猜测是,dd必须一次写入整数个块,以便bs内存使用量增加,而这些值只会影响性能。
该示例只是一个示例,而不是我特别关心的内容,因此请继续解决正在复制的内容具有文件系统的情况。
使用 dd 对我来说始终是一个令人恐惧的信念飞跃。
据我所知,将 dd 与 ddrescue 进行比较可以得出结论,ddrescue 在从损坏的数据源中抢救数据方面要好得多。dd 没有这个能力。
有时,如果数据源完全正常或者在开始备份之前以某种方式损坏,我现在根本不会。
那么为什么不忘记 dd 并且每次都简单地使用 ddrescue 呢?
是不是这样:如果数据源很好,ddrescue 会做一个很好的备份,如果数据源坏了,ddrescue 可能会处理这个。
到目前为止,我能看到的唯一原因是 dd 是否可用而 ddrescue 不可用,但我认为在大多数情况下,当有人进行备份时,他可能可以获得 root 访问权限并只需安装 ddrescue。
ddrescue 在精细数据源上的运行速度是否比 dd 慢?
我有一张多会话 CD,我想将其内容复制到硬盘上。该 CD 已有大约 20 年的历史,并且有几个部分出现了读取问题,因此它是ddrescue.
问题是,ddrescue除了 CD 中的第一个会话之外,它似乎无法识别任何会话,就像dd它一样。它的文档甚至没有提到多会话 CD,并且互联网上似乎没有太多关于如何执行此操作的信息。
ddrescue所以问题是:如何使用或任何类似的工具来挽救多会话 CD ?
我们可以使用Rufus将本地磁盘分区保存为.img镜像文件吗?基本上相当于 Windows:
dd if=/dev/sda4 of=output.img
Run Code Online (Sandbox Code Playgroud)
我们还可以使用 Rufus 写入映像,而不是写入整个 USB 磁盘(我已经知道高级选项“列出 USB 硬盘驱动器”),而是写入精确分区上的内部磁盘?基本上相当于:
dd if=output.img of=/dev/sda4
Run Code Online (Sandbox Code Playgroud)
(或者也许这可以直接内置在 Windows 7 中?)
您好,我目前对使用 dd 命令后的结果有疑问。
[root@localhost sdb2]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 898M 0 898M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.6M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 1.3G 16G 8% /
/dev/sda1 1014M 151M 864M 15% /boot
tmpfs 182M 0 182M 0% /run/user/0
/dev/sdb1 4.8G 20M 4.6G 1% /root/sdb1
/dev/sdb2 4.8G 20M 4.6G 1% /root/sdb2
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我将 /dev/sdb 磁盘分为 2 个分区,并将它们分别挂载在 /root/sdb1 和 /root/sdb2 上。
我输入 /root/sdb1 并 …
外部 3½" HDD 似乎有发生故障的危险——它在空闲时发出滴答声。
我已经获得了一个替换驱动器,并想知道从可疑驱动器中获取数据的最佳策略,并尽可能多地保存数据。
有些目录比其他目录更重要。但是,我猜测挑选和选择目录会减少我保存整个内容的机会。我还必须挂载它,转储文件列表,然后卸载它,以便能够有效地对目录进行优先级排序。加上这样做很耗时的事实,我正在远离这种方法。
我已经考虑过只使用dd,但我不确定它将如何处理读取错误或其他可能仅阻止数据的某些部分被拯救的问题,或者可以通过一些重试来克服这些问题,但不会太多以至于它们以免驱动器的其他部分被保存。我想理想情况下,它会通过一次获得尽可能多的数据,然后返回重试因错误而错过的任何内容。
复制更慢(例如,每 x MB/GB 暂停一次)是否可能比仅全速运行操作更好,例如避免任何过热问题?
对于“你的备份在哪里”的人群:这实际上是我的备份驱动器,但它也包含一些非关键和笨重的东西,比如音乐,它们不是备份,即没有备份。
除了这种有点不祥的声音外,驱动器没有表现出任何明显的故障迹象。最近我确实不得不检查一些错误——孤立的 inode、不正确的空闲块/inode 计数、inode 位图差异、删除的 inode 上的 dtime 为零;总共大约 20 个错误。
该分区的文件系统是 ext3。
dd ×10
linux ×4
hard-drive ×3
backup ×2
ddrescue ×2
virtualbox ×2
compact-disc ×1
filesystems ×1
memory ×1
partitioning ×1
performance ×1
rufus ×1
speed ×1
usb ×1
windows ×1
windows-7 ×1