之所以要只有根分区镜像,是因为在创建VM或者调整云主机的硬盘大小时,它能自动扩容。无需人工介入
在原来的物理机10.40.41.1的CentOS 6.7上制作镜像。(当然如果你的制作镜像的宿主机是CentOS7也是一样的)
宿主机坱要安装KVM相关软件:
yum groupinstall Virtualization "Virtualization Client" -y
yum install libvirt libguestfs-tools qemu virt-manager virt-viewer qemu-kvm virt-install bridge-utils -y
service libvirtd start
chkconfig libvirtd on
材料有
CentOS-7-x86_64-DVD-1503-01.iso-----CentOS官网上有得下载 1503代表的是7.1版 1511是7.2版本
上传至10.40.41.1的物理机上的/home目录下
10.40.41.1所在的网段不一定要先配DHCP。
在10.40.41.1上
mkdir /mnt/sdd1/CentOS7-1
cd /mnt/sdd1/CentOS7-1
qemu-img create -f qcow2 CentOS7-1.qcow2 20G
传统KVM创建虚拟机命令
CentOS6.7宿主机上的执行命令
virt-install --name=Centos7-1 --ram=4096 --vcpus=2 --disk path=/mnt/sdd1/CentOS7-1/CentOS7-1.qcow2,format=qcow2,device=disk,bus=virtio --os-type=linux --accelerate --network bridge=kvmbr0,model=e1000 --location=/home/CentOS-7-x86_64-DVD-1503-01.iso --vnc --vncport=5951 --vnclisten=0.0.0.0
CentOS7.2宿主机上的执行命令
virt-install --name test-centos7 --ram 4096 --vcpus 2 --network bridge=kvmbr0 --disk=/mnt/sde1/test/test.raw,size=20 --location=/home/CentOS-7-x86_64-DVD-1511.iso --graphics vnc,listen=0.0.0.0,port=5901 --noautoconsole
在win7的电脑上使用VNC连接
界面长这样
这里我们要更改xfs文件格式变成ext4,直接点完成
分区结束
配置网络IP
让网卡开机自启,然后点完成
开始安装
设置root密码
设置密码:venic8888,然后点2次完成(因为密码太弱,它会提示2次完成)
等它安装完毕
安装 完成 后,宿 主机会把其关机,我们需要在宿主机10.40.41.1上再将其打开
virsh start Centos7-1
接下来我们直接ssh上这台服务器
ssh 10.40.41.161
vi /etc/ssh/sshd_config,修改以下2处配置
UseDNS no
GSSAPIAuthentication no
vi /etc/ssh/ssh_config 修改1处,加2行,添加禁止加host_know和认证
GSSAPIAuthentication no
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
保存退出,重启ssh
service sshd restart
由于我们是使用VNC安装,console界面默认没有开启,虽然openstack使用的是VNC连接,但它的开机的console 日志我们是需要记录看到的。所以我们把它开起来
vi /etc/default/grub
GRUB_CMDLINE_LINUX="console=ttyS0,115200"
启用并刷新grub
grub2-mkconfig -o /boot/grub2/grub.cfg
设置2张网卡为dhcp并onboot=yes,使得虚拟机能自动获取IP地址;(本来一张网卡就足句,但为了适应将来可能会有2个网段的架机,我们配2张以将来不时之需)
vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
NM_CONTROLLED=no
NOZERCONF=yes
vi /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=dhcp
NM_CONTROLLED=no
NOZERCONF=yes
删除我们一开始系统读到的ens3网卡配置,是它读宿主机的网卡信息得到的。当前留着也不会影响,我习惯把它删掉,但下次再将这台虚拟机从这台宿主机启动时,还要再把它配回来,不然后它没有网络
rm -rf /etc/sysconfig/network-scripts/ifcfg-ens3
操作完不用重启网卡
查看SELinux状态:
/usr/sbin/sestatus -v
SELinux status: enabled
enabled表示SELinux为开启状态
关闭SELinux:
vi /etc/selinux/config
设置"SELINUX=disabled"。
查看和关闭firewalld
最新的CentOS7/REHL7防火墙已经更新为firewalld。不是iptables
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
关闭NetworkManager功能
service NetworkManager stop
chkconfig NetworkManager off
yum remove NetworkManager -y
5.安装cloud-init以远程访问:
安装EPEL库
这个7-8的版本将来会随着时间推移而更新而打不开链接,哪果将来有谁做镜像时发现这个链接404时,可以先访问 http://dl.fedoraproject.org/pub/epel/7/x86_64/e/先上去看看版本多少,将链接复制下来即可。
接着安装cloud-init和parted 和acpid
yum install cloud-utils cloud-init parted acpid -y
让电源开关acpid开机自启
systemctl enable acpid
清空 /etc/udev/rules.d/70-persistent-ipoib.rules 文件中的内容,清网卡生成信息,
echo > /etc/udev/rules.d/70-persistent-ipoib.rules
修改元数据在启动下的下发配置,以下贴出生产环境的全部配置。部分是修改过的,比如允许root登录,注入DNS服务器地址等等
vi /etc/cloud/cloud.cfg
users:
- default
disable_root:
ssh_pwauth:
locale_configfile: /etc/sysconfig/i18n
mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2']
resize_rootfs_tmp: /dev
ssh_deletekeys: 0
ssh_genkeytypes: ~
syslog_fix_perms: ~
cloud_init_modules:
- migrator
- bootcmd
- write-files
- growpart
- resizefs
- set_hostname
- rsyslog
- users-groups
- resolv-conf
cloud_config_modules:
- mounts
- locale
- set-passwords
- yum-add-repo
- package-update-upgrade-install
- timezone
- puppet
- chef
- salt-minion
- mcollective
- disable-ec2-metadata
- runcmd
cloud_final_modules:
- rightscale_userdata
- scripts-per-once
- scripts-per-boot
- scripts-per-instance
- scripts-user
- ssh-authkey-fingerprints
- keys-to-console
- phone-home
- final-message
system_info:
default_user:
name: centos
lock_passwd: true
gecos: Cloud User
groups: [wheel, adm, systemd-journal]
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
shell: /bin/bash
distro: rhel
paths:
cloud_dir: /var/lib/cloud
templates_dir: /etc/cloud/templates
ssh_svcname: sshd
# vim:syntax=yaml
都安装一些基础包
yum install -y telnet chrony zip unzip ntp lsof net-tools
建议更新一下GCC和openssl软件,因为服务器如果对外的话,低版本的openssl的攻击的太常见了,
yum install -y gcc gcc-c++ pcre pcre-devel openssl openssl-devel
还有zabbix-agent和salt-minion等等
设置chrony时钟同步服务器,让其开机自启
另外一些linux内核特性的配置和文件句柄ulimit的优化,可以参考《linux学习》笔记中的<镜像制作注意点(已迭代到镜像的第4版本)>
(9)在宿主机上关机: virsh destroy Centos7-1
善后操作
(1)再次清除网络相关硬件生成信息 virt-sysprep -d Centos7-1
(2)压缩镜像 virt-sparsify --compress CentOS7-1.qcow2 CentOS7-1-cloud.qcow2
镜像制作到此结束,将压缩后的镜像上传去openstack平台测试开机2台,是否正常访问外网,MAC地址是否相同,测试调整云主机大小是否自动扩容根分区无需人工介入等等,迁移后是否正常。