kvm虚拟机克隆过程详解

大数据 koyo 发表了文章 2 个评论 6023 次浏览 2015-10-17 18:44 来自相关话题

在使用ucloud云主机的时候,发现他们制作镜像只能克隆系统盘数据制作,这是为什么,为什么不能连数据盘一起克隆呢,然后就问了一下他们的技术人员,他们底层用的是kvm技术,因为kvm镜像制作会按照你主机空间大小块来克隆,意思就是说,比如我/ 分区大小为20G,数 ...查看全部
在使用ucloud云主机的时候,发现他们制作镜像只能克隆系统盘数据制作,这是为什么,为什么不能连数据盘一起克隆呢,然后就问了一下他们的技术人员,他们底层用的是kvm技术,因为kvm镜像制作会按照你主机空间大小块来克隆,意思就是说,比如我/ 分区大小为20G,数据盘/data分区大小为200G,然后你连着数据盘一起制作镜像的话,存在两个问题:
    []克隆镜像使用时间较长[/][]克隆出来的镜像大小较大,如上面所说的主机,那克隆出来的镜像大小为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'    [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 ~]#  
4、修改主机名、ip地址
修改主机名[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 ~]# 

二、通过复制xml文件与磁盘文件复制克隆

我们这里还是拿hysen_6101_101虚拟机作为模板机器克隆。同样这种方法也需要模板机器已经关机!1、复制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、修改拷贝的配置文件
    []修改虚拟机的名称:hysen_6105_105[/][]修改uuid编号:13178d42-1055-8b94-1411-3c2bdd0e6e7a<[/][]修改mac地址:[/][]修改disk位置:[/][]修改vnc端口:[/]

此时还是将该配置文件注册进来,无法通过virsh edit进行编辑。
[root@kvmsuzhu2 ~]# vim /etc/libvirt/qemu/hysen_6105_105.xml
hysen_6101_101
13178d42-1055-8b94-1411-3c2bdd0e6e7a

4、定义新虚拟机配置文件
[root@kvmsuzhu2 ~]# virsh define /etc/libvirt/qemu/hysen_6105_105.xml 
定义域 hysen_6105_105(从 /etc/libvirt/qemu/hysen_6105_105.xml)

[root@kvmsuzhu2 ~]#
5、启动虚拟机并设置开机自启
[root@kvmsuzhu2 ~]# virsh start hysen_6105_105
域 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 ~]#
6、vnc连接修改主机名、ip地址
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能力,前后端开发测试移动运维大数据,要啥有啥!我们运用最高效的团队管理方式,每个人都乐于学习与 ...查看全部
ycsx.png


运维工程师


职位描述:
想获得更多的技术与个人提升空间?快来加入我们吧!我们使用最前沿的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 来自相关话题

下面视频的是老男孩19期学生老A,分享的善用搜索引擎视频!   技术交流QQ群: 微信订阅号: ...查看全部
下面视频的是老男孩19期学生老A,分享的善用搜索引擎视频!
 


技术交流QQ群:
qqun.png

微信订阅号:
openskill_wz.png

运维杂谈微信群:
witops.png

kvm虚拟机怎么解决mac地址冲突

大数据 空心菜 回复了问题 3 人关注 2 个回复 7286 次浏览 2015-10-16 15:43 来自相关话题

文本界面安装Linux系统

学习资源 空心菜 发表了文章 0 个评论 2533 次浏览 2015-10-16 00:36 来自相关话题

文本界面安装Linux系统,在生产环境中,公司一般使用文本模式。 OpenSkill.CN 开源技术社区 基于互联网整理分享! 技术交流QQ群号:372476089  欢迎加入互相学习 扫码关注微 ...查看全部
文本界面安装Linux系统,在生产环境中,公司一般使用文本模式。



OpenSkill.CN 开源技术社区 基于互联网整理分享!
技术交流QQ群号:372476089  欢迎加入互相学习
扫码关注微信订阅号:
opsk.jpg

运维杂谈微信群:
witops.png

Linux安装视频

学习资源 空心菜 发表了文章 0 个评论 2518 次浏览 2015-10-16 00:27 来自相关话题

最基本的环境搭建,Linux系统的安装,视频如下: OpenSkill.CN 开源技术社区  基于网络整理分享! 技术交流QQ群号:372476089  欢迎加入互相学习 扫码关注微信订阅号: ...查看全部
最基本的环境搭建,Linux系统的安装,视频如下:


OpenSkill.CN 开源技术社区  基于网络整理分享!
技术交流QQ群号:372476089  欢迎加入互相学习
扫码关注微信订阅号:
opsk.jpg

运维杂谈微信群:
witops.png

Ansible Inventory详解

运维 空心菜 发表了文章 0 个评论 5151 次浏览 2015-10-15 18:50 来自相关话题

Inventory文件用来定义你想控制管理的服务器,默认配置文件是/etc/ansible/hosts,如下是一个简单的例子: [test] ...查看全部

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 = ansibleAnsible默认使用ansible用户来进行管理,然后使用--sudo参数来获取root权限。


你也可以通过修改/etc/ansible/ansible.cfg里的remote_port端口来修改默认远程管理的ssh22端口。


一切完成后你就可以测试了:


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运维自动化平台之大规模服务监控平台-刘浩 看看大规模 ...查看全部


快乐运维-常景志


运维有人说苦逼,但是我们需要苦中作乐,找到真正的运维乐点!


 


360运维自动化平台之大规模服务监控平台-刘浩


看看大规模的服务监控平台体系,学习大体系服务监控的思路!



游戏虚拟化运维实践-肖力


在这个云计算的时代,虚拟化可谓正值青年。看力哥如何利用虚拟化技术玩转游戏运维!这里推荐一下力哥著作:深度实践KVM:核心技术、管理运维、性能优化与项目实施一书



字节码和网络抓包在应用性能管理中的实践-黄东


网络可谓是运维者必修一课,如果你不了解网络,你不知道攻击你的人,是怎么发起,怎么进入的,那只好等死,抓包就是我们常用的分析手法!查看你应用性能再网络方面的缺陷和可优化之地!



基于Python构建可扩展的自动化运维平台-刘天斯


近几年Python可谓成了运维者必修课程了,随着DevOps再国内的盛行!看大神如何设计、玩转自动化运维之路!




大会PPT资料下载地址:http://pan.baidu.com/s/1o69vgZw
 
OpenSkill.CN 开源技术社区 基于51cto整理分享!
开源技术社区QQ群号:372476089  欢迎加入互相学习
扫码关注微信订阅号:
opsk.jpg

运维杂谈微信群:
witops.png

HBase file layout needs to be upgraded案例分析

大数据 空心菜 发表了文章 0 个评论 7692 次浏览 2015-10-15 01:00 来自相关话题

今天在一个内网的测试环境平台,kafka的river插件状态非正常,然后同事只好重建kafka river,river的状态始终无法正常,没有办法,同事对服务还不是很熟悉,我只好帮忙看看了!   因为kafka 的river插件作为ka ...查看全部
hbase_image.png
今天在一个内网的测试环境平台,kafka的river插件状态非正常,然后同事只好重建kafka river,river的状态始终无法正常,没有办法,同事对服务还不是很熟悉,我只好帮忙看看了!
 
因为kafka 的river插件作为kafka消息数据的consumers角色,把消费掉的数据,通过Hbase转存储到hdfs中!
如下所示是river对hbase的配置:


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

从这可以看出river插件是需要hbase的,然后我执行创建river的命令,tail观看到hbase master的hbase-root-master-hbase1.log如下:
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.
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)
从什么log中可以发现可能是hbase.version文件消失了!我看很多网友的做法是先把/hbase清理调,然后重启就好了,但是以前的数据就丢失了,这有点不科学。于是我:
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/

bin/hadoop fs -rmr /hbase

bin/hadoop fs -mv /hbase.bk /hbase
这样再次重启HBase,发现Hbase开始splitting hlogs,数据得以恢复。然后再重建river,状态可以正常了!

Linux学习入门vmware虚拟机安装视频教程

学习资源 OpenSkill 发表了文章 0 个评论 2676 次浏览 2015-10-15 00:01 来自相关话题

Linux入门学习者,第一关莫过于安装vmware虚拟机,安装属于自己喜欢的Linux开源系统。下面分享的就是vmware虚拟机安装的教学视频! ...查看全部
Linux入门学习者,第一关莫过于安装vmware虚拟机,安装属于自己喜欢的Linux开源系统。下面分享的就是vmware虚拟机安装的教学视频!