我使用DISM来抓取镜像并存储到网盘中,使用标准的32位WinPE 4.0环境来抓取。
我的当前路径设置为i:\images
并执行以下命令:
dism /capture-image /imagefile:ae2212-w81-64bit-v1.wim /capture-dir:c:\ /name:system
它运行到 100%,然后出现错误并失败There is not enough space on the disk.
。在捕获过程中,我监控了网络驱动器,我可以看到图像在增长。当出现错误消息时,图像被删除了。
奇怪的是,该图像大约有 15GB,而网络驱动器有超过 500GB 的可用空间。
可能出了什么问题?我应该使用该/scratchdir
选项吗?
2014-02-19 01:04:37, Info DISM DISM WIM Provider: PID=1216 c:\Windows.old\Windows\WinSxS\x86_wcf-m_svc_mon_sup_dll_31bf3856ad364e35_6.2.9200.16432_none_a2bd221c1cde6e62\ServiceMonikerSupport.dll (HRESULT=0x8007011A) - CWimManager::WimProviderMsgLogCallback
[1216] [0xc144012f]
2014-02-19 01:04:37, Info DISM DISM WIM Provider: PID=1216 c:\Windows.old\Windows\WinSxS\x86_wcf-system.identitymodel_b03f5f7f11d50a3a_6.2.9200.16432_none_30a420f7f05ab330\System.IdentityModel.dll (HRESULT=0x8007011A) - CWimManager::WimProviderMsgLogCallback
[1216] [0xc144012f]
2014-02-19 01:04:37, Info DISM DISM WIM Provider: PID=1216 c:\Windows.old\Windows\WinSxS\x86_wcf-system.runtime.serialization_b03f5f7f11d50a3a_6.2.9200.16432_none_123c6840d0913997\System.Runtime.Serialization.dll (HRESULT=0x8007011A) - CWimManager::WimProviderMsgLogCallback
[1216] [0x80070070] ReadWriteDataInternal:(141): There is not enough space on the disk.
[1216] [0x80070070] ReadWriteDataInternal:(141): There is not enough space on the disk.
[1216] [0x80070070] ReadWriteDataInternal:(141): There is not enough space on the disk.
[1216] [0x80070070] ReadWriteDataInternal:(141): There is not enough space on the disk.
[1216] [0x80070070] ReadWriteDataInternal:(141): There is not enough space on the disk.
[1216] [0x80070070] ReadWriteDataInternal:(141): There is not enough space on the disk.
[1216] [0x80070070] ReadWriteDataInternal:(141): There is not enough space on the disk.
[1216] [0x80070070] ReadWriteDataInternal:(141): There is not enough space on the disk.
[1216] [0x80070070] ReadWriteDataInternal:(141): There is not enough space on the disk.
[1216] [0x80070070] ReadWriteDataInternal:(141): There is not enough space on the disk.
[1216] [0x80070070] ReadWriteDataInternal:(141): There is not enough space on the disk.
[1216] [0x80070070] ReadWriteDataInternal:(141): There is not enough space on the disk.
[1216] [0x80070070] ReadWriteDataInternal:(141): There is not enough space on the disk.
[1216] [0x80070070] ReadWriteDataInternal:(141): There is not enough space on the disk.
[1216] [0x80070070] ReadWriteDataInternal:(141): There is not enough space on the disk.
[1216] [0x80070070] ReadWriteDataInternal:(141): There is not enough space on the disk.
2014-02-19 01:56:22, Error DISM DISM WIM Provider: PID=1216 TID=1220 base\ntsetup\opktools\dism\providers\wimprovider\dll\wimmanager.cpp:1217 - CWimManager::Capture(hr:0x80070070)
2014-02-19 01:56:22, Error DISM DISM WIM Provider: PID=1216 TID=1220 base\ntsetup\opktools\dism\providers\wimprovider\dll\wimmanager.cpp:4274 - CWimManager::InternalCmdCaptureBase(hr:0x80070070)
2014-02-19 01:56:22, Error DISM DISM WIM Provider: PID=1216 TID=1220 Error executing command - CWimManager::InternalExecuteCmd(hr:0x80070070)
2014-02-19 01:56:22, Error DISM DISM WIM Provider: PID=1216 TID=1220 base\ntsetup\opktools\dism\providers\wimprovider\dll\wimmanager.cpp:1928 - CWimManager::ExecuteCmdLine(hr:0x80070070)
2014-02-19 01:56:22, Error DISM DISM.EXE: WimManager processed the command line but failed. HRESULT=80070070
2014-02-19 01:56:22, Info DISM DISM.EXE: Image session has been closed. Reboot required=no.
2014-02-19 01:56:22, Info DISM DISM.EXE:
2014-02-19 01:56:22, Info DISM DISM.EXE: <----- Ending Dism.exe session ----->
2014-02-19 01:56:22, Info DISM DISM.EXE:
2014-02-19 01:56:22, Info DISM DISM Provider Store: PID=1216 TID=1220 Found the OSServices. Waiting to finalize it until all other providers are unloaded. - CDISMProviderStore::Final_OnDisconnect
2014-02-19 01:56:22, Info DISM DISM Provider Store: PID=1216 TID=1220 Disconnecting Provider: FolderManager - CDISMProviderStore::Internal_DisconnectProvider
2014-02-19 01:56:22, Info DISM DISM Provider Store: PID=1216 TID=1220 Disconnecting Provider: WimManager - CDISMProviderStore::Internal_DisconnectProvider
2014-02-19 01:56:22, Info DISM DISM Provider Store: PID=1216 TID=1220 Disconnecting Provider: VHDManager - CDISMProviderStore::Internal_DisconnectProvider
2014-02-19 01:56:22, Info DISM DISM Provider Store: PID=1216 TID=1220 Disconnecting Provider: GenericImagingManager - CDISMProviderStore::Internal_DisconnectProvider
2014-02-19 01:56:22, Info DISM DISM Provider Store: PID=1216 TID=1220 Disconnecting Provider: Compatibility Manager - CDISMProviderStore::Internal_DisconnectProvider
2014-02-19 01:56:22, Info DISM DISM Provider Store: PID=1216 TID=1220 Releasing the local reference to DISMLogger. Stop logging. - CDISMProviderStore::Internal_DisconnectProvider
答案1
根据启动设备(USB 或 CD/ROM),捕获过程会决定将暂存文件写入何处。由于 USB 是可写的,因此它会尝试将大量暂存文件写入其中。尝试使用 /scratchdir 选项并将暂存文件直接写入具有足够空间的介质。
答案2
我没有更改“暂存目录”,而是增加了 WinPE 上的暂存空间(默认值为 32MB)。这对我来说很有效:
DISM /Mount-Wim /WimFile:<图像路径> /索引:索引号 /安装目录:<mountdirlocation>
DISM /图像:<mountdirlocation> /设置-ScratchSpace:512
DISM /Unmount-Wim /MountDir:<mountdirlocation>/提交
将暂存空间设置为您尝试映像的系统所支持的最大值。暂存空间的有效值为 32、64、128、256 和 512 (MB)。
更多信息:https://technet.microsoft.com/en-us/library/dd799261(WS.10).aspx
答案3
我遇到了类似的问题,镜像在 60% 左右失败。和您一样,我有近 1TB 的可用空间,但服务器上没有启用配额管理功能。我使用的是从闪存驱动器启动的 Windows PE4 32 位和最新版本的 DISM。
额外的复杂性是,我正在捕获到启用 DFS 的共享。通常重新捕获图像会成功,所以我不确定我的使用非命名空间共享名称的二次修复是否有效,第二次捕获是否因为我的运气好或者命名空间存在问题。我希望我能给你一个更好的答案,但你可能必须将其捕获到闪存驱动器并稍后手动复制。
答案4
我在仅分配了 1GB 内存的虚拟机上也遇到了这个问题。
分配 4GB 内存后,它运行正常。