有些用户在使用Azure Linux 虚拟机安装软件时,有些软件的license会和当前系统的mac地址绑定,那么在Azure VM重启,reszie(改变尺寸大小),停止然后再启动的时候,虚拟机的Mac地址会不会发生变化呢?Azure VM上的Mac地址是如何持久化的呢?

 

我们分VM在vNet和不在vNet中的情况来做一个测试。

 

不在vNet中的测试虚拟机

 

  1. 我们快速创建一台测试的Linux Ubuntu虚拟机,不设置vNet, 意思是该虚拟机不在设定的vNet中,一般是作为测试使用
  2. 登录到系统里面,记录系统当前的mac地址:

    00:17:fa:00:4f:9b

  3. 然后我们重启虚拟机,reboot系统,然后得到mac地址,可以看到mac地址和原来一样,没有发生变化:

    00:17:fa:00:4f:9b

  4. 当前虚拟机大小是A3,那么我们来坐下resize,将其升成A4大小的机器:

     

     

  5. 升级完成之后,系统会重启,然后我们登录进系统检查mac地址,发现内部的IP地址已经发生了变化,但mac地址保持不变:

    00:17:fa:00:4f:9b

     

     

     

  6. 同样的测试流程将机器从A4降到A2,

     

    Mac地址:00:17:fa:00:4f:9b

     

  7. 最后测试一下,在Azure的管理界面,停止虚拟机,取消分配的情况下,mac地址的变化。我们先停止虚拟机,选择"关闭":

     

    通过这种方式将虚拟机停止后,你会看到界面显示"已停止(取消分配)",在这种情况下,虚拟机资源被完全释放掉,不计算计算费用,只计算存储费用

  8. 启动虚拟机,然后检查mac地址:

虚拟机Mac地址变为:00:17:fa:00:3a:29 和之前的Mac地址00:17:fa:00:4f:9b不同,也就是说只有在虚拟机停止(取消分配)的情况下,Mac地址才会发生变化。

vNet中的虚拟机

  1. 测试方法和上面不在vnet中虚拟机类似,差别在于在本测试案例中,虚拟机在vnet中,如下图所示:

  2. 为节约篇幅,此处不再一一列举测试过程,和不在vnet中虚拟机的测试过程一样,分别测试:
    1. 重启虚拟机
    2. 升级到大尺寸虚拟机
    3. 降低到小尺寸虚拟机
    4. 停止(取消分配),然后重新启动

总结

目前Azure的虚拟机在一下情况下,无论VM是否在vNet中,MAC地址都不会发生变化:

  1. 重启虚拟机
  2. 升级到大尺寸虚拟机(resize)
  3. 降级到小尺寸虚拟机(resize)

在下面情况下,无论VM是否在vNet中,MAC地址都会发生变化:通过Azure的管理界面停止虚拟机,显示取消分配,然后再启动mac地址会发生变化.

请注意,如果你是通过虚拟机内部执行命令shutdown/poweroff,虚拟机并不会关闭或者断电,而是会继续计费,当然这个时候MAC地址也不会被释放,当你重启机器的时候,依然保持不变。

所以对于那些依赖MAC地址做license绑定的用户,如果你的虚拟机不需要关机,停止分配,重启,resize等都不会有问题,在未来Azure也会发布新的功能,保持Azure虚拟机无论在哪种场景下,MAC地址都不会改变。

 

 

 

Azure上Linux虚拟机Mac地址的持久化的更多相关文章

  1. Azure 上 Linux 虚拟机 Mac 地址的持久化

    有些用户在使用 Azure Linux 虚拟机安装软件时,有些软件的 license 会和当前系统的 mac 地址绑定,那么在 Azure VM 重启,reszie(改变尺寸大小),停止然后再启动的时 ...

  2. 缩减Azure上Linux虚拟机系统盘容量

    [话在前头] 这么些年微软 Azure 创建虚拟机一直不能修改系统盘大小,但很多时候实际又用不了这么大的操作系统磁盘.微软自己甚至还针对 Windows 服务器镜像推出一个 smalldisk 的镜像 ...

  3. 纠结好久的VM虚拟机MAC地址绑定问题

    VM虚拟机(centos)采用桥接的方式访问网络,搭建一个Online Judger 的 web服务端.本想让虚拟机的ip能够固定下来,因此在路由上采用MAC和IP绑定的方式解决. 结果:每次重启虚拟 ...

  4. 阿里云至 Windows Azure 的 Linux 虚拟机迁移

    在Windows Azure中,用户可以对部署在Azure中的虚拟机的映像.磁盘以及快照进行生成和下载.用户可以方便地将Azure中的虚拟机实例迁移到本地.私有云甚至其他公有云平台进行测试.扩展或者再 ...

  5. linux 通过 mac地址 查询 ip 和 清除arp 缓存

    问题重述: 今天,突然找不到vm 的ip 了,但是可以从网卡状态上看到其 mac 地址,并且确定主机是启动状态,网络状态良好(后来发现因为子网掩码的问题,导致虚拟机和网关之间不通信,从而导致其他网络的 ...

  6. Windows Azure 上 Linux VM 中的交换空间 – 第 2 部分

    本文章由 Azure CAT 团队的 Piyush Ranjan (MSFT) 撰写. 在前一篇文章 Windows Azure 上Linux VM 中的交换空间第 1 部分中,我介绍了在默认情况下, ...

  7. Linux修改MAC地址方法

    Linux修改MAC地址方法 - Linux modifies MAC address method ifconfig wlan0 down ifconfig wlan0 hw ether MAC地址 ...

  8. Linux根据MAC地址自动设置IP

    Linux根据MAC地址自动设置IP #!/bin/sh #============config============ route_defa=60.12.70.65 addr_ip= link_ma ...

  9. 解决hyerv的linux虚拟机网卡地址重启发生变化的问题

    关于linux的虚拟机,当进行虚拟机copy的时候,由于虚拟机配置文件里面会记录网卡的mac地址,所以导致linux里面记录的网卡地址和实际的会有冲突,这样linux会自动把网卡地址提高. 比如原来是 ...

随机推荐

  1. re模块

    Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,和 Perl 脚本的正则表达式功能类似,使用这一内嵌于 Python 的语言工具,尽管不能 ...

  2. Roads in the North(POJ 2631 DFS)

    Description Building and maintaining roads among communities in the far North is an expensive busine ...

  3. 添加鼠标右键菜单项(EditPlus为例)

    下载Editplus,发现大多是绿色版,这就导致鼠标右键快捷菜单了,使用起来不方面,上网搜集了下资料,解决方法很简单: 首先进入注册表:regedit 然后如图设置新项. 其中editplus是右键菜 ...

  4. HttpContext请求上下文对象

    一.HttpContext概述 HttpContext基于HttpApplication的处理管道,由于HttpContext对象贯穿整个处理过程,所以,可以从HttpApplication处理管道的 ...

  5. win7 奇怪的temp用户

    在C:\Users\TEMP 有个temp用户,win+r打开的也是 C:\Users\TEMP>,而不是C:\User\Administrator. 以下文章转自: http://hi.bai ...

  6. HDOJ-1010 Tempter of the Bone(dfs+剪枝)

    http://acm.hdu.edu.cn/showproblem.php?pid=1010 给出一个n*m的迷宫 X为墙 .为空地 S为起点 D为终点 给出时间T 每走一步花费一单位的时间 走过的空 ...

  7. zoj3433(贪心+优先队列)

    Gu Jian Qi Tan Time Limit: 2 Seconds      Memory Limit: 65536 KB Gu Jian Qi Tan is a very hot Chines ...

  8. 类linux系统/proc/sysrq-trigger文件功能作用

    立即重启计算机      echo "b" > /proc/sysrq-trigger 立即关闭计算机      echo "o" > /proc/ ...

  9. Java菜鸟学习笔记--数组篇(三):二维数组

    定义 //1.二维数组的定义 //2.二维数组的内存空间 //3.不规则数组 package me.array; public class Array2Demo{ public static void ...

  10. Unity扩展 自定义事件Send组件

    在写项目的时候,我创建了一个方法里面需要一个int的参数.  我记得是UIEvent Trigger 不能直接传递一个数字,最多只能传递一个GameObject属性过去(=.=那个值不想再组件上定义) ...