今天接到客户的一个关于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账户并给出读写权限,再次启动机器后正常工作