我以前从未发生过这种情况,但我无法执行简单的任务,例如在 Ubuntu Linux 18.04 上使用任何流行的压缩工具(例如gzip、bzip2和7z )压缩 18.5 GB 文件。他们都报告了类似的警告(不是错误)消息,声称文件大小在压缩期间发生了变化,而实际上没有其他进程正在访问该文件。例如,当尝试“tar-gz”时,该工具报告:File shrank by <nnnnnnnn> bytes; padding with zeros,以错误代码 1 退出,tar 的联机帮助页说这是由于压缩期间文件更改造成的:
退出代码 1:某些文件不同。如果使用 --compare (--diff, -d) 命令行选项调用 tar,这意味着存档中的某些文件与其磁盘对应文件不同。如果 tar 被赋予 --create、--append 或 --update 选项之一,则此退出代码意味着某些文件在存档时已更改,因此生成的存档不包含文件集的确切副本。
该文件是一个 VMDK,当然,当我压缩它时,关联的 VM 会完全关闭。另一方面,我注意到当压缩文件达到 280 MB 左右时,所有压缩工具都会失败。
我已经在 ServerFault 上检查了其他类似的问题,但我仍然没有得到任何提示来弄清楚发生了什么。对链接问题投票最多的答案说,这不是错误,压缩工具只是“简化”了一堆零字节,但是如果我在解压缩 VMDK 文件后尝试运行 VM,它无法声明磁盘已损坏。
我完全坚持这一点。关于可能发生什么的任何想法?
更新
在尝试使用该cp命令将文件复制到另一个目录时,它在读取文件时转储了 I/O 错误。另一方面,dmesg在读取文件的特定块时报告 I/O 错误。一切都指向磁盘错误(尽管e2fsck说一切正常并且有 0 个坏块)。由于我已经有了 VM 的备份,我将尝试更改主机的磁盘并重新安装 Ubuntu 的新副本,然后看看会发生什么。我一直在发布这个问题,直到我得到一些结果。
我正在尝试缩小从以前的 VMware 环境中获得的 80GB 预分配 CentOS VMDK,我被要求在另一台主机上运行。这个新运行环境的计费安排允许导入的 dick 图像大小不超过 50GB。目前,来宾操作系统仅使用了大约 18GB,VMDK 上还剩下 62GB 的“可用磁盘空间”。
是否有缩小预分配 VMDK 的程序?我当然考虑过从头开始以正确的大小创建一个新的 VM,但是 VM 上发生的事情太多,该选项不可行。
任何有关缩小 VMDK 或将内容从一个 VMDK 克隆到较小 VMDK 的建议将不胜感激。
谢谢
当我的计算机崩溃时,我正在 VMware Fusion 11 中运行虚拟机。当我尝试再次启动它时,我看到一条错误消息,通知我“磁盘有一个或多个无法修复的内部错误”。
有什么办法可以解决这个问题吗?
我在下面提供了很多细节,希望能让我的问题尽可能清楚。
使用dd if=/dev/ps3da2 of=/mnt/edexhdd/EDPS3LINUX.iso bs=16384我将一个相当大的分区从 PPC64 架构(实际上是 PS3)上的物理 Linux 非 Xwindow 安装复制到外部 HDD。Linux 上的两个分区之一(即 /boot 和 /)超过 66 GB。该分区是第二个分区,不可引导。实际上fdisk -lu /mnt/edexhdd/EDPS3LINUX.iso说这个分区“没有有效的分区表”。
同时我可以通过它在 Linux 上安装它mount -o loop /mnt/edexhdd/EDPS3LINUX.iso /mnt/testmnt并遍历它。
我的目的是在我的 Windows 7 笔记本电脑(64 位和 VT 功能)上的 VMWare 工作站上工作。一切都已正确安装,其他 VMWare 映像运行良好。所以我将图像移至 Windows 并创建了必要的 vmdk 文件...
D:\raw2vmdk>java -jar raw2vmdk.jar EDPS3LINUX.iso EDPS3LINUX.vmdk
Analysing image: D:\EDPS3LINUX.iso [66229960704 bytes]
Number of sectors: 129355392
Number of cylinders: 0
Heads per track: 0
Sectors per track: 0
Loading VMDK template...
Writing VMDK …Run Code Online (Sandbox Code Playgroud) 我是一名开发人员,而不是 IT 人员,但我目前负责管理我们的服务器。我遇到了一个问题……显然我们的 SQL 备份比我预期的要大得多,周六晚上,我们的 SQL 备份运行,然后完全填满了我们的虚拟磁盘。
我无法启动虚拟机,所以我想我只需将驱动器连接到另一个虚拟机,删除旧的备份,然后将其添加回 SQL 虚拟机。但是,当我从另一个 VM 浏览驱动器时,驱动器上只有选定数量的文件可用。因此,我无法删除旧备份,使磁盘仍然完全满。然后我读了一篇文章,其中提到我可以删除快照以释放一些空间。回想起来,这是一件愚蠢的事情,但我做到了。这是我捕获的第一个快照(我不再需要的快照)。
所以,现在我有一个 VMDK,以及以下错误消息:
自从创建子虚拟磁盘以来,父虚拟磁盘已被修改。父虚拟磁盘的内容 ID 与子虚拟磁盘中对应的父内容 ID 不匹配。
我目前正在修复不匹配的 CID,但我仍然不知道如何处理完整的 VMDK...谁能解释我如何进入该虚拟磁盘并删除一些文件,以便我可以重新配置备份?
如果您没有时间像我一样解决问题,那么 HopelessN00b 的解决方案就是您要走的路(假设您有所有内容的备份)。
vmdk ×5
vmware-vmdk ×2
compression ×1
dd ×1
gzip ×1
iso ×1
linux ×1
snapshot ×1
tar ×1
ubuntu-18.04 ×1
vmware-esxi ×1