镜像导入

导入自定义镜像

导入概述

在导入镜像前,您应该已经完成如下工作:

  • 通读镜像导入说明,保证待导入的镜像满足各种限制和要求

  • 开通对象存储BOS

镜像导入步骤

1.登录百度云对象存储控制台,上传您制做好的镜像文件【参考BOS控制台用户指南】 注:WEB上传不支持直接上传超过5G的文件,如果您的镜像文件实际大小超过5G,请安装【BOS桌面】进行上传
2.登录 云服务器BCC控制台
3.单击左侧导航窗格中的【镜像】
4.单击【导入镜像】按钮
5.填写要导入的镜像信息, 单击【开始导入】

镜像导入限制

Linux系统类型镜像限制

限制类型 介绍
操作系统 支持CentOS、Ubuntu、Debian、OpenSUSE、SUSE发行版的镜像
镜像格式 支持raw和qcow2,qcow2格式由于存在版本兼容问题,需要在上传前进行确认(详见镜像格式检查)
镜像大小 镜像vsize不超过100G
网络 动态获取网络地址;暂不支持IPV6;不支持多个网卡
驱动 镜像必须安装虚拟化平台 KVM 的 virtio 驱动,详情参考 Linux导入镜像检查virtio驱动
cloud-init 镜像建议安装cloudinit,详情见安装【安装cloud-init(Linux)】
文件系统 Linux镜像暂时支持ext3、ext4、xfs文件系统(xfs V5版本文件系统的镜像不支持控制台修改密码);不支持LVM分区

其它建议:

1.请勿修改/etc/issue,否则将导致系统发行版无法被正常识别从而使得系统创建出现问题。
2.请勿修改/boot/grub/menu.lst,否则将导致系统无法启动
3.请勿修改/etc/shadow为只读,否则将导致无法修改密码文件而使得无法登录系统
4.请勿通过修改/etc/selinux/config来开启selinux,否则将导致系统无法启动
5.请勿修改关键系统文件如/sbin, /bin, /lib
目录等
6.请勿调整系统盘分区,目前只支持单个根分区(多分区可能会造成数据注入失败)
7.请检查系统盘使用剩余空间,确保系统盘没有被写满
8.在导入前,请确认文件系统的完整性

Windows系统类型镜像限制

限制类型 介绍
操作系统 Windows Server 2008、 Windows Server 2012、Windows Server 2016数据中心版
镜像格式 支持raw和qcow2,qcow2格式由于存在版本兼容问题,需要在上传前进行确认(详见镜像格式检查)
镜像大小 镜像vsize不超过100G
网络 动态获取网络地址;只支持一个网卡;暂不支持IPV6
驱动 镜像必须安装虚拟化平台 KVM 的 virtio 驱动。Windows系统默认未安装 virtio 驱动,在导入镜像前请先安装virtio驱动
cloud-init 镜像建议安装cloudbase-init,详情见【安装cloudbase-init(Windows)】
文件系统 仅支持使用 MBR 分区的 NTFS 文件系统;不支持 GPT 分区;不支持逻辑卷管理

其它建议:

1.导入Windows操作系统的镜像前,请确认文件系统的完整性。
2.请检查系统盘的剩余空间,确保系统盘没有被写满。
3.请勿修改关键系统文件。

检查virtio驱动

Linux系统检查virtio驱动

1、执行命令“grep -i virtio /boot/config-$(uname -r)”命令检查当前操作系统的内核是否支持virtio驱动。

image.png

说明:

1.如果在输出信息中没有找到VIRTIO_BLK及VIRTIO_NET的信息,则表示该操作系统没有安装virtio相关驱动。需要在您的服务器平台重新编译Linux内核安装virtio驱动。
2.如果参数CONFIG_VIRTIO_BLK及CONFIG_VIRTIO_NET的值为y,表示系统包含了virtio驱动,可以导入镜像到百度云。
3.如果参数CONFIG_VIRTIO_BLK及CONFIG_VIRTIO_NET的值为m,需要进一步确认virtio驱动正确包含进了initramfs或initrd文件中。

2、执行命令:lsinitrd /boot/initramfs-$(uname -r).img | grep virtio,确认virtio驱动是否包含在initramfs或initrd中。

image.png

说明:

如果initramfs或initrd中未找到相关virtio信息,则需重新制作initramfs文件

Windows系统检查virtio驱动

打开设备管理器,找到【磁盘驱动器】、【网络适配器】和【系统设备】,查看是否使用是的virtIO的驱动。如果非virtIO驱动,则需要进行virtIO驱动的安装。

image.png

安装virtio驱动

Linux系统安装virtio驱动

Centos 6 / 7系统

[root@localhost ~]# cp /boot/initramfs-$(uname -r).img  /boot/initramfs-$(uname -r).img.bak     # 先将initramfs进行备份(可选步骤)

[root@localhost ~]# mkinitrd -f --with=virtio_blk --with=virtio_pci /boot/initramfs-$(uname -r).img $(uname -r)

Ubuntu / Debian系统

[root@localhost ~]# echo -e "virtio_pci\nvirtio_blk" >> /etc/initramfs-tools/modules

[root@localhost ~]# update-initramfs  -u

安装cloud-init(Linux)

cloud-init 主要提供实例首次初始化时自定义配置(例:设置主机名)

目前支持安装cloud-init的Linux发行版包括CentOS、Ubuntu、Debian、Fedora、Gentoo、RHEL、SUSE Linux。

如果您的镜像中没有安装cloud-init,请采用以下方式进行安装

在线安装方式

在线安装过程中会自动安装cloud-init所依赖的库,推荐使用该方式。

Ubuntu/debian:apt-get install cloud-init

CentOS:yum install cloud-init

采用官方提供的cloud-init源码包安装cloud-init工具

下载cloud-init源码包:

1)官网下载地址:https://launchpad.net/cloud-init/+download

可以使用:wget https://launchpad.net/cloud-init/trunk/18.3/+download/cloud-init-18.3.tar.gz

2)安装依赖包,推荐使用 Python-pip 安装cloud-init依赖包

[root@localhost ~]#  yum install python-pip -y

[root@localhost ~]#  pip install setuptools jinja2 prettytable oauthlib pyyaml requests jsonpatch jsonschema six

3)解压安装cloud-init

tar -zxvf cloud-init-18.3.tar.gz # 解压源码包

进入源码目录:cd cloud-init-18.3 # 进入源码目录

python setup.py install # 安装

4、设置cloud-init开机启动

若操作系统是sysvinit自启动管理服务,执行以下命令进行设置。

[root@localhost ~]# chkconfig --add cloud-init-local; chkconfig --add cloud-init; chkconfig --add cloud-config; chkconfig --add cloud-final

[root@localhost ~]# chkconfig cloud-init-local on; chkconfig cloud-init on; chkconfig cloud-config on; chkconfig cloud-final on

若操作系统是systemd自启动管理服务,执行以下命令进行设置。

[root@localhost ~]# systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

配置cloud-init

1、根据不同操作系统,从以下链接下载 cloud.cfg,将/etc/cloud/cloud.cfg的内容进行替换【注:不是直接替换文件,而是替换文件内容】

ubuntu14的cloud.cfg
ubuntu16的cloud.cfg
debian8的cloud.cfg
debian9的cloud.cfg
centos6的cloud.cfg
centou7的cloud.cfg

2、从以下链接下载cloud.cfg.d压缩包,替换/etc/cloud/cloud.cfg.d目录下的文件

centos7的cloud.cfg.d文件
centos6的cloud.cfg.d文件

替换方法:

# tar zxvf xxx_cloud.cfg.d.tar.gz

# cd xxx_cloud.cfg.d/

# mv *.cfg  /etc/cloud/cloud.cfg.d/

安装cloudbase-init(Windows)

安装cloudbase-init

下载cloudbase-init到您的windows服务器系统中,执行安装过程。

image.png

image.png

需要将Username修改为:Administrator,并勾选上Use metadata password 和 Run Cloudbase-Init serveice as LocalSystem

image.png

安装完成时,不要勾选下图所示的选项(默认不选择)。

image.png

配置cloudbase-init

修改cloudbase-init的配置文件

配置文件为:C:\Program Files (x86)\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf

在inject_user_password=true下增一行内容:first_logon_behaviour=(或者:first_logon_behaviour=false)

image.png

检测网络配置

在镜像导入前,确保您的系统获取网络地址方式为动态获取。

Linux系统检查网络获取方式

CentOS系统查看网络配置

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=dhcp             # 如果 BOOTPROTO=static 则需要修改为dhcp

Ubuntu/Debian查看网络配置方式

root@instance-x09zr2jc:~# cat /etc/network/interfaces

auto lo

iface lo inet loopback

auto eth0

iface eth0 inet dhcp              # 如果此处为static,则需要修改为dhcp

Windows系统查看网络配置

以Windows2008为例:

在Windows系统上依次选择【开始 】> 【控制面板】>【网络和Internet】>【网络和共享中心】,如图所示

image.png

单击【本地连接】,查看网络连接属性,查看是否启用DHCP,如果已启用DHCP,则无需再进行设置。

image.png

如果没有启动DHCP,则需要设置本地连接的属性,点上图中的【属性】,设置Internet协议版本4,如下图所示。

image.png

系统优化操作(Linux)

修改fstab 文件磁盘标识方式为UUID

在您的系统上运行命令:blkid,返回结果如图示

image.png

cat /etc/fstab文件,查看挂载点 “/” 根目录一行,如下图所示,则无需修改。

image.png

如果第一列显示的是磁盘分区名称,如下图所示,需要编辑/etc/fstab文件,将磁盘分析名称/dev/vda1修改为【UUID=ce4f29f2-f1a9-4c31-95e6-5bc32a698d2b】形式。

image.png

修改grub 文件磁盘标识方式为UUID

使用导入的镜像创建实例,为了能够成功引导系统,强烈建议grub配置文件中,引导磁盘标识为UUID方式。

以centos 7为例,查看/boot/grub2/grub.conf文件,如果显示为root=UUID=ID方式则不需要修改。

image.png

如果显示为root=/dev/方式,则需要通过blkid命令查询对应磁盘分区的UUID,然后在/boot/grub2/grub.conf文件中修改为root=UUID=ID的形式。

image.png

检查grub启动参数

镜像导入百度云平台前,需要检查grub配置文件的启动参数:

CentOS 7 为例,查看/boot/grub2/grub.cfg

image.png

如图所示,在menuentry中,查看红框中所显部分,是否存在“console=tty0 console=ttyS0,115200” 参数。

如果参数不存在,需要编辑/boot/grub2/grub.cfg文件,在ro参数后面添加“console=tty0 console=ttyS0,115200”。

注意对于centos6系统,console=tty0 console=ttyS0,115200也需要在root参数后面,如下图所示

image.png

注:ubuntu系统的grub启动参数为 console=tty1 console=ttyS0,115200n8

配置DNS

为了保证您的镜像导入后,可以正常地访问网络,需要对DNS配置进行设置。

1、CentOS和openSUSE系统

确认/etc/NetworkManager/dispatcher.d/目录是否存在,如果该目录不存在,请先安装NetworkManager

进入/etc/NetworkManager/dispatcher.d/目录,新建一个文件:99-resolvconf,将以下内容写入到名为99-resolvconf文件中。

#!/bin/bash

 resolv_file="/etc/resolv.conf"

 exist_options=`grep -r "options" ${resolv_file}`

 if [ -z $exist_options ];then

     echo "options rotate timeout:1" >> ${resolv_file}

 fi

为99-resolvconf添加可执行权限:chmod +x 99-resolvconf

2、Debian/ubuntu系统

编辑/etc/resolvconf/resolv.conf.d/tail 文件,添加以下内容到文件未尾:

options rotate timeout:1

清理网络规则文件

在您的服务器系统导入百度云前,请先确保/etc/udev/rules.d/70-persistent-net.rules文件为空。

在命令行运行: cat /etc/udev/rules.d/70-persistent-net.rules,如果返回信息中包含如下所示内容:

image.png

请删除所有类似的信息,或者删除/etc/udev/rules.d/70-persistent-net.rules文件。

清空文件内容命令:echo "" > /etc/udev/rules.d/70-persistent-net.rules

删除文件命令:rm -f /etc/udev/rules.d/70-persistent-net.rules

关闭防火墙

以CentOS系统为例。

Centos6系统在终端运行以下命令:

chkconfig iptables off

Centos7系统在终端运行以下命令:

systemctl disable firewalld

Centos系统关闭SElinux

编辑/etc/selinux/config文件,将SELINUX=enforcing修改为SELINUX=disabled。

镜像格式检查

在镜像导入前,需要确认您的镜像格式为raw或qcow2(v2)

安装qemu-img

1) 如果检验平台为Ubuntu操作系统,运行: apt-get install qemu-utils

2) 如果检验平台为CentOS操作系统,运行: yum install qemu-img

3) Windows平台安装qemu-img,请先下载: qemu-img for windows,选择合适的版本进行下载。

windows下安装及设置qemu-img步骤如下:

A、安装qemu-img,本示例安装路径为: C:\Program Files\qemu

image.png

B、为qemu-img配置环境变量:

选择 开始 > 计算机,右键单击 属性。

在左侧导航栏里,单击 高级系统设置。

在 系统属性 对话框里,单击 高级 页签,并单击 环境变量

image.png

在 环境变量 对话框里,在 系统变量 部分找到 Path,并单击 编辑。如果 Path 变量不存在,单击 新建。

image.png

C、添加系统变量值

如果是 编辑系统变量,在 变量值 里,添加 C:\Program Files\qemu,不同的变量值之间以半角分号(;)分隔

image.png

如果是 新建系统变量,在 变量名 处输入 Path,在 变量值 处输入 C:\Program Files\qemu。

image.png

D、设置完成后,可以在命令提示符中输入qemu-img命令进行验证环境变量是否设置成功,如果有关qemu-img的信息输出,则表明设置正确。

image.png

镜像格式检查

使用qemu-img info 命令检查镜像格式,确认导入的镜像文件格式为raw或qcow2。

命令:qemu-img info image_name

image.png

如图所示,如果返回信息中file format为raw或qcow2,表明该镜像符合标准。如果不是raw和qcow2格式,请先进行格式转换。

注:如果检测结果为qcow2,需要进一步检测兼容性。

qcow2镜像兼容性检查

将您的镜像复制到检测系统中,以Linux检测系统为例:

如果linux操作系统为CentOS6:

使用qemu-img info命令查询镜像的qcow2版本,如果输出信息如下所示,则表明qcow2镜像文件为v2版本,无需进行qcow2兼容性转换。

image.png

如果输出信息如下所示,说明该qcow2镜像文件为高版本(V3),需要进行降级处理才能导入百度云。降级操作请参考格式转换章节。

image.png

如果是在CentOS7,Ubuntu14/16/18,debain8/9等平台上使用qemu-img查看qcow2镜像的信息

如下图所示,返回结果中compat为0.10时,无需要进行qcow2的兼容性转换。

image.png

如果返回结果中compat为1.1时,需要对镜像文件进行qcow2的降级操作。

image.png

镜像格式转换

镜像格式转换

qemu-img工具支持raw cow qcow vdi vmdk cloop dmg bochs vpc vvfat qcow2格式之间相互转换。

转换为raw格式,以vmdk格式转换为raw为例:

qemu-img convert  -f  vmdk -O raw  centos.vmdk  centos.raw

转换为qcow2格式,以vmdk格式转qcow2为例:

qemu-img convert  -f  vmdk -O qcow2  -o compat=0.10  centos.vmdk  centos.raw

参数说明:

1.-f 代表源镜像文件和格式
2.-O【大写】代表目标镜像的格式
3.-o 【小写】转换为qcow2格式时需要的必要参数项,参数:compat=0.10表明目标镜像(qcow2)版本为兼容版本。

qcow2兼容性转换

qcow2镜像在导入前,如果需要进行兼容性转换,请运行以下命令:

qemu-img amend -f qcow2 -o compat=0.10  image_name.qcow2

使用镜像检测工具检测镜像

在执行完上述各项操作后,将镜像检测工具下载到镜像的操作系统里边并执行检测。

检查项如下:
|序号|检测项|说明|备注|
|--|--|--|--|
|1| VirtIO驱动|百度云支持KVM虚拟化技术,导入百度云的镜像需要安装KVM virtio驱动 | |
|2 |密码文件权限|/etc/shadow文件需要有写权限(禁止使用chattr命令修改shadow文件权限)| |
|3 |SELinux|导入百度云平台的镜像,在导入前需将SElinux置为disable |
|4 |网络配置|1.需将网络设置为DHCP动态获取IP模式;2.需清空70-persistent-net.rules文件| |
|5 |SSH server服务|1.建议安装openssh-server,并开启sshd服务;2.建议允许root用户登录。| |
|6 |防火墙|导入百度云的镜像,需要关闭防火墙 | |
|7 |文件系统 |推荐使用/ext2/ext3/ext4文件系统|不支持ext4的metadata_csum高级特性| |
|8 |root用户|保留root用户 | |
|9 |修改密码命令|保留passwd/chpasswd命令 | |
|10 |磁盘分区类型|百度云BCC默认支持MBR磁盘分区类型 | |
|11 |逻辑卷(LVM2)|不支持LVM2磁盘类型 | |
|12 |cloud-init|建议安装cloud-init| 用于设置hostname等 |
|13| 磁盘ID| 建议使用磁盘UUID进行/分区的挂载 ||
|14| 磁盘大小| 百度云服务器最大支持500GB系统盘。建议你的系统分区大小不要超过500G| |

下载检查工具到您的系统中,目前仅支持以下几种发行版的Linux:

CentOS:下载
Ubuntu(不支持ubuntu18):下载
Debian:下载
openSUSE:下载
FreeBSD:下载

为检查工具添加可执行权限(以CentOS为例)

# chmod +x check_centos
# ./check_centos

运行结果示例:

-------------------------------------------------------
Distro: centos
Version: 6.3
-------------------------------------------------------
[ check virtio driver ]                      [ OK ] 
[ check /etc/shadow ]                        [ OK ] 
[ check selinux ]                            [ OK ] 
[ check network config ]                     [ERROR] 
[ check sshd service ]                       [WARING] 
[ check firewall ]                           [ERROR] 
[ check file system ]                        [ OK ] 
[ check root ]                               [ OK ] 
[ check passwd command ]                     [ OK ] 
[ check disk partition ]                     [ERROR] 
[ check LVM ]                                [ OK ] 
[ check cloud-init ]                         [WARING] 
[ check disk uuid ]                          [ERROR] 
[ check disk size ]                          [ERROR] 
-------------------------------------------------------
There are 2 warning(s), 5 error(s).
The reslult file is: centos_check_result_20190328221931.txt
Please check result file for the error/warning informations.
-------------------------------------------------------

使用导入的自定义镜像创建实例

使用自定义镜像创建实例步骤

镜像成功导入后,进入您的 云服务器控制台,点击左侧的镜像,可以在镜像列表看到导入的自定义镜像。使用该自定义镜像,创建实例。

成功创建实例后,如果你的镜像系统属于百度云平台支持的准备镜像,建议进行进一步定制化。

Linux系统定制操作

Linux系统设置软件源(建议)

如果您的云服务器操作为百度云支持的标准系统,建议您将软件源设置为百度源。

下载软件源设置脚本到您的服务器上,然后命令行执行:bash setrepo.sh,进行软件源的设置。

Linux系统设置NTP(建议)

如果您的Linux云服务器启用了NTP服务,建议增加百度NTP服务器地址到您的云服务器配置中。

1、编辑/etc/ntp.conf文件,在文件示尾增加一行内容,如下:

server ntpsr.baidubce.com

2、编辑文件:/etc/ntp/step-tickers(如果存在),将文件内容修改为以下:

ntpsr.baidubce.com

Windows系统定制操作

修改更新服务器地址

以Windows server 2008为例:

1、虚拟机 运行gpedit.msc打开【本地组策略编辑器】

2、找到本地计算机策略--计算机配置--管理模板–Windows组件–Windows Update/Windows更新。

image.png

打开右侧的【指定Intranet Microsoft更新服务位置】

image.png

1)指定Intranet Microsoft更新服务位置选择【已启用】

2)在设置检测更新的Intranet更新服务和设置Intranet统计服务器这两处输入:http://windowsupdate.baidubce.com:8530,然后确定。

3、设置完成后,即可使用百度云的更新服务器对Windows系统进行更新补丁操作。

修改激活服务

使用自定义镜像创建的Windows服务器在百度云平台上如果处于未激活状态,需要修改虚拟机的激活服务器配置以激活操作系统。

image.png

找到命令提示符,然后在命令提示符中运行以下命令:

1.slmgr /ckms # 清除KMS服务器设置
2.slmgr /rearm # 重置服务器的状态,此命令执行后重启系统。
3.slmgr /skms 100.64.253.23 # 设置KMS服务器的IP地址,100.64.253.23是北京集群的地址,其它集群请 发工单进行获取。
4.slmgr /ato # 激活 此命令执行成功后会提示操作系统已成功激活

Windows系统安装Baidu bcm-agent(建议)

1、下载bcm_agent到您你的云服务器

登录正在“运行中”状态的云服务器,在浏览器中输入http://repo.bcm.baidubce.com/windows/,跳转到页面

image.png

2、双击安装文件,进行默认安装即可。

image.png

Windows系统安装Baidu HostEye(建议)

1、下载HostEye到您你的云服务器

2、双击安装文件,进行默认安装即可。

image.png