今天接到客户的一个关于copy vdisk后出现无法启动的问题,报错内容:vDisk file access perission denied
背景:客户想在原来的vdisk上基础上重新生成一个vdisk,客户直接在存放vdisk上的磁盘上复制原来的vdisk,假设原来vdisk name为“masterxp01”copy出来的vdisk重新命令为"masterxp02"
在原来的store中添加vdisk并导入此vhd文件,找到原来的target device,更改此TD的vdisk从masterxp01至masterxp02,
问题:在Standard模式下vm可以正常启动,Private模式下提示上述错误。
在PVSserver上开启debug log,收集Streamprocess.log
2013-01-17 17:44:11,305 [0x00000654] DEBUG CSSProtocol::DoDispatchServiceRequest AcquireLock succeeded for device (XP_vDisk), MAC=14DAE9C75697, DiskId=15 (base disk id = 15, version number = 0)
2013-01-17 17:44:11,305 [0x00000654] DEBUG CSSVirtualDisk::SetUpCacheFilePathAndName Full name of cache file is <D:\Cache\XP_vDisk_vDisk1.vhd> for device <XP_vDisk>
2013-01-17 17:44:11,305 [0x00000654] ERROR CSSVirtualDisk::AttachUnguarded Open vdisk file <vDisk1.vhd> failed for device <XP_vDisk>.
2013-01-17 17:44:11,305 [0x00000654] ERROR CSSVirtualDisk::makeDiskError Windows facility error for disk file access by device <XP_vDisk>. status = 0x5
2013-01-17 17:44:11,305 [0x00000654] DEBUG CManagedVdiskLock constructed for fullPathToLockFile_ = <D:\vDisk\vDisk1.lok>
2013-01-17 17:44:11,305 [0x00000654] ERROR CSSProtocol::DoDispatchServiceRequest Vdisk cannot be accessed for device (XP_vDisk), for base disk id = 15, version number = 0
2013-01-17 17:44:11,305 [0x00000654] DEBUG CSSProtocolModule::DoTraceEvent Login failed (error code: 2) for device XP_vDisk:
Server 192.168.5.252:6929: vDisk file access permission denied
在分析的过程中最直观的看是权限问题,standard模式下只需要对vdisk有读的权限,但是private模式写需要读写的权限,开始怀疑在standard模式下用户开启了版本控制,最新版本有问题。后来方面用户没有相关任何操作。
回到原来的VHD文件,对比2个vdisk的vhd文件发现有异常的vdisk的属性权限中没有NETWORK SERVICE的权限,对比原来的vhd,添加NETWORK SERVICE账户并给出读写权限,再次启动机器后正常工作