分类目录归档:云运维

2012年云计算发展趋势

2012年云计算发展趋势

计算机技术是人类在20世纪最重要的发明之一!

2011年计算机技术仍处于技术发展的上升期和活跃期!

2011年影响广泛的新技术和新产品,如智能手机、3G通信、云计算、微博、社交网等,无一不是和计算机技术密切相关的!

2012年是值得期待的一年,是规划中的第一年,是云计算时代真正零距离的开始,IT技术的发展趋势以本人的观察认为会朝以下几个方向发展:

1.基于基础架构的云计算服务,2012将会有更多的科技巨头加入云计算服务领域中来。但是国内互联网实名制以及备案机制还是对基础架构公共云有所影响,但是这并不影响基础架构私有云的部署。

电信运营商会在2012年成为主流推广角色使用基础架构公用云服务,绿色、环保、节能是运营商追求的一方面,另一方面运营商对实名制备案、接入资质审核有“先天”优势。

2.平台云服务以及软件服务云方面2011年的平台服务产品如云存储、云硬盘、云监控、CDN云分发、地图API调用服务、支付交易接口流量服务、APP应用软件等一系列的云服务产品会流入普通网民的生活空间以及创业型的科技公司。

因为从2011年末的情况来看云服务的商业模式已经基本成熟,而且市场需求较大。

3.与云计算一起到来的是“大数据”时代。超级多的云系统文件、云镜像设备文件、云数据库文件、用户数据多个IDC机房迁移数据冗余。都是大数据时代的特点,以往的数据节点文件单个对象在100G一下,以后云计算时代

每个云计算节点单个对象存储大至上T,这些数据如何热迁移、管理、分析、存储都是一件具有挑战意义的事情。

4.并行化架构设计与并行化业务扩展的疯狂需求。如果京东的系统环境能并行化扩展我想也不会出现前些电商广告到位而‘技术’不给力的表现。所以一个可横向扩展的一个系统架构和业务模型对于云时代来说十分重要。

5.2012年将特火的程序开发工具:python、node.js、erang、以及其他app应用开发等。

6.火热的框架以及消息队列应用。python下的Django框架、node.js的express框架、Gearman、RabbitMQ等消息队列。这些在云计算系统里面都运用的比较广泛。

7.随着云计算的普及安全也较之重要,从2011年3月的mysql.com、sun.com等大站点的root权限销售、4月的索尼信用卡用户数据窃取、6月Gmail、新浪微博xxs攻击、以及nginx解析漏洞到近期的各大网站暴库、新网30万域名管理后台遭劫等就是给当下的互联网企业敲响了警钟。

在2012年云安全将面临很大的挑战,基于云计算的计算节点以及依附的计算网络底层将面临很大的安全挑战。

glance磁盘格式与容器格式

openstack glance磁盘格式与容器格式

 

disk format分为:raw vhd vmdk vdi iso qcow2 aki ari ami

 

其中aki ari ami是openstack系统磁盘镜像发行的包格式。就是amzon的内核镜像、amzon的ramdisk镜像以及amzon的机器镜像文件

 

container formate分为:ovf bare aki ari ami

容器主要放置虚拟机器的元数据文件,后3种在openstack种使用较多。

导入glance的image文件是先导入aki 文件,然后根据kernel_id导入aki文件 .

 

xen虚拟化与半虚拟化硬件要求

半虚似化要求 (Para-virtualization)

64位cpu都支持,32位cpu需支持(PAE)

以Intel (R) Pentium(R) Dual CPU E2140 @ 1.60GHz为例

cat /proc/cpuinfo | grep flags

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm pni monitor ds_cpl est tm2 xtpr

以上包含了pae

 

全虚似化要求(Fully-virtualization)

需Intel VT(vmx)和AMD’s AMD-V(svm)功能

以Intel Xeon CPU E5504 @ 2.00GHz为例

cat /proc/cpuinfo |grep flags

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr popcnt lahf_lm

包含了pae及vmx

注:

.一些厂商禁止了机器BIOS中的VT选项, 这种方式下VT不能被重新打开.

./proc/cpuinfo仅从Linux 2.6.15(Intel)和Linux 2.6.16(AMD)开始显示虚拟化方面的信息. 请使用uname -r命令查询您的内核版本.

如何判断Linux 是否运行在虚拟机上

判断 OpenVZ/Xen PV/UML

判断 OpenVZ/Xen PV/UML 是最容易的,直接检查 /proc 下的相关目录和文件就可以知道,比如 OpenVZ VPS 上会有 /proc/vz 这个文件;Xen PV 虚拟机上会有 /proc/xen/ 这个目录,并且目录下有一些东西;UML 上打印 /proc/cpuinfo 会找到 UML 标志。写了一个简单的 Python 脚本来检测:

#!/usr/bin/python
# check if a linux system running on a virtual machine (openvz/xen pv/uml)
# written by http://www.vpsee.com

import sys, os

def main():
if os.getuid() != 0:
print "must be run as root"
sys.exit(0)

# check OpenVZ/Virtuozzo
if os.path.exists("/proc/vz"):
if not os.path.exists("/proc/bc"):
print "openvz container"
else:
print "openvz node"

# check Xen
if os.path.exists("/proc/xen/capabilities"):
if (os.path.getsize("/proc/xen/capabilities") > 0):
print "xen dom0"
else:
print "xen domU"

# check User Mode Linux (UML)
f = open("/proc/cpuinfo", "r"); t = f.read(); f.close()
if (t.find("UML") > 0):
print "uml"

if __name__=="__main__":
main()

判断 VMware/Xen HVM/KVM

如果使用的是 VMware/Xen HVM/KVM 这样的全虚拟就更难判断一些,最准确的办法是读取 CPUID 来判断,Xen 源代码下面有一段检测是否是 Xen 的 C 语言代码 tools/misc/xen-detect.c,这段代码提供了一个很好的例子,VPSee 重写了代码,用宏替代了函数,增加了对 VMware 和 KVM 的识别,用 gcc 编译后就可以运行:

/*
* check if a linux system running on a virtual machine (vmware/xen hvm/kvm)
* written by http://www.vpsee.com
*/
#include stdio.h
#include string.h

#define HYPERVISOR_INFO 0x40000000

#define CPUID(idx, eax, ebx, ecx, edx) \
asm volatile ( \
"test %1,%1 ; jz 1f ; ud2a ; .ascii \"xen\" ; 1: cpuid" \
: "=b" (*ebx), "=a" (*eax), "=c" (*ecx), "=d" (*edx) \
: "0" (idx) );

int main(void)
{
unsigned int eax, ebx, ecx, edx;
char string[13];

CPUID(HYPERVISOR_INFO, &eax, &ebx, &ecx, &edx);
*(unsigned int *)(string+0) = ebx;
*(unsigned int *)(string+4) = ecx;
*(unsigned int *)(string+8) = edx;

string[12] = 0;
if (strncmp(string, "XenVMMXenVMM", 12) == 0) {
printf("xen hvm\n");
} else if (strncmp(string, "VMwareVMware", 12) == 0) {
printf("vmware\n");
} else if (strncmp(string, "KVMKVMKVM", 12) == 0) {
printf("kvm\n");
} else
printf("bare hardware\n");

return 0;
}

判断 VirtualBox/Virtual PC

什么?这种家用桌面虚拟机自己装的还会不知道?!如果不知道的话也有办法,在 Linux 下运行 dmidecode 工具然后查找 Manufacturer: innotek GmbH, Manufacturer: Microsoft Corporation 关键字就能对应上 VirtualBox 和 Virtual PC.