通知设置 新通知
kvm虚拟机克隆过程详解
大数据 koyo 发表了文章 2 个评论 6023 次浏览 2015-10-17 18:44
- []克隆镜像使用时间较长[/][]克隆出来的镜像大小较大,如上面所说的主机,那克隆出来的镜像大小为220G[/]
所以基于这种情况,ucloud的上面的云主机默认创建的主机系统磁盘大小为20G,创建镜像的时候只会克隆系统盘!所以你要做基准镜像,就需要先创建一个基准系统,安装好服务,然后做镜像,最后挂载数据盘!
同样我们公司内网也使用了一些kvm虚拟机作为内网的测试环境和一些服务。下面简单的记录自己的笔记,总结还是看自己的笔记比较有思路,回头看思路比较清晰!
查阅资料和书籍,kvm虚拟机克隆有如下两种方式:
- []KVM本机虚拟机直接克隆[/][]通过复制xml文件与磁盘文件复制克隆 (适用于异机的静态迁移和状态保存便于以后使用)。[/]
1、查看虚拟机配置文件获取磁盘文件路径一、本机直接克隆
[root@kvmsuzhu2 ~]# cat /etc/libvirt/qemu/hysen_6101_101.xml |grep 'source file'|grep img [root@kvmsuzhu2 ~]# cat /etc/libvirt/qemu/hysen_6101_101.xml |grep '^.*/name>$'克隆前确认主机已经关闭:hysen_6101_101 [root@kvmsuzhu2 ~]#
[root@kvmsuzhu ~]# virsh list --all Id 名称 状态---------------------------------------------------- 3 dev_5974_74 running 14 dev_5954_54 running - hysen_6101_101 关闭 - openstack_5978_78 关闭
不关闭则克隆会报ERROR Domain with devices to clone must be paused or shutoff.2、开始克隆
[root@kvmsuzhu2 ~]# virt-clone -o hysen_6101_101 -n hysen_6103_103 -f /data1/vmdisk/hysen_6103_103.img 正在克隆 hysen_6101_101.img | 30 GB 13:55 Clone 'hysen_6103_103' created successfully.克隆已经完成30G的大小!
3、修改vnc端口号,启动主机[root@kvmsuzhu2 ~]# cat /etc/libvirt/qemu/hysen_6103_103.xml |grep 'vnc'4、修改主机名、ip地址[root@kvmsuzhu2 ~]# virsh edit hysen_6103_103 //这里你必须用virsh edit命令编辑配置文件,用vim编辑是不会生效的!编辑了域 hysen_6103_103 XML 配置。[root@kvmsuzhu2 ~]# cat /etc/libvirt/qemu/hysen_6103_103.xml |grep 'vnc' [root@kvmsuzhu2 ~]# virsh start hysen_6103_103.xml域 hysen_6103_103 已开始[root@kvmsuzhu2 ~]# netstat -anltp |grep 6103tcp 0 0 0.0.0.0:6103 0.0.0.0:* LISTEN 13740/qemu-kvm [root@kvmsuzhu2 ~]#
修改主机名[root@hysen_6101_101 ~]# vi /etc/sysconfig/networkNETWORKING=yes NETWORKING_IPV6=no HOSTNAME=hysen_6103_103 GATEWAY=10.0.1.1[root@hysen_6101_101 ~]# hostname hysen_6103_103修改IP地址[root@hysen_6103_103 ~]# vi /etc/sysconfig/network-script/ifcfg-eth0# Virtio Network Device DEVICE=eth0 BOOTPROTO=static ONBOOT=yes HWADDR=52:54:00:ae:1d:7b IPADDR=10.0.1.117 NETMASK=255.255.255.0注意修改mac地址,有uuid的配置修改uuid配置[root@hysen_6103_103 ~]# service network start重启报错:device eth0 does not seem to be present, delaying initialization如下操作解决:[root@hysen_6103_103 ~]# rm -rf /etc/udev/rules.d/70-persistent-net.rules 有说修改文件把eth0和eth1互换的也可以![root@hysen_6103_103 ~]# reboot重启网卡服务[root@hysen_6103_103 ~]# service network start Bringing up loopback interface: [ OK ] Bringing up interface eth0: [ OK ] [root@hysen_6103_103 ~]#
我们这里还是拿hysen_6101_101虚拟机作为模板机器克隆。同样这种方法也需要模板机器已经关机!1、复制xml配置文件二、通过复制xml文件与磁盘文件复制克隆
[root@kvmsuzhu2 ~]# virsh dumpxml hysen_6101_101 > /etc/libvirt/qemu/hysen_6105_105.xml[root@kvmsuzhu2 ~]# ls -l /etc/libvirt/qemu/hysen_6105_105.xml-rw-r--r-- 1 root root 2748 10月 17 17:50 /etc/libvirt/qemu/hysen_6105_105.xml[root@kvmsuzhu2 ~]#2、复制hysen_6101_101虚拟机磁盘文件
[root@kvmsuzhu2 ~]# cp /data1/vmdisk/hysen_6101_101.img /data1/vmdisk/hysen_6105_105.img[root@kvmsuzhu2 ~]# ls /data1/vmdisk/hysen_6105_105.img/data1/vmdisk/hysen_6105_105.img[root@kvmsuzhu2 ~]#3、修改拷贝的配置文件
- []修改虚拟机的名称:
此时还是将该配置文件注册进来,无法通过virsh edit进行编辑。
[root@kvmsuzhu2 ~]# vim /etc/libvirt/qemu/hysen_6105_105.xml4、定义新虚拟机配置文件
hysen_6101_101
13178d42-1055-8b94-1411-3c2bdd0e6e7a
[root@kvmsuzhu2 ~]# virsh define /etc/libvirt/qemu/hysen_6105_105.xml5、启动虚拟机并设置开机自启
定义域 hysen_6105_105(从 /etc/libvirt/qemu/hysen_6105_105.xml)
[root@kvmsuzhu2 ~]#
[root@kvmsuzhu2 ~]# virsh start hysen_6105_1056、vnc连接修改主机名、ip地址
域 hysen_6105_105 已开始
[root@kvmsuzhu2 ~]# virsh autostart hysen_6105_105
域 hysen_6105_105标记为自动开始
[root@kvmsuzhu2 ~]# virsh list --all |grep hysen_6105_105
237 hysen_6105_105 running
[root@kvmsuzhu2 ~]#
4、修改主机名、ip地址两种不同的方式有各有特点,你可以针对特点选择性使用!
修改主机名
[root@hysen_6101_101 ~]# vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=hysen_6105_105
GATEWAY=10.0.1.1
[root@hysen_6101_101 ~]# hostname hysen_6105_105
修改IP地址
[root@hysen_6105_105 ~]# vi /etc/sysconfig/network-script/ifcfg-eth0
# Virtio Network Device
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
HWADDR=54:52:01:11:12:1f
IPADDR=10.0.1.118
NETMASK=255.255.255.0
重启网卡服务
[root@hysen_6105_105 ~]# service network start
重启报错:device eth0 does not seem to be present, delaying initialization
如下操作解决:
[root@hysen_6105_105 ~]# rm -rf /etc/udev/rules.d/70-persistent-net.rules 有说修改文件把eth0和eth1互换的也可以!
[root@hysen_6105_105 ~]# reboot
重启之后再次登陆重启动网卡:
[root@hysen_6105_105 ~]# service network start
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]
洋葱数学-运维工程师
求职招聘 OpenSkill 发表了文章 0 个评论 3907 次浏览 2015-10-16 23:45
运维工程师
职位描述:
想获得更多的技术与个人提升空间?快来加入我们吧!我们使用最前沿的MEAN架构,技术团队每个人都有 full-stack能力,前后端开发测试移动运维大数据,要啥有啥!我们运用最高效的团队管理方式,每个人都乐于学习与分享。快来和技术大牛们一起变的更牛吧!
【工作说明】工作职责:
我们基于MEAN架构开发全平台产品(Web / 手机 / Pad),技术团队每个人都有full-stack能力,前后端开发测试移动运维大数据?要啥有啥!
1、 负责所有的互联网运维职位要求:
- 一般运维工程师都会做的事
- 开发、测试和生产环境的架构设计和优化
- 生产环境的性能分析
- 合理使用云资源,精打细算
2、 所有办公室IT相关支持
- 一般IT工程师都会做的事(包括硬件检修)
- 办公自动化的不断创新和优化
3、部分统计分析工作
1、一年以上运维经验职位诱惑:
2、熟悉Linux+Docker+Git+Nginx+Nodejs+MongDB+Redis+CDN+云计算
3、工作环境为GNU/Linux操作系统
4、自身是Geek, Cracker, Hacker其中之一
5、具备学习欲望+学习能力+责任感+沟通能力+创造力+耐心+完美主义
6、北京 经验1-3年 大专及以上 全职
7k-12k 免费早午餐+15天年假+带薪病假+弹性工作联系我们:
对职位有兴趣的同学发邮件到 jobs@guanghe.tv关于我们:
http://yangcong345.com 在光合新知,我们重新定义在线教育的产品设计逻辑
五年前,一群来自哈佛、杜克、北大的教育、心理、计算机背景的年轻人,面对农村学校教学水平有限、学习枯燥的症结,开始了自己的实践;
五年后,我们带着独一无二的在线深度学习产品,远超行业水平的课程内容和学习体验,四十多人的全职团队,一年两轮数百万美元国际顶级投资机构的融资,用全国几千所学校师生(包括大量国家级和省市级重点)的认可给出了自己的答案。
我们是最优秀踏实的互联网教育团队,课程团队来自哈佛、斯坦佛、杜克、斯坦福、北大、学而思等;产品技术团队来自百度、微软、腾讯、创新工场等。跨界背景涵盖教育心理学、认知科学、互联网产品、动画设计,产品质量和深度远超行业水平。
老北京胡同中的LOFT、600平大天台眺望前门、xbox/playstation/各式桌游、饮料零食、免费午餐,还有兔子猫和仓鼠……充满理想智趣的团队,就是等你来!
更科学的使用搜索引擎
学习资源 OpenSkill 发表了文章 0 个评论 2640 次浏览 2015-10-16 21:10
文本界面安装Linux系统
学习资源 空心菜 发表了文章 0 个评论 2533 次浏览 2015-10-16 00:36
Ansible Inventory详解
运维 空心菜 发表了文章 0 个评论 5151 次浏览 2015-10-15 18:50
Inventory文件用来定义你想控制管理的服务器,默认配置文件是/etc/ansible/hosts
,如下是一个简单的例子:
[test]
10.0.3.56
[zabbix]
10.0.1.30
[web]
10.0.2.57
[zabbix], [web]
是对服务器分组的名称,指定组名。主机可以直接用ip地址,也可以用域名,还可以用数字和字母指定一批连续的服务器,如:
blog[1:3].os.com 相当于blog1.os.com blog2.os.com blog3.os.com
我们已经了解到,Ansible默认是通过ssh
的方式来远程管理批量服务器的,所以我们这里使用ssh key
加密的方式来进行ssh
的认证会更方便,当然,你也可以选择使用Ansible的时候加-k
选项,来通过交互的方式输入密码。
Ansible已经可以通过密钥的方式管理主机后,我们就可以用Ansible直接来做一些简单的测试,如下:
ansible all -m ping # 用于检测所有的主机是否存活,all默认指所有主机
如果只想检测某个组的话,可以把all替换成组名,例如:
ansible test -m ping
当然也可以直接输入管理主机的ip地址,例如:
ansible 10.0.3.56 -m ping
在默认的情况下Ansible
是使用root
用户来进行远程管理的,在大多数情况下,为了安全起见,一般会使用一个普通账户来管理。
我们可以在所有的被管理的机器上面创建一个ansible
的用户,并且可以使用sudo
来提升权限到root
。当然我们在Ansible主机上面也需要这样一个用户,并且为其生成ssh key
。
然后通过修改/etc/ansible/ansible.cfg
配置文件中的remote_user = ansible
让Ansible
默认使用ansible用户
来进行管理,然后使用--sudo
参数来获取root权限。
你也可以通过修改/etc/ansible/ansible.cfg
里的remote_port
端口来修改默认远程管理的ssh
的22
端口。
一切完成后你就可以测试了:
ansible all -m ping --sudo
如果多台主机的管理账户各有不同的话,我们也可以在Inventory
文件中处理,分割进行设置,例子如下:
[webserver]
10.0.1.3 ansible_ssh_user=root
10.0.2.3 ansible_ssh_user=nock
10.0.3.3 ansible_ssh_host=10.0.3.3 ansible_ssh_port=22000
[production]
10.0.1.3
10.0.2.3
aliyun-bj-tomcat1 ansible_ssh_user=work ansible_ssh_private_key_file=/home/work/.ssh/id_rsa
简单说明:
ansible_ssh_user —-> 用于管理远程主机的用户名
ansible_ssh_host —-> 用于指定被管理主机的端口
ansible_ssh_port —-> 用于指定ssh连接端口
ansible_ssh_private_key_file —-> 指定ssh key文件
host_key_checking=False 当你第一次连接远程主机的时候,会提示yes/no,设置为False会跳过这个环节。
主机组直接还可以嵌套,需要使用关键字children
,示例:
[aliyunhost:children]
aliyunhost-mysql
aliyunhost-web
aliyunhost-redis
[aliyunhost-mysql]
10.0.1.81
10.0.1.82
10.0.1.88
10.0.1.89
10.0.1.96
10.0.1.107
[aliyunhost-web]
10.0.1.104
10.0.1.105
[aliyunhost-redis]
10.0.1.181
10.0.1.18
我们也可以通过多个Inventory
文件来进行主机管理,默认是/etc/ansible/hosts
,如果多个管理文件,需要执行ansible命令的时候,通过-i
参数来指定:
ansible -i /etc/ansible/hosts2 -m ping
关于host
就讲到这里,这是用来管理客户端的。
WOT软件技术峰会,自动化运维专场现场视频
学习资源 OpenSkill 发表了文章 0 个评论 3475 次浏览 2015-10-15 12:34
快乐运维-常景志
运维有人说苦逼,但是我们需要苦中作乐,找到真正的运维乐点!
360运维自动化平台之大规模服务监控平台-刘浩
看看大规模的服务监控平台体系,学习大体系服务监控的思路!
游戏虚拟化运维实践-肖力
在这个云计算的时代,虚拟化可谓正值青年。看力哥如何利用虚拟化技术玩转游戏运维!这里推荐一下力哥著作:深度实践KVM:核心技术、管理运维、性能优化与项目实施一书
字节码和网络抓包在应用性能管理中的实践-黄东
网络可谓是运维者必修一课,如果你不了解网络,你不知道攻击你的人,是怎么发起,怎么进入的,那只好等死,抓包就是我们常用的分析手法!查看你应用性能再网络方面的缺陷和可优化之地!
基于Python构建可扩展的自动化运维平台-刘天斯
近几年Python可谓成了运维者必修课程了,随着DevOps再国内的盛行!看大神如何设计、玩转自动化运维之路!
大会PPT资料下载地址:http://pan.baidu.com/s/1o69vgZw
OpenSkill.CN 开源技术社区 基于51cto整理分享!
开源技术社区QQ群号:372476089 欢迎加入互相学习
扫码关注微信订阅号:
运维杂谈微信群:
HBase file layout needs to be upgraded案例分析
大数据 空心菜 发表了文章 0 个评论 7692 次浏览 2015-10-15 01:00
因为kafka 的river插件作为kafka消息数据的consumers角色,把消费掉的数据,通过Hbase转存储到hdfs中!
如下所示是river对hbase的配置:
从这可以看出river插件是需要hbase的,然后我执行创建river的命令,tail观看到hbase master的hbase-root-master-hbase1.log如下:
hbase.rootdir
hdfs://10.2.2.39:9000/hbase
hbase.cluster.distributed
true
hbase.master
10.2.2.39:60000
hbase.zookeeper.quorum
10.2.2.56,10.2.2.94,10.2.2.225
2015-10-14 17:34:13,980 INFO [master:hbase1:60000] util.FSUtils: Waiting for dfs to exit safe mode...
从log中可以看出hbase在等待hdfs退出安全模式,为什么要等Hdfs退出安全模式呢?那下面就具体看看Hdfs的log中有什么线索,查看Hdfs的Namenode的hadoop-root-namenode-had1.log记录如下:2015-10-14 17:33:52,283 ERROR org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException as:root (auth:SIMPLE) cause:org.apache.hadoop.hdfs.server.namenode.SafeModeException: Log not rolled. Name node is in safe mode.运行如下命令等待退出安全模式
bin/hadoop dfsadmin -safemode wait发现半分钟后没有反映,然后运行如下命令检查hdfs的健康状态
bin/hadoop fsck /发现有很多corrupt blocks,不过还好备份数大于1.此时,hdfs需要自动的把备份数增加到2,所以需要对数据进行写操作,必须退出安全模式,于是:
bin/hadoop dfsadmin -safemode leave关闭之后等待集群把数据备份好,达到2,耐心等待一段时间吧,看数据量的大小,达到2之后,运行:
bin/hadoop fsck -move
也可以尝试:执行健康检查,删除损坏掉的block。 bin/hdfs fsck / -delete 注意: 这种方式会出现数据丢失,损坏的block会被删掉.把那些破坏的块移到/lost+found这个目录下面,启动Hbase,发现Hmaster启动之后进程又消失了,查看日志:
2015-10-14 17:48:29,476 FATAL [master:hbase1:60000] master.HMaster: Unhandled exception. Starting shutdown.从什么log中可以发现可能是hbase.version文件消失了!我看很多网友的做法是先把/hbase清理调,然后重启就好了,但是以前的数据就丢失了,这有点不科学。于是我:
org.apache.hadoop.hbase.util.FileSystemVersionException: HBase file layout needs to be upgraded. You have version null and I want version 8. Consult http://hbase.apache.org/book.html for further information about upgrading HBase. Is your hbase.rootdir valid? If so, you may need to run 'hbase hbck -fixVersionFile'.
at org.apache.hadoop.hbase.util.FSUtils.checkVersion(FSUtils.java:600)
at org.apache.hadoop.hbase.master.MasterFileSystem.checkRootDir(MasterFileSystem.java:462)
at org.apache.hadoop.hbase.master.MasterFileSystem.createInitialFileSystemLayout(MasterFileSystem.java:153)
at org.apache.hadoop.hbase.master.MasterFileSystem.(MasterFileSystem.java:129)
at org.apache.hadoop.hbase.master.HMaster.finishInitialization(HMaster.java:800)
at org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:605)
at java.lang.Thread.run(Thread.java:744)
bin/hadoop fs -ls /hbase发现/hbase/hbase.version确实已经消失了,这才恍然大悟,原来是之前的这个文件可能被损坏了,去/lost+found目录找确实能找到,但是这个文件似乎出了问题,-ls它也看不到。于是想到一个办法,我做了以下操作:
bin/hadoop fs -mv /hbase /hbase.bk重启HBase,这时就生成了/hbase/hbase.version文件,然后:
bin/hadoop fs -cp /hbase/hbase.version /hbase.bk/这样再次重启HBase,发现Hbase开始splitting hlogs,数据得以恢复。然后再重建river,状态可以正常了!
bin/hadoop fs -rmr /hbase
bin/hadoop fs -mv /hbase.bk /hbase
Linux学习入门vmware虚拟机安装视频教程
学习资源 OpenSkill 发表了文章 0 个评论 2676 次浏览 2015-10-15 00:01