前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用RunInstances创建Windows服务器时,UserData对应的代码不要有中文字符

用RunInstances创建Windows服务器时,UserData对应的代码不要有中文字符

原创
作者头像
Windows技术交流
发布2022-06-16 02:18:10
8860
发布2022-06-16 02:18:10
举报
文章被收录于专栏:Windows技术交流Windows技术交流

购买cvm时一并加购的数据盘勾选初始化实际就是调用的userdata实现的,现在有些情况勾选了,但数据盘初始化完成不了,我系统分析了下,其中一个原因就是userdata所用的powershell代码里有中文。

多次测试,黄色标记的那几个镜像勾选快速初始化数据盘的按钮买的机器能稳定地复现不能初始化数据盘的情况

我debug了购买cvm时勾选初始化数据盘后自动生成的userdata代码,已经定位问题,黄色标记的8个镜像不能自动初始化数据盘,分3种情况

①2008R2~2022五个中文版,推测是cloudbase-init不支持中文 ,判断匹配不上,导致获取不到磁盘号,从而导致在初始化盘时失败

②2022英文版、2022safe英文版

因为2022镜像系统盘有3个分区(2022之外的其他镜像都是2个分区),英文版正好能匹配前半部分所以正好进入循环,最终TotalVolume=3 正好命中下面≥3的逻辑,这个逻辑认为不上新实例不予初始化,直接exit代码

③2008R2 safe英文版

这个比较特殊,不行是因为磁盘只读,在执行分区命令之前需要处理磁盘只读,而代码里缺少处理只读的逻辑

正确的diskpart这句命令必不可少

attr disk clear readonly NOERR

另外就是默认的簇(unit或者叫cluster)4096有16T的局限,腾讯云数据盘最大32T,考虑在内的话,unit至少应该设置8192

8192是为了保证持续扩容能用到腾讯云最大32T

阿里云同样有初始化数据盘的功能,但也很low。下图是我在阿里云的测试。阿里云默认不管多大盘都是按mbr初始化,超过2T的盘按MBR分区就只能到2T,这肯定没法参考。但阿里云至少都能完成初始化,这点比腾讯云好点。

腾讯云购买界面初始化数据盘我写了个比较健壮的代码(因为是串行来搞的,盘比较大、比较多的情况下,初始化比较慢,要多等一会儿才行,比如购买机器后过5分钟再看效果)。

我下面这个txt里是2段userdata 的对比,绿色圈出的是我自己写的,测试满足腾讯云所有Windows公共镜像,红色那个是腾讯云自动生成的,测试在上面说的8种Windows镜像上不行。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档