V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
atuocn
V2EX  ›  Linux

centos7 从 Hyper-V 的一代虚拟机迁移到二代虚拟机

  •  
  •   atuocn · 2018-06-29 13:41:56 +08:00 · 2923 次点击
    这是一个创建于 2099 天前的主题,其中的信息可能已经有所发展或是发生改变。

    CentOS 官网上下载的 GenericCloud 镜像是 VHD 格式,MBR 分区,只能挂着 Hyper-V 的一代虚拟机上。Hyper-V 二代虚拟机使用 VHDX 格式,使用 UEFI 启动。迁移到二代机,主要是修改磁盘格式,转为 GPT 分区和激活 UEFI 启动系统

    1. 首先修改磁盘格式为 VHDX

      • 使用 Hyper-V 管理器,编辑磁盘,把 CentOS-7-x86_64-GenericCloud.vhd 转换成 CentOS-7-x86_64-GenericCloud.vhdx
      • 因为 GPT 启动要建立 ESP 分区,所以需要扩大磁盘( centos 使用 xfs 文件系统,gparted 不支持缩小 xfs 分区。)。仍使用 Hyper-V 管理器,编辑磁盘,扩展,最少增加 1G。那就增加 2G 吧,多点空间随便做个交换分区。
    2. 使用 Hyper-V 建立 2 代虚拟机。添加上一步建立的 vhdx 磁盘,添加光驱。注意在“设置->固件”中把安全启动去掉,并在启动顺序把光盘启动提前。

    3. 转 MBR 分区为 GPT 分区

      对系统所在的磁盘做分区操作需要救急光盘。hyper-v 二代虚拟机,只在 UEFI 上启动,所以要使用支持 UEFI 启动的救急光盘。gparted-live-0.31.0-1-amd64.iso ,在移动磁盘分区的时候闪退。后来用super_grub2_disk制作的救急光盘 rescatux-0.51b3.iso ,可以工作。

      说实话被 linux 下名目繁多的分区工具闪花了眼。总结如下:

      • gparted GNOME 的图形化分区工具,支持 GPT 和 MBR。支持无损移动 /修改分区大小(视文件系统)
      • fdisk 传统的分区工具,早期版本不支持 GPT,现已支持 MBR 和 GPT。支持交互式操作。
      • gdisk 对应 fdisk 的 GPT 分区工具。支持交互操作模式。特色功能是无损转 MBR 到 GPT 分区,还能建立混合 GPT/MBR

      首先,使用 gparted 移动和扩展已有的数据分区,这样新建的分区可以放到前面。当然也可以直接在原分区的末尾添加一个 UEFI 的启动 ESP 分区,但以后想扩展分区容量时,附在分区末尾的疤一样的存在就很讨厌了。

      centos7 使用 xfs 文件系统,gparted 只能扩大和移动,不能缩小。移动原数据分区到末尾,注意末尾留下 1M 的空间。因为 GPT 会在磁盘末尾 33 个扇区备份分区表,留 1M 空间是为保持 1M 对齐。磁盘前面,留下 1G+10M 左右空间,其中 1G 做 swap 分区,零头 10M 左右为 UEFI 的启动分区,ESP 分区。

      其次,使用 gdisk 把 MBR 格式转成 GPT 格式。转格式方法很简单,sudo gdisk /dev/sda 打开硬盘设备后,直接 w,写入硬盘就可以了。当然,gdisk 在 GPT 分区上还是有特色的,我们继续用它创建好分区。在交互模式下,先建立 swap 分区(分区类型 8200)和 ESP 分区(分区类型 EF00),然后记得按 s 对分区表重新排序。

    最后,为 ESP 分区建立文件系统,假设排过序后,ESP 分区在第一个分区::

    sudo mkfs -t vfat /dev/sda1
    

    ESP 分区上要有 FAT 的文件系统。否则在后面的步骤时会无法启动系统。

    1. 激活 centos 的 UEFI 启动

      使用super grub2 disk的另一个工具光盘,super_grub2_disk_hybrid_2.02s10-beta5.iso ,别费力用刚才的 rescatux-0.51b3.iso 光盘里的 easy gnu/linux boot fix 功能,在这里没用。super_grub2_disk_hybrid_2.02s10-beta5.iso,是个启动工具,帮助启动受损的系统,通过它启动进入系统。

      使用 super_grub2_disk_hybrid_2.02s10-beta5.iso 启动系统,检测到虚拟机上已存在的 centos7 后,选择并进入。然后安装 grub 的 EFI 启动器。

      • 修改 /etc/fstab。先使用 sudo blkid 查看各分区 id 及文件系统。然后修改 /etc/fstab,把 ESP 分区和 swap 分区加上,ESP 分区挂载 /boot/efi 目录。

      • sudo mount -a 重新挂载文件系统

      • 安装 grub 的 EFI 启动器::

        sudo yum install grub2-efi-x64-modules
        sudo yum install efibootmgr
        sudo grub2-install --target x86_64-efi --bootloader-id=centos /dev/sda
        sudo grub2-mkconfig -o /boot/grub2/grub.cfg
        

    OK. 移除光盘,重新启动系统。正常进入 centos7。


    从我的 oschina 的空间2转载至此

    1 条回复    2018-06-29 13:58:29 +08:00
    la0wei
        1
    la0wei  
       2018-06-29 13:58:29 +08:00
    微软自己的群集管理器里说来宾系统至少 win8 或 2012,我倒是没有思考与一代有什么根本性的差异,学习了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1011 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:31 · PVG 03:31 · LAX 12:31 · JFK 15:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.