专栏首页红帽一步一步导入RHEL镜像到腾讯云
原创

一步一步导入RHEL镜像到腾讯云

背景

Red Hat Enterprise Linux(RHEL)是一个由Red Hat开发的商业市场导向的Linux发行版,Red Hat Enterprise Linux 常被简称为 RHEL. 据IDC统计,到2018年,服务器操作系统市场份额达到33.4%. 目前,在中国大陆市场,RHEL主要为跨国企业或者外资在使用,其他很多企业都始终把CentOS (Community Enterprise Operating System) Linux为红帽系主要操作系统,但红帽于2020年12月8号突然调整商业策略,将CentOS Linux切换为CentOS Stream ,这直接导致CentOS与RHEL上下游关系发生调换,同时由于CentOS Stream不会有固定大版本发布, 虽然后续有Rocky Linux等迅速创建,但是大家应该都知道这里面的影响在哪里,是不是新创建一个版本就能很快解决的,这里我也不再赘叙。

基于以上背景,本文将仅从技术角度讲述如何通过自定义镜像方法将RHEL7.9和RHEL8.2/8.3导入腾讯公有云平台,同时在此声明本篇文章将不涉及任何商业考虑,同时也非官方手册,仅作为自己研究和学习参考。

过程

RHEL导入过程简述

准备

1.一台带有KVM(Kernel-based Virtual Machine)的Linux环境 (我使用的Mac安装VMware Fushion 再虚拟Fedora 33环境)或者任何可以x86虚拟机都行, 这个不重要,不嫌麻烦的话,理论上 可用任何虚拟机,最后转换格式就行,我怕麻烦,直接用了KVM

2.一个有效的腾讯云账号,激活了腾讯云对象存储并且已经创建了存储桶,不然你无法创建实例做测试。

3.一个有效的红帽ID和有效的订阅 - 最少应该包含RHEL Standard订阅,不管是NFR还是Self supported或者花真金白银买的订阅。

步骤

1.不管用什么办法,搞到一个虚拟环境最好带有KVM的,因为本文以KVM为例

2.创建虚拟机,使用下载好的RHEL镜像,存储为qcow2 单文件,RHEL7 分配5G,RHEL8 分配10G (少于10安装失败),不要跟自己过不去,搞太大,上传会浪费时间,存储会浪费money,当然虽然qcow2,vhd,vmdk,raw其实都可以得到支持,但我更喜欢qcow2。

3.安装使用minimal,不需要搞GUI(RHEL8默认会选择GUI,RHEL7默认就是minimal)

4.进入系统开始常规性检查,具体步骤见 https://cloud.tencent.com/document/product/213/17814 ,虽然有官方文档,但我还是要重复一次.

1)检查 OS 分区和启动方式

# parted -l /dev/sda | grep 'Partition Table'

  • 若返回结果为 msdos,即表示为 MBR 分区,请执行下一步。
  • 若返回结果为 gpt,即表示为 GPT 分区。目前服务迁移不支持 GPT 分区,请主动放弃

2)执行以下命令,检查操作系统是否以 EFI 方式启动

#ls /sys/firmware/efi

  • 若存在文件,则表示当前操作系统以 EFI 方式启动,请 提交工单 反馈。
  • 若不存在文件,请执行下一步。

3) 检查系统关键文件

主要为以下文件(默认情况下,RHEL7和RHEL8基本不会有什么问题),确保没有使用磁盘名(如/dev/sda1)挂载的

  • /etc/grub2.cfg: kernel 参数里推荐使用 uuid 挂载 root,其它方式(如 root=/dev/sda)可能导致系统无法启动。
  • /etc/fstab:请勿挂载其它硬盘,迁移后可能会由于磁盘缺失导致系统无法启动。
  • /etc/shadow:权限正常,可以读写。

4)卸载软件

卸载会产生冲突的驱动和软件(包括 VMware tools,Xen tools,Virtualbox GuestAdditions 以及一些自带底层驱动的软件),如果使用KVM,基本可以忽略这些。

5)检查 virtio 驱动

Step 1: 检查内核是否支持:

#grep -i virtio /boot/config-$(uname -r)

  • 如果返回结果中CONFIG_VIRTIO_BLK 参数和CONFIG_VIRTIO_NET 参数取值为 m,直接进入Step 2 -> RHEL 7和RHEL8将会出现这种情况
  • 如果在返回结果中CONFIG_VIRTIO_BLK 参数和CONFIG_VIRTIO_NET 参数取值为 y,表示该操作系统包含了 Virtio 驱动,您可以直接导入自定义的镜像到腾讯云.
  • 如果在返回结果中没有CONFIG_VIRTIO_BLK 参数和CONFIG_VIRTIO_NET 参数的信息,表示该操作系统不支持导入腾讯云.

Step 2:检查临时文件系统是否包含 Virtio 驱动:

#lsinitrd /boot/initramfs-$(uname -r).img | grep virtio

在RHEL7.9上,会符合条件,返回如下:

initramfs返回virtio驱动列表

很不幸,在RHEL 8.2/8.3上,默认情况,你看不到跟RHEL7.9 一样的情况,需要手动添加,新建/etc/dracut.conf.d/virtio.conf,添加如下内容:

add_drivers+="virtio_scsi virtio_blk virtio_net virtio_console"

然后执行如下命令:

# dracut -f

以上命令会创建新的initramfs(不要被官网那些什么编译内核的步骤吓唬到,没那么恐怖)

6) 安装 cloud-init

在这里,我跟官方文档有一些不同意见,当然这仅代表我个人观点, 如果使用源码包或者所谓绿色软件方法安装, 我想最少会存在以下两个问题:

  • 根据红帽的SLA,红帽是不会对任何源码安装的包提供支持,所以任何后续涉及到cloud-init的安全问题或者配置问题,就算你有正规的订阅,你不会得到任何支持,所以任何推荐使用源码包在RHEL上安装的办法都不符合红帽的最佳实践,笔者在海外工作数年,深知安全问题和技术支持问题对大企业的重要性,一个小小的包极有可能引发极大问题,所以对于安装的包的选择都是慎之又慎.
  • 按照源码安装或者绿色安装办法,不管在RHEL7.9还是8.2/8.3上都会存在些许问题,红帽很多包,是通过backport的方法进行支持,为了追求整体系统稳定性,不会轻易升级库的版本(如果你使用过RHEL上的docker,你大概明白我在说什么),所以安装起来不会太过顺利,就算勉强安装上,一旦出现问题,会非常麻烦.

所以在这里,我的观点是使用RHEL标准仓库自带的cloud-init,而不是什么源码的办法,至于具体安装办法很简单,使用订阅,注册到红帽CDN,直接使用yum install -y cloud-init安装最新的cloud-init,安装完成后,创建以下用户

# useradd syslog

然后可以再使用官网提供的cloud.cfg去替换初始文件,并且运行一下命令,激活开机启动:

#systemctl enable cloud-init-local.service

#systemctl enable cloud-init.service

#systemctl enable cloud-config.service

#systemctl enable cloud-final.service

7)更改网络端口到eth0

Step 1: 打开/etc/default/grub, 在GRUB_CMDLINE_LINUX行尾添加:

net.ifnames=0 biosdevname=0

注意:黑石服务器2.0 可能需要更改以下配置:

GRUB_CMDLINE_LINUX=“console=ttyS0,115200 net.ifnames=0 biosdevname=0”

GRUB_TERMINAL="console serial"

GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"

Step 2: 重新编译grub启动配置

# grub2-mkconfig -o /boot/grub2/grub.cfg

Step 3: 打开/etc/sysconfig/network-scripts/ifcfg-xxx,修改如下:

NAME="eth0"

DEVICE="eth0"

保存,同时修改/etc/sysconfig/network-scripts/ifcfg-xxx到/etc/sysconfig/network-scripts/ifcfg-eth0,到此,系统基本修改完毕,关机.

8)上传镜像到对象存储cos

上传之前,确保你已经激活cos和创建一个桶,直接找到/var/lib/libvirt/images/xxx.qcow2文件然后上传到桶内,上传完毕后,直接获取URL

9) 导入镜像

云服务器->镜像->导入镜像

导入镜像1
导入镜像2

注意:

  • 镜像地域需与cos的存储区域保持一致
  • 导入方式选择正常,系统会帮你检查镜像,除非你真的知道自己在做什么,那么可以选择强制,后面手动配置
  • 系统平台,RHEL7可以选择CentOS 7, RHEL8 选择 CentOS 8

点击下一步后,稍等片刻,会提示是否导入成功,如导入失败,可以参看这里,进行对照

https://cloud.tencent.com/document/product/213/4945

10) 创建实例验证,导入完成后,可以直接创建实例验证

总结:整体来说,使用自定义镜像导入镜像到腾讯云较为简单,实现方法也很多种,本文仅仅提供一些基础的步骤,供大家在无聊之余,导入RHEL镜像到腾讯云平台进行尝试.

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 获取免费https认证 详解certbot使用步骤

    对配置子域名有疑问的, 可以查看我之前写过的nginx配置二级域名

    zhaoolee
  • CentOS 下线,TencentOS Server 全新登陆带来最强支持

    ? 作者:joeytao,腾讯 TEG 后台开发工程师 ? 12 月 8 日,CentOS 项目组突然宣布 CentOS Linux 将结束,取而代之的是滚动...

    腾讯技术工程官方号
  • Oracle Linux镜像导入腾讯云指南

    本指南在Oracle Linux R7U5 x86_64 版本进行测试,理论上适用于R7 x86_64版本中各子版本。其他Linux发行版的操作方法也可结合官网...

    蜀相
  • “源产控”系列(一)CentOS 8之初相识

    比较通俗直白一点的说法,CentOS是Red Hat发行的商业版RHEL的开源替代版,也是作为Linux服务器使用的比较主流的开源操作系统之一。

    ZNing
  • winserver离线迁移数据盘到腾讯云的云硬盘

    在源端服务器内下载链接制作镜像工具,下载链接:https://download.sysinternals.com/files/Disk2vhd.zip

    赵智勇
  • 【镜像导入】Windows Server 2008 x86(32位)

    首先需要下载镜像,建议在MSDN itellyou 中下载微软纯净版的系统,网址链接如下:

    高鹏-bryan
  • 【玩转腾讯云】导入镜像-Windows 2008 R2 Datacenter

    【腾讯云】关于Windows Server 2008 R2 企业版 SP1 64位公共镜像下线通知

    大大大黑白格子
  • Linux离线迁移数据盘到腾讯云的云硬盘

    qemu-img convert -f raw -O qcow2 /dev/nvme1n1 /mnt/data-10G.qcow2

    赵智勇
  • WinServer离线迁移到腾讯云

    在桌面输入快捷键win+r打开运行窗口,然后输入 diskmgmt.msc,按 Enter,打开 “磁盘管理”。

    赵智勇
  • 阿里云CentOS 7导入腾讯云指南

    本指南在阿里云CentOS 7.4 64位版本进行测试,理论上适用于阿里云CentOS 7 64位版本中各子版本。其他Linux发行版的操作方法也可结合官网文档...

    蜀相
  • 主机迁移实践分享

    在云计算时代,不管是从IDC上云还是多云直接的迁移,都已经是常见的事宜。而在上云/迁移的方案中,也是有多种的方式能够将主机迁移到腾讯云中。

    腾讯云计算产品团队
  • Aliyun Centos离线迁移到腾讯云cvm

    1.离线迁移需要借助对象存储(COS)的支持,请先确保您所在地域在 COS 支持范围内,详见如下文档:

    赵智勇
  • AWS-WinServer2012离线迁移到腾讯云

    在桌面输入快捷键win+r打开运行窗口,然后输入 diskmgmt.msc,按 Enter,打开 “磁盘管理”。

    赵智勇
  • 腾讯云linux镜像实操手册

    第一步:虚拟机建议选择oracle VirtualBox,安装iso镜像并等待系统安装完成,选择创建的格式要是腾讯云支持的格式。

    jacoblan
  • Aliyun Ubuntu离线迁移到腾讯云

    1.离线迁移需要借助对象存储(COS)的支持,请先确保您所在地域在 COS 支持范围内,详见如下文档:

    赵智勇
  • 【云+社区年度征文】Docker教程(1)—Docker简介与安装

    我们开发一个项目的时候通常会有两个环境,本地测试环境和线上环境。项目开发上线的时候,我们通常会把项目打成一个jar包或war包上传到线上的服务器,此时为了让项目...

    AlbertYang
  • 如何内网使用Cloud云最新MSP迁移工具箱Docker镜像?

    MSP 迁移服务平台官网控制台上提供的工具,使用腾讯云内公共服务资源、通过公网进行迁移,对于部分迁移项目有以下情况及说明:

    TCS-F
  • Docker 入门实践

    本文从新手视角记录了一个实际的 Dokcer 应用场景从创建、上传直到部署的详细过程,并简单的介绍了腾讯云容器服务的使用方法。

    张戈
  • Docker新手入门实战教程

    摘 要 本文从新手视角记录了一个实际的Dokcer应用场景从创建、上传直到部署的详细过程,并简单的介绍了腾讯云容器服务的使用方法。通过Docker快速拉起一个...

    张戈

扫码关注云+社区

领取腾讯云代金券