之所以要只有根分区镜像,是因为在创建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库
接着安装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地址是否相同,测试调整云主机大小是否自动扩容根分区无需人工介入等等,迁移后是否正常。
- openstack私有云布署实践【16.2 Ubuntu1404 只有根分区镜像制作】
之所以要只有根分区镜像,是因为在创建VM或者调整云主机的硬盘大小时,它能自动扩容.无需人工介入 在原来的物理机10.40.41.1的CentOS 6.7上制作镜像. 宿主机坱要安装KVM相关软件: ...
- openstack私有云布署实践【16.3 Windows Server2008 R2 只有C盘分区镜像制作】
之所以要只有C盘分区镜像,是因为在创建VM或者调整云主机的硬盘大小时,它能自动扩容.无需人工介入 参考http://www.iyunv.com/thread-45149-1-1.html的灵感 ...
- openstack私有云布署实践【12.2 网络Neutron-controller节点配置(办公网环境)】
网络这一块推荐使用的是 Neutron--LinuxBirdge的Ha高可用,此高可用方案对Public作用不是很大,Public只用到DHCP,而Private则会用到L3 Agent,则此方案是有 ...
- openstack私有云布署实践【12.1 网络Neutron-controller节点配置(科兴环境)】
网络这一块推荐使用的是 Neutron--LinuxBirdge的Ha高可用,此高可用方案对Public作用不是很大,Public只用到DHCP,而Private则会用到L3 Agent,则此方案是有 ...
- openstack私有云布署实践【0 前言】
管理控制层面示图: 其实在修改这个布署文档是,我发现当时生产中的布署已经严重偏离了openstack高可用的指导思想.我们自己实践的高可用其实是适应自己的架构而做的调整,因为我们现实手头上中没有比较符 ...
- openstack私有云布署实践【9.3 主从controller单向同步glance-image目录】
采用Rysnc单向同步,而不用双方实时同步,原因是在历史的运行过程中,我们发现,有些镜像包太大,当在主用的glance将镜像保存时,并不是一时半会就把镜像保存好,当主用在保存时,备用节点又在实时同步那 ...
- openstack私有云布署实践【15 创建租户网络+实例】
这里以办公网测试环境为例, (一)创建租户demo的网络 使用admin用户 source admin-openrc.sh 创建public公网 neutron net-create 1040 ...
- openstack私有云布署实践【19 通过python客户端 创建实例VM指定IP地址】
还有一种创建方式 是使用py开发工具,调用openstackclient的方法进行创建实例 ,好处就是可随意指定我们要的虚拟机IP地址,需求的场景就是,某天我们需要主动分配一个比较熟知的IP用作某个服 ...
- openstack私有云布署实践【11.3 计算nova - compute节点-nova用户免密登录(用于云主机冷迁移+扩展云主机大小)】
云主机迁移+扩展云主机大小 ,官方说它依赖nova用户之间的免密登录.确保每个resion区域的compute节点服务器他们可以相互SSH免密 compute1-7 他们相互SSH免密 k ...
随机推荐
- 【转载】Servlet Filter(过滤器)、Filter是如何实现拦截的、Filter开发入门
Servlet Filter(过滤器).Filter是如何实现拦截的.Filter开发入门 Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过F ...
- C语言之进制
进制 一种计数的方式.侧重点在于计数的时候是逢多少进一. 1) C语言可以识别的进制 二进制 每一位. 0 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 1 0 在C语言中,写 ...
- 【C#】Creating/Querying/Modifying the .mdb databases
As for databases, there are quit many kinds such as foxpro, mysql, sqlserver, etc. But when we need ...
- Oracle 数据备份、恢复以及导入时表空间不存在的解决方案
一.数据备份(导出) 1.exp命令导出dmp文件(exp -help查看帮助信息) 命令:exp username/userpasswd@192.168.99.199/orcl file=C:\jd ...
- 【转】深入理解javascript原型和闭包(完结)
直接传送门-------------------->>>>>>>> 深入理解javascript原型和闭包(完结)
- Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)的解决方法
在连接数据库时,报这个错误,是/var/lib/mysql/ 目录下没有mysql.sock文件,在服务器搜索myslq.sock文件,我的是在/tmp/mysql.sock 解决方法是加一个软链: ...
- D3.js:力导向图
var nodes = [ { name: "桂林" }, { name: "广州" }, { name: "厦门" }, { name: ...
- Objective-C运行时态消息传递--拼接方法名
做IOS开发的人都知道,Objective-C语言中方法的调用是运行时采取绑定的,在编译过程中只声明该方法的存在. 那么我们来简单说下在运行时,类的消息传递. 在运行时,每个方法如[self meth ...
- linux下正确安装jsoncpp
要安装jsoncpp,首先要下载好scons,再去安装jsoncpp scons下载地址:wget http://prdownloads.sourceforge.NET/scons/scons-2.2 ...
- qsort()函数(C)
qsort包含在<stdlib.h>头文件中,此函数根据你给的比较条件进行快速排序,通过指针移动实现排序.排序之后的结果仍然放在原数组中.使用qsort函数必须自己写一个比较函数. 函数原 ...