使用Go向vSphere数据存储上传文件失败:数据存储未找到
解决vcsim中govc上传ISO到数据存储的404问题
咱们先拆解你遇到的问题:能通过govc datastore.info查到LocalDS_0,但上传时返回404,vcsim还报找不到存储的错误,大概率是模拟存储的路径权限问题,或者命令参数的细节没处理对。
快速排查你的当前问题
1. 检查数据存储的实际路径权限
你从datastore.info里看到的URL是/tmp/govcsim-DC0-LocalDS_0-926708808,先确认这个目录的读写权限:
ls -ld /tmp/govcsim-DC0-LocalDS_0-926708808
如果输出显示权限是drwx------且属主是root,那当前用户没有写入权限,直接修改权限就能解决:
sudo chmod 777 /tmp/govcsim-DC0-LocalDS_0-926708808
2. 简化govc命令参数(避免解析问题)
vcsim对参数的解析有时候比较严格,先设置govc的环境变量来简化命令:
export GOVC_DATACENTER=DC0 export GOVC_INSECURE=true # 对应你原来的-k=true
然后再执行上传命令:
govc datastore.upload -ds LocalDS_0 /home/jorge/Downloads/ipxe.iso ipxe.iso
3. 重建数据存储(如果上面两步都无效)
如果vcsim的默认存储有模拟异常,直接删除重建一个指定权限路径的存储:
# 删除原有存储 govc datastore.rm -dc DC0 LocalDS_0 # 创建新的本地存储,指定一个你有读写权限的目录 govc datastore.create -dc DC0 -type local -path /tmp/my-local-ds-01 LocalDS_0
之后再尝试上传文件。
标准的vcsim+govc创建数据存储并上传文件步骤
如果以后再从头搭建,按这个流程走就不会踩坑:
1. 启动vcsim模拟环境
先启动带数据中心的vcsim实例:
vcsim -dc DC0
启动后会输出vCenter的地址、用户名密码,直接设置成govc的环境变量(省得每次命令加一堆参数):
export GOVC_URL=https://<你的vcsim地址>:8989/sdk export GOVC_USERNAME=administrator@vsphere.local export GOVC_PASSWORD=password export GOVC_INSECURE=true
2. 创建本地数据存储
手动创建一个本地存储,一定要指定当前用户有读写权限的本地目录:
govc datastore.create -dc DC0 -type local -path /tmp/my-datastore MyLocalDS
3. 验证存储可用性
用info命令确认存储状态正常:
govc datastore.info MyLocalDS
重点看URL对应的目录权限、Free空间是否有数值。
4. 上传文件到存储
用简化的命令上传,不指定目标路径的话,默认会传到存储根目录,文件名和本地一致:
# 上传到根目录,文件名和本地相同 govc datastore.upload -ds MyLocalDS /home/jorge/Downloads/ipxe.iso # 或者指定目标路径和文件名 govc datastore.upload -ds MyLocalDS /home/jorge/Downloads/ipxe.iso /MyLocalDS/custom-name.iso
5. 验证上传结果
用ls命令查看存储里的文件:
govc datastore.ls -ds MyLocalDS
内容的提问来源于stack exchange,提问作者Jorgese
相关产品推荐
相关产品推荐

