xen 虚拟化产品交付中心,小白如何才能快速了解云计算?
云计算与大数据、物联网并称为第三次信息化浪潮的代表技术,是当前IT领域的热门方向之一,目前云计算已经进入到落地使用阶段。
云计算的核心是“服务”,针对于不同的需求提供不同的“服务”,简单的说,云计算能够通过互联网为用户提供廉价的计算资源服务。云计算把服务分成三个大的层次,分别是IaaS(基础设施即服务)、PaaS(平台即服务)和SaaS(软件即服务),不同的服务定位于不同的需求。了解云计算的关键就是了解这些服务的特点,并能够知道不同服务的应用场景。
IaaS服务是目前国内云计算服务商提供的主要服务之一,技术相对成熟,用户迁移成本低。云计算服务商通过虚拟化等技术完成硬件资源的集中化管理,实现动态资源调度的目的,而用户可以根据实际业务需求申请对应规模的资源服务。简单的说,IaaS服务省去了用户搭建机房的建设成本,同时也节省了大量的维护成本。对于广大的中小微企业来说,云计算极大的降低了获取网络服务的门槛。
PaaS在近些年得到了快速的发展,通过PaaS服务能够为用户提供一个定制化的应用场景,对于具备一定开发能力的企业来说,通过PaaS服务能够节省大量的开发时间。PaaS服务的特点是把各种功能进行模块化封装,用户可以根据自身的需求进行功能组合,这种开发方式不仅能够提升工作效率,同时也能提升产品的稳定性。
SaaS服务主要面向的是广大的终端用户,用户只管使用软件就可以了,其他所有的事情都不需要关心。目前大量的传统软件服务商都陆续开始把软件云端化,用户使用软件的方式也在发生着改变。对于没有开发能力的企业来说,使用SaaS服务是个比较现实的选择。
云计算分为公有云和私有云,公有云的服务是开放的,而私有云是企业或机构内部使用的,私有云的建设往往需要用户具备一定的应用规模,同时对安全性有特殊的要求。
我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续在头条写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。
如果有互联网方面的问题,也可以咨询我,谢谢!
linux系统提供安全功能如何?
linux系统提供安全功能非常靠谱。
一、账号安全控制
用户账号是计算机使用者的身份凭证或标识,每个要访问系统资源的人,必须凭借其用户账号才能进入计算机。在Linux系统中,提供了多种机制来确保用户账号的正当、安全地使用。1.基本(必要)的安全措施
(1)系统账号的清理在Linux系统中,除了用户手动创建的各种账号之外,还包括随系统或程序安装过程而产生的其他大量的系统账号。除了超级用户root之外,其他大量账号只是用来维护系统运行服务进程,一般情况是绝不允许登录系统的,因此也被称为非登录用户账号。常见的非登录用户账号的登录shell通常是/sbin/nologin,表示禁止终端登录,应确保不被认为改动,比如:[root@localhost ~]# grep "/sbin/nologin" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
……………… //省略部分内容
各种非登录用户账号中,还有相当一部分是很少用到的,比如games。这些用户账号被称为冗余账号(建议删除)。除此之外,还有一些随应用程序安装的用户账号,若卸载应用程序后未能自动删除,则需管理员手动将其删除。对于Linux服务器中长期不用的用户账号,若无法确定是否应该删除,可以暂时将其锁定。比如:[root@localhost ~]# usermod -L q1 //锁定账号
[root@localhost ~]# passwd -S q1 //查看账号状态
q1 LK 2019-08-27 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]# usermod -U q1 //解锁账号
[root@localhost ~]# passwd -S q1
q1 PS 2019-08-27 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
如果服务器中的用户账号已经固定,不再进行修改,还可以采取锁定账号配置文件的方法,进一步保障账号的安全性。比如:[root@localhost ~]# chattr +i /etc/passwd /etc/shadow //锁定文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow //查看为锁定的状态
----i----------- /etc/passwd
----i----------- /etc/shadow
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow //解锁文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow //查看为解锁的状态
---------------- /etc/passwd
---------------- /etc/shadow
在账号文件被锁定的情况下,其内容将不允许被修改。因此也就无法添加、删除账号,也不能更改用户的密码、登录shell、宿主目录等属性信息。[root@localhost ~]# chattr +i /etc/passwd /etc/shadow
[root@localhost ~]# lsattr /etc/passwd /etc/shadow
----i----------- /etc/passwd
----i----------- /etc/shadow
[root@localhost ~]# useradd a1
useradd:无法打开 /etc/passwd
(2)密码安全控制在不安全的网络环境中,为了降低密码被猜出或被暴力破解的风险,用户应养成定期修改密码的习惯,避免长期使用同一个密码。管理员可以在服务器端限制用户密码的最大有效天数,对于密码已过期的用户,登录时被要求重新设置密码,否则将拒绝登录。以下操作可以将密码的有效期设为30天:[root@localhost ~]# vim /etc/login.defs //适用于修改完文件新建的用户
……………… //省略部分内容
PASS_MAX_DAYS 30 //默认存在,修改即可
[root@localhost ~]# chage -M 30 q1 //适用于已经存在的q1用户
在某些特殊情况下,如要求批量创建用户初次登录时必须自设密码。比如:[root@localhost ~]# chage -d 0 q1 //新建的用户、已存在的用户都适用
Localhost login:q1
password:
You are required to change your password immediately (root enforced)
WARNING: Your password has expired.
You must change your password now and login again!
更改用户 q1 的密码 。
为 q1 更改 STRESS 密码。
(当前)UNIX 密码:
(3)命令历史、自动注销Shell环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在的风险,只要获得用户的命令历史文件,该用户的命令操作过程将会一览无遗,如果曾经在命令行输入了明文的密码,则会给服务器带来巨大的风险。Bash终端环境中,历史命令的记录条目是由变量HISTSIZE控制,默认是1000条,通过修改其配置文件,可以影响系统中的所有用户。比如:[root@localhost ~]# vim /etc/profile //适用于新登录的用户
………… //省略部分内容,添加以下内容
HISTSIZE=200
[root@localhost ~]# export HISTSIZE=200
//适用于当前用户,export的作用:将一个变量设置为全局变量
除此之外,还可以修改用户宿主目录中的~/.bash_logout文件,添加情况历史命令的操作语句:[root@localhost ~]# vim ~/.bash_logout //打开配置文件,添加以下内容
history -c //清空历史命令
clear //清屏
这样,当用户退出已登录Bash环境后,所记录的历史命令将自动清空。Bash终端环境中,还可以设置一个闲置超时时间,当超过指定的时间见没有任何输入时自动注销终端,这样可以有效避免当管理员不在时其他人员对服务器的误操作风险,闲置超时由变量TMOUT来控制,默认单位为秒(s)。[root@localhost ~]# vim /etc/profile //适用于新登录的用户
………… //省略部分内容,添加以下内容
export TMOUT=600
[root@localhost ~]# export TMOUT=600 //适用于当前用户
注意:当正在执行程序代码编译时,修改系统配置等耗时较长的操作时,应避免设置TMOUT变量。必要时可以使用“unset TMOUT”命令取消TMOUT变量设置。2.用户切换与提权
大多数Linux服务器并不建议用户直接以root用户进行登录,一方面可以大大减少因误操作而导致的破坏;另一方面也降低了特权密码在不安全的网络中被泄露的风险。针对这些原因,需要为普通用户提供一种身份或权限提升机制,以便在必要的时候执行管理任务。Linux系统为我们提供了su、sudo两种命令,其中su命令主要用来切换用户,而sudo命令用来提升执行权限。(1)su命令——切换用户使用su命令,可以切换为指定的另一个用户,从而具有该用户的所有权限。当然,切换时需要对目标用户的密码进行验证(从root用户切换为其他用户时除外)。例如:[root@localhost ~]# su - xiaoli
[xiaoli@localhost ~]$ su - root
密码: //输入用户root密码
[root@localhost ~]# //验证成后获得root权限
上述命令中,选项“-”等同于“--login”或“-l”,表示切换用户后进入目标用户的登录shell环境,若不添加“-”选项,则表示仅切换身份,不切换用户环境。对于切换为root用户的情况时,“root”可以省略。默认情况下,任何用户都允许使用su命令。从而有机会反复尝试其他用户(如root)的登录密码。这样带来了很大的安全风险,为了加强su命令的使用控制,可以借助于pam_wheel认证模块,只允许极个别用户可以使用su命令进行切换。实现过程:[root@localhost ~]# gpasswd -a xiaoli wheel
//正在将用户“xiaoli”加入到“wheel”组中
[root@localhost ~]# grep "wheel" /etc/group
wheel:x:10:xiaoli
[root@localhost ~]# vim /etc/pam.d/su
auth sufficient pam_rootok.so //默认存在
………… //省略部分内容
auth required pam_wheel.so use_uid //默认存在,去掉“#”号即可!
………… //省略部分内容
启用pam_wheel认证后,未加入wheel组内的其他用户将无法使用su命令,尝试进行切换时,将提示“拒绝权限”,从而将切换用户的权限控制在最小范围内。[xiaozhang@localhost ~]$ su - root
密码: //不论密码正确与否,都将提示拒绝权限
su: 拒绝权限
对用户的任何操作(添加、删除、切换)等操作都将记录在/var/log/secure 文件中,根据需要即可进行查看。(2)sudo命令——提升执行权限通过su命令可以非常方便地切换到另一个用户,但是前提条件是必须知道目标用户的登录密码(从root用户切换为其他用户时除外),从任意用户切换至root用户就必须得知道root用户的密码。对于生产环境中的Linux服务器,root用户的密码,知道的人,越少越好,否则就会存在巨大的风险。有一种方法,既可以让普通用户拥有一部分的管理权限,又不需要知道root用户的密码,那就是使用——sudo命令。使用sudo命令皆可以提升执行权限。不过,需要由管理员预先执行授权,指定哪些用户以超级用户(或其他用户)的身份来执行哪些命令。1)在配置文件/etc/sudoers中添加授权sudo机制的配置文件为/etc/sudoers,文件的默认权限是400,需使用专门的visudo工具进行编写,虽然可以通过“vim”进行编辑,但是保存时必须执行“:w!”命令强制操作,否则系统将提示只读文件而拒绝保存。配置文件/etc/sudoers中,授权记录的基本配置格式:用户 主机名列表=命令程序列表
授权配置主要包括用户、主机、命令三个部分,即授权哪些人在哪些主机上执行哪些命令。各部分的具体含义:用户:直接授权指定的用户名,或者采用“%组名”的方式(授权一个组的所有用户);主机:使用此配置文件的主机名称。此部分主要是方便在多个主机间共用一份sudoers文件,一般设置为localhost或实际的主机名即可;命令:允许授权的用户通过sudo方式制定的特权命令,需填写命令程序的完整路径,多个命令执行用逗号“,”进行分隔;典型的sudo配置记录中,每行对应一个用户或组的sudo授权配置。比如:[root@localhost ~]# visudo
……………… //省略部分内容
xiaozhang localhost=/sbin/ifconfig //允许用户xiaozhang在本机使用ifconfig命令
%wheel ALL=NOPASSWD:ALL //允许wheel组中的成员在任意主机上不需要使用密码即可执行任意命令
当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名。用户、主机、命令部分都可以定义为别名(必须为大写)分别通过关键字User_Alias、Host_Alias、Cmnd_Alias来进行设置。比如:[root@localhost ~]# visudo
……………… //省略部分内容
User_Alias OPERATORS=user1,user2,user3 //定义用户名列表
Host_Alias MAILSVRS=smtp,pop //定义主机列表
Cmnd_Alias PKGTOOLS=/bin/rpm,/usr/bin/yum //定义命令列表
OPERATORS MAILSVRS=PKGTOOLS //使定义的列表全部关联起来
sudo配置记录的命令部分允许使用通配符“*”、取反符号“!”,当需要授权某个目录下的所有命令或取消其中个别命令时特别有用。比如:[root@localhost ~]# visudo
……………… //省略部分内容
xiaowang localhost=/bin/*,!/bin/passwd root
//允许xiaowang用户在本机使用/bin路径下的所有命令,但是不允许给root用户修改密码
通常情况下,通过sudo方式执行的操作并不记录,若要启用sudo日志记录以备查看,应该这么做:[root@localhost ~]# visudo
……………… //省略部分内容
Defaults logfile="/var/log/sudo"
2)通过sudo执行特权命令对于已获得授权的用户,通过sudo方式执行特权命令时,只需在正常的命令前加“sudo”即可![xiaosun@localhost ~]$ sudo ifconfig ens33 192.168.1.1/24
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for xiaosun:
xiaosun 不在 sudoers 文件中。此事将被报告。
//因为xiaosun没获得特权命令的授权
[xiaozhang@localhost ~]$ ifconfig ens33 192.168.1.1/24
SIOCSIFADDR: 不允许的操作
SIOCSIFFLAGS: 不允许的操作
SIOCSIFNETMASK: 不允许的操作
[xiaozhang@localhost ~]$ sudo ifconfig ens33 192.168.1.1/24
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for xiaozhang:
//执行命令时需要输入自己的密码进行验证(如果不希望输入密码应在命令前添加“NOPASSWD”)
//xiaozhang 可以使用特权命令(已经获得授权)
在当前会话中,第一次通过sudo执行命令时,必须知道用户本身的密码(并不是root的密码)进行验证,此后再使用sudo命令时,只要与前一次sudo操作的间隔时间不超过5分钟,则不需要重复验证。若想查看用户自己获得哪些特权命令、环境变量,可以执行“sudo -l”命令。[xiaozhang@localhost ~]$ sudo -l
[sudo] password for xiaozhang:
匹配此主机上 xiaozhang 的默认条目:
!visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME
HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG
LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION
LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS
_XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin,
logfile=/var/log/sudo
用户 xiaozhang 可以在该主机上运行以下命令:
(root) /sbin/ifconfig
//查看已经授权的用户
[root@localhost ~]# su - xiaosun
上一次登录:二 8月 27 21:41:40 CST 2019pts/0 上
[xiaosun@localhost ~]$ sudo -l
[sudo] password for xiaosun:
对不起,用户 xiaosun 不能在 localhost 上运行 sudo。
//查看为授权的用户
如果启用sudo日志,则可以查看用户sudo的操作记录。[root@localhost ~]# tail /var/log/sudo
Aug 27 21:41:07 : xiaoli : TTY=pts/0 ; PWD=/home/xiaoli ; USER=root ;
COMMAND=/sbin/ifconfig ens33 192.168.1.1/24
Aug 27 21:42:53 : xiaozhang : TTY=pts/0 ; PWD=/home/xiaozhang ; USER=root ;
COMMAND=/sbin/ifconfig ens33 192.168.1.1/24
二、系统引导和登录控制
在互联网环境中,大部分服务器是通过远程登录的方式来进行管理的,而本地引导和终端登录往往容易被忽视,从而留下安全隐患。特别是当服务器所在的机房环境却反严格、安全的管理制度时,如何防止其他用户的非法介入就成为必须重视的问题。1.开关机安全控制
对于服务器主机,除了物理上的安全防护之外。在开关机安全控制方面,除了要做好物理安全防护以外,还要做好系统本身的一些安全措施。(1)调整BIOS引导设置将第一引导设备设为当前系统所在硬盘;
禁止从其他设备(光盘、U盘、网络)引导系统;
将安全级别设为setup,并设置管理员密码;
(2)禁止ctrl+Alt+Del快捷键重启快捷键重启功能为服务器本地维护提供了方便,但对于多终端登录的Linux服务器,禁用此功能是比较安全的选择。操作如下:[root@localhost ~]# cat /etc/inittab //查看提供ctrl+Alt+Del快捷键的文件
……………… //省略部分内容
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
[root@localhost ~]# ll /usr/lib/systemd/system/ctrl-alt-del.target
lrwxrwxrwx. 1 root root 13 7月 14 18:54 /usr/lib/systemd/system/ctrl-alt-del.target -> reboot.target
//查看得知它是reboot.target文件的软连接
不影响reboot.target文件的前提下执行以下命令即可禁用ctrl+Alt+Del快捷键[root@localhost ~]# systemctl mask ctrl-alt-del.target //注销ctrl+Alt+Del服务
Created symlink from /etc/systemd/system/ctrl-alt-del.target to /dev/null.
[root@localhost ~]# systemctl daemon-reload //重新加载systemd配置
[root@localhost ~]# systemctl unmask ctrl-alt-del.target //重新开启ctrl+Alt+Del服务
Removed symlink /etc/systemd/system/ctrl-alt-del.target.
[root@localhost ~]# systemctl daemon-reload //重新加载systemd配置
(3)限制更改GRUB引导参数从系统安全的角度来看,如果人很都能够修改GRUB引导参数,对服务器本身显然是一个极大的安全隐患。为了加强对引导过程的安全控制,可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。为grub菜单设置的密码建议采用“grub2-mkpasswd-pbkdf2 ”命令生成。为GRUB菜单设置的密码建议采用“grub2-mkpasswd-pbkdf2 ”命令生成。[root@localhost ~]# grub2-mkpasswd-pbkdf2 //根据提示输入密码
输入口令:
Reenter password:
PBKDF2 hash of your password is
//“is”之后是经过加密的密码字串符(由于限制,不可发布)
[root@localhost ~]# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
[root@localhost ~]# cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
//建议做个备份(实验环境,无所谓)
[root@localhost ~]# vim /etc/grub.d/00_header //这是通过密钥工具生成密码的配置文件
…………………… //省略部分内容
cat << EOF
set superusers="root" //设置用户名
password_pbkdf2 root
//填写刚才通过密钥工具生成的密钥文件(就是刚才生成密钥文件“is”之后的内容,由于限制不可发布)
//设置用户名的密码
EOF
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
//重新生成配置文件
重新计算机测试,按“e”键进入GRUB菜单时,将提示:
输入正确的用户名和密码方可进入(实验用的是 root,跟系统中的root没有任何关系)!
2.终端及登录控制
(1)限制root用户的登录在Linux系统中,login程序会读取/etc/securetty文件,以决定root用户从哪些终端上登录系统。[root@localhost ~]# vim /etc/securetty
…………………… //省略部分内容
#tty5
#tty6
//禁止root用户从tty5、tty6登录系统
(2)禁止普通用户登录当服务器正在进行备份或调试等维护工作时,可能不希望再有新的用户登录系统,这时,只需建立/etc/nologin空文件即可;反之则允许普通用户登录。[root@localhost ~]# touch /etc/nologin //禁止普通用户登录
[root@localhost ~]# rm -rf /etc/nologin //允许普通用户登录
注意:仅建议在服务器维护期间、测试期间使用!三、弱口令检测、端口扫描
本次实验使用的安全工具是——John the Ripper和NMAP。John the Ripper工具网盘链接:https://pan.baidu.com/s/1HQNCPFnKNBQWmjSNSEZ7_Q提取码:q1b0NMAP工具使用yum安装即可!1.弱口令检测工具——John the Ripper
对于任何一个承担着安全责任的管理员,及时找出这些弱口令是非常必要的,这样便于采取进一步的安全措施(修改口令)。John the Ripper是一款开源的密 码 破 解 工具,能够在已知密文的情况下快速分析出明文的密码字串,支持DES、MD5等多种加密算法,而且允许使用字典进行破解。(1)安装John the Ripper[root@localhost ~]# tar zxf john-1.8.0.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/john-1.8.0/
[root@localhost john-1.8.0]# ls
doc README run src
//doc目录是手册文档、README是链接的说明文件、run是运行程序、src是源码文件
[root@localhost john-1.8.0]# cd src
[root@localhost src]# make clean linux-x86-64
//通过这种方式进行编译
[root@localhost src]# cd ../run
[root@localhost run]# ls
ascii.chr john lm_ascii.chr makechr relbench unique
digits.chr john.conf mailer password.lst unafs unshadow
//确认有john可执行程序产生
(2)检测弱口令账号以实验环境Linux系统为例(如果检测别的密文文件,可以复制一份到本地):[root@localhost run]# ./john /etc/shadow
Loaded 6 password hashes with 6 different salts (crypt, generic crypt(3) [?/64])
Press 'q' or Ctrl-C to abort, almost any other key for status
123456 (user1)
123456 (xiaowang)
123456 (xiaosun)
123456 (xiaoli)
123456 (xiaozhang)
……………… 按Ctrl+C组合键终止后续过程
//密码破译需要时间,需耐心等待
(3)使用密码字典进行破解[root@localhost run]# :>john.opt
//情况已破解的账户列表,以便重新分析、破解
[root@localhost run]# ./john --wordlist=./password.lst /etc/shadow
//使用工具本身自带的密码字典进行破解
Loaded 6 password hashes with 6 different salts (crypt, generic crypt(3) [?/64])
Press 'q' or Ctrl-C to abort, almost any other key for status
123456 (user1)
123456 (xiaowang)
123456 (xiaosun)
123456 (xiaoli)
123456 (xiaozhang)
……………… 按Ctrl+C组合键终止后续过程
2.网络扫描工具——NMAP
(1)安装NMAP软件包[root@localhost ~]# yum -y install nmap
(2)扫描语法及类型nmap [扫描类型] [选项] <扫描目标 ...>
常用的选项有:“-p”用来指定扫描的端口信息;“-n”表示禁用反向DNS解析(加快扫描速度);常用的几种扫描类型,如图:
(3)扫描操作示例[root@localhost ~]# nmap 127.0.0.1
//扫描本机开启的TCP端口
[root@localhost ~]# nmap -sU 127.0.0.1
//扫描本机开启的UDP端口
[root@localhost ~]# nmap -p 21 192.168.1.0/24
//扫描192.168.1.0网段中哪些主机提供了FTP服务
[root@localhost ~]# nmap -n -sP 192.168.1.0/24
//扫描192.168.1.0网段存活的主机(可以ping通)
[root@localhost ~]# nmap -p 139,445 192.168.1.0/24
//扫描192.168.1.0网段中开启共享服务的主机
可以根据实际的需求更换不同的选项!云计算是干什么的?
如今社会高速发展,各种新技术层出不穷,云计算的概念早就不新鲜了。作为互联网从业者,如果不能深入了解云计算的概念,我们就无法在各大技术论坛深入浅出地装X,甚至有可能辩论不过小区门口天天看新闻联播的老大爷。因此,深入理解云计算的相关概念是非常必要的。然而,当我们尝试搞懂云计算究竟是什么时,一定会面临各种问题。比如一开始,当我们在百度搜索引擎中搜索“云计算”时,会发现百度百科给它的定义是这样的:
云计算(cloud computing)是分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后,通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。
虽然百度百科用客观严谨的角度解释了云计算的概念,从业一到三年的专业人士可能能够轻松地理解其中的含义,但作为一个对于云计算仅知一二的小白来说,但是这确实他娘的不是一句人话。
啥是分布式计算?啥是资源共享池?为啥要把巨大的数据计算处理程序分解成无数个小程序?这些难以理解其存在意义的抽象名词无疑是晦涩难懂且狗屁不通的,给大家理解云计算的基本概念带来了层层阻碍,更别说理解之后的OpenStack、Hypervisor、KVM、Docker、K8S等等更加抽象的技术概念了。
因此,为了让零基础的小白也能零门槛读懂云计算到底是个啥,以及实现云计算所需要的种种技术之间的关系,本文将尽可能地减少专业术语在本文中所占的比重,并用较多的例子、类比等方式来解释相关的概念(因为作者水平也很菜,写不出太高深的东西来)。废话不多说,我们开始吧!
1.Why is 云计算?在深入介绍云计算各种技术之前,我们先简单了解一下云计算出现的背景。
在20世纪电脑被发明的时候,还没有网络,每个电脑(PC),就是一个单机。这台单机是由包括CPU、内存、硬盘、显卡在内的硬件资源构成的。用户在单机上,安装操作系统和应用软件,进行基本的操作和开发。
后来,出现了网络(Network),人们开始通过网络交换信息和资源。
再后来,CPU计算能力不断进步,但社会发展对计算能力要求也不断提高。人们渐渐意识到提升一台单机的计算能力的性价比不足以满足需求,而满足用户需求的方式,则是把单机集中起来,放在机房里,然后让用户通过网络,去访问和使用机房里的计算机资源。机房里的计算机资源就是现在俗称的服务器(Server)。
再再后来,小型网络发展成大型网络,机房规格不断进化,产生了互联网(Internet)和IDC(Internet Data Center)的概念。无数用户接入网络寻找资源,而为了满足数以TG计的服务需求,无数大型机房的计算能力相互连接,越来越多的计算机资源和应用服务(Application)被集中起来为用户提供服务。其中,部署了大量计算任务的各类IDC被统称为“云端”。
经过对云计算历史的简单回顾,我们不难发现,云计算的出现,不仅有效地将那些部署在本地的计算任务转移到了计算能力更强、更快捷的云端,使得PC从日益增长的繁重任务中解放了出来,而且还实现了资源共享、远程存储、网络互联等其它功能。
用更通俗的话来讲,说白了,云计算就是把计算机资源集中起来,放在网络上。
现在,云计算资源就好比我们现在日常生活中所使用的水、电、气等资源。我们想得到干净的水源,只需要打开厨房里的水龙头,而不需要在大江大河旁边建立自来水厂。
想一想在电力没有普及的18世纪,当时的工厂为了获得电能,不得不自己自备小型发电机,就好比云计算没出现之前的开发人员,只能把项目部署在自己的几台PC当中。而生活现代社会的我们,想要得到电能再也不用自己用破旧的手摇发电机自己发电了。只需要打开开关,国家电力机关已经帮你完成了发、输、配、改等一系列工作。
假设你是一个想要搭建自己企业网络环境的小型企业老板,如果不存在云端这一概念,那么你只能苦逼地花费高昂的资金去购买昂贵的硬件,再一步一步配置OS、开发环境、把自己的项目部署在上边…不仅花费贼贵,而且效果还不一定符合需求,实在是惨!
而云计算的出现彻底打破了这一局面。你只需要选择租用大型云平台构造自己的云,即可轻松获得和自己辛苦搭建环境同等效果的计算资源了!
说了这么多,想必大家对于云计算是个啥玩意有了一定的了解和认识。那么云计算到底有啥特点和牛X之处呢?让我们走进下一节。
2.What is 云计算?刚才我们有提到过在云端上部署计算机资源,那么这一步究竟部署的是个啥呢?别急,我们先来思考一个吃水饺的问题。
假设某一天,张小胖饥肠辘辘,准备自己做一顿水饺。他先从菜市场买了面、菜、油等诸多原料,再回家擀饺子皮、调饺子馅、把饺子包好,最后打开了天然气,放到锅里一顿煮。这一顿操作和设备(包括食材、厨房设备、餐桌、餐具和制作过程)都是由自己准备的,我们暂且将它称作“本地部署”。
有一天,张小胖突发奇想,不想自己做了,于是他直接从零售店买了一袋速食水饺,回家自己下着吃,味道甚至比自己包出来的更美味。这一步,原材料都不用自己准备了,只需要准备煮生产饺子的锅,并且自己动手操作就好了。这种方式,我们把它称作“IaaS”(Infrastructure as a Service),也就是人们常说的“基础设施即服务”。
后来的一天,小胖同学突然大懒懒,不愿意出门买东西了,但是他还是想吃水饺,那这可怎么办呢?这时,他打开了“饿了么”(饿了么记得打广告费),给自己点了一份水饺。这一步,小胖都不用自己动手煮饺子了,除了餐桌和餐具是必须自己准备的,连煮饺子的锅也不需要了。那么这种方式,我们暂且将它称作“PaaS”(Platform as a Service),即“平台即服务”。
最后,我们的小胖同学连收拾餐桌和刷完的耐心也没有了,他直接上饭店要了一份现成的饺子,吃得十分过瘾。到了这一步,获得的直接是最终的产品,别的啥也不需要自己准备了。那么这种方式我们就把它叫做“SaaS”(Software as a Service),也就是我们常说的“软件即服务”。
用吃水饺的例子形容云计算的三个特征可能并不是很准确,但是确实大体上概括了这三种层次所提供服务的范围。借助上图,我们来正式认识一下这三个层次的概念。
第一层次,云服务商提供了最底层的硬件资源,主要包括CPU(计算资源),硬盘(存储资源), 还有网卡(网络资源)等。
第二层次,要高级一些。我们不直接使用CPU、硬盘、网卡等硬件设备,而是厂家直接帮我们把操作系统(如Windows、Linux)和数据库软件(例如Mysql、Sqlserver)等基本软件资源装好。
第三层次,更高级一些,厂家不但帮我们装好了操作系统这些基本的,还要把具体的应用软件装好,例如人脸识别服务端软件、在线视频服务端软件等,我们可以直接使用服务。
这三种层次,就是大家经常听到的IaaS、Paas、 SaaS。
经过上述讨论,我们对于云计算是个啥玩意、能给我们带来哪些服务就有了一个简单的认识。那么日常大多数企业利用云计算的形式是什么样的呢?百度百科告诉我们,大体可以分为三种形式:私有云、公有云、混合云。我们通过一个荤段子简单了解一下这几种形式的区别。
你娶了一个老婆,这叫传统IT架构。
你娶了很多风格气质各异的小老婆,以至于形成了后宫,这叫私有云。你的后宫就叫计算资源池。你从后宫里选出懂事有能的管理其他小老婆,这叫私有云管理方案。管事的那个就是HYPERV或VMWARE。
你不娶小老婆,改成包养很多情人,这叫托管云。
你是穷人,没有钱包养任何人也没钱娶小老婆,你选择去洗浴中心解决问题,这叫面向中小企业的公有云服务。 你在享受公有云服务的同时还得交公粮,这叫中小企业的混合IT架构。
你是富人,但也喜欢去高级夜总会,这叫面向大企业用户的公有云服务。
你有钱,同时包养小老婆和情人,还去洗浴中心,这叫混合云。但是在混合云里,最关键的业务还是会谨慎地采用传统IT架构。
ps:原出处知乎,完整版欢迎移步:https://link.zhihu.com/?target=http%3A//zhi.hu/ZlP2
聊了这么多云计算的服务模式,那么云计算的提供厂商是怎么为我们提供服务的呢?这才是我们作为技术人员真正应该关心的东西。
首先我们举个例子,假设你在家里自己摆了台服务器开个文件传输权限,用于同学之间共享资料,那么一台云主机完全够用。
但如果在是“双11”的淘宝购物节期间的阿里巴巴淘宝网站,面对全球几十亿用户访问,每秒几百GB的流量…这个显然就不是几根网线几台服务器能解决的了的了。我们需要设计一个超大容量、超高并发(同时访问)、超快速度、超强安全的云计算系统,才能满足业务平稳运行的要求。
那么,我们如何达到这样的要求呢?换句话来说,我们需要通过什么技术来实现一个这么牛X哄哄的超大规模云计算系统呢?接下来就进入本篇文章的重点——How to 云计算。
3.How to 云计算?假设你是一家云服务公司的老板。某天,打东边来了个小明,他对你说:“我要一台四核CPU、8GB内存、300GB硬盘的服务器!”
你说:“彳亍!”可是你手头上并没有配置恰好全部符合小明需求的机子!
小明气呼呼地走了。这时,打北边来了个小红,她对你说:“我想要一台装了Ubuntu 16.04版本、Tomcat和Mysql 5.5.60版本的服务器!”
你说:“彳亍!”于是,你灰头土脸地找了半天符合要求版本的Linux系统烧写盘,然后花了半天时间现装好了Tomcat、Mysql等开发全家桶。
等你装好了抬头一看,小红早就不耐烦地走了。这时,打南边来了一车面包人,闹腾腾地冲你喊什么的都有:“老板,我要包含语音识别和人脸识别SDK的云平台!”、“老板!来份Nvidia P100 GPU 、内存配比为1:7.5的计算型GPU !”、“老板一份MySQL+Redis+数据库备份的云数据库打包带走!”…
老板,卒。
这个故事告诉我们,想要满足群众的需求,就必须能够提供多样化多层次的云计算服务。那么,我们该怎么实现对资源的合理调用和管理呢?
3.1 虚拟化
我们对物理资源进行管理的第一步,就是“虚拟化”。
虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
简单来说,虚拟化就是在一台物理服务器上,运行多台“虚拟服务器”。这种虚拟服务器,也叫虚拟机(Virtual Machine)。
举个例子,大家都有在阿里云或者腾讯云等大厂租过服务器的经历,那么你作为租户,使用的其实是阿里云提供给你的一台虚拟机。也就是说,阿里从大量的服务器集群中,分出了一定的cpu、内存等等资源给你,就成了一台完整的虚拟机。
那么,谁来完成物理资源虚拟化的工作呢?就是大名鼎鼎的Hypervisor。
Hypervisor ,翻译过来是“超级监督者”, 也叫做VMM (Virtual Machine Monitor )。它不是一款具体的软件,而是一类软件的统称。
Hypervisor分为两大类。
第一类, hypervisor直接运行在物理机之上。虚拟机运行在hypervisor之上。
第二类,物理机上安装正常的操作系统(例如Linux或Windows ) ,然后在正常操作系统上安装hypervisor ,生成和管理虚拟机。
这样直接解释概念可能大家没有一个直观的认识。我们举个例子:
相信很多人都有在Windows系统装Linux虚拟机的经历。大家打开了自己的电脑之后,通过VMware或者别的软件,又打开了一个“子电脑”。大家在“子电脑”里,你可以和正常电脑一样运行程序,例如刷微博登微信等等。如果你愿意,你可以同时打开好几个“子电脑”,里面各自跑不同的程序。“子电脑”和“子电脑”之间,是相互隔离的,互不影响。
那么,我们所使用的VMware就是我们刚才提到的Hypervisor,除此之外,主流公司还推出了Xen、Virtual Box等商业虚拟化软件。但是,真正厉害的,是KVM ( kernel-based virtual machine )。它是基Linux内核的虚拟机,也是目前最受追捧的虚拟化方案。
像KVM这样的Hypervisor软件,实际上是提供了一种虚拟化能力,模拟CPU的运行,更为底层。但是它的用户交互并不良好,不方便使用。
于是,为了更好地管理虚拟机,就需要OpenStack这样的云管理平台。它有点像个商店,负责管理商品(计算资源、存储资源、网络资源等)。然而它本身不制造商品(不具备虚拟化能力),它的商品,来自于KVM。
回过头来简单总结一下,虚拟化技术就是将一堆物理设备虚拟成多个逻辑设备使用(也存在将多个物理设备虚拟成一个逻辑设备使用)的技术。
(具体实现有CPU虚拟化、硬盘虚拟化、网络虚拟化等等,本文不再详述)
回到本节开头的那个例子,如果你是那个云厂商的老板,并且掌握了主流虚拟化技术,那么当面对一车面包人各式各样的需求时,就不用苦逼兮兮地一个个亲自配置了,只需要把现有的硬件虚拟化的各式资源卖出去,就可以灵活地解决大家稀奇古怪的各种需求。
3.2 容器
书接上回,前文所说的虚拟化方式,人们在使用一段时间后发现,它存在一些问题。
不同的用户,有时候只是希望运行各自的一些简单程序,跑一个小进程。为了不相互影响,就建立了虚拟机,显然浪费有点大,且花费时间也比较长。比方说我就只是想开台小机子给树莓派当服务器收收数据,但却不得不为此开一台新的虚拟机,这无疑有点彪。
而且,有的时候,想要迁移自己的服务程序,就要迁移整个虚拟机。显然,迁移过程也会很复杂。
本质上来说,虚拟机直接模拟了整套操作系统。以作者本人为例,每次开个VM跟真的开机似的,不仅占内存,启动还贼慢。
有没有办法更灵活快速一些呢 ?答案当然是肯定的,这正是我们本节要介绍的"容器( Container )”。
容器也是虚拟化的一种方式,但是它属于"轻量级”的虚拟化。它的目的和虚拟机一样,都是为不同进程或者项目之间创造"隔离环境”。但是,它又和虚拟机有很大的不同。虚拟机是 操作系统级别的资源隔离,而容器本质上是进程级的资源隔离。我们看下边的图,就能轻松地了解容器和虚拟机之间的异同。
看完了容器和虚拟机在架构方面的异同,我们不难发现,容器更便捷灵活。从运行时间角度上来看,容器的启动时间很快,几秒钟就能完成。而且,它对资源的利用率很高(一台主机可以同时运行几千个Docker容器)。此外,它占的空间很小,虚拟机一般要几GB到几十GB的空间,而容器只需要MB级甚至KB级。这也是容器被广大技术人员追捧的原因。
我们吹了半天容器的牛X之处,但是大家可能还是对于容器技术到底是个啥、能干啥缺乏直观的理解。既然如此,我们就不得不对当下最火爆的容器引擎——Docker进行深入的探讨了。
Docker的官方logo是一只背着好多集装箱的可爱的小胖鲸鱼。所谓Docker,翻译过来的意思就是“码头上的搬运工人”。那么,它究竟是干啥玩意的呢?不要着急,我们还是先通过一个例子来认识它。
某天,张小胖同学又饿了,于是他又想给自己包顿饺子。于是,他擀饺子皮、调饺子馅、烧开了水炖饺子…一套流程下来,他终于做出了一顿香喷喷的饺子。
这时,他突然想道:“我包的饺子这么好吃,可是每次都要自己亲自动手费老半天劲儿,我实在是太懒了。要是有个神奇的背包,让我可以把饺子存到背包里当做饺子镜像,以后想吃的时候直接把饺子镜像复制粘贴出来,直接就能吃上新鲜的饺子了,嘿嘿嘿。”
突然,不知从哪蹦出来个老头,扔给他一个有魔法的背包。
小胖将信将疑地把饺子放了进去。神奇的事情发生了,背包里的饺子果然具有了复制粘贴功能。从今往后不管小胖走到哪,他都能凭着背包里的饺子存档随时掏出一盘饺子。
从此,小胖和饺子过上了幸福的生活。
啰啰嗦嗦说了这么多废话,我们不难发现Docker技术的三大核心概念,分别是:
镜像(Image)容器(Container)仓库(Repository)刚才的例子里面,那个放在背包里的“饺子镜像”,就是Docker镜像。而背包,就是Docker仓库。我随时随地凭借饺子镜像粘贴出来的饺子,就是一个Docker容器。
说白了,这个Docker镜像,是一个特殊的文件系统。它除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(例如环境变量)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。这句话啥意思呢?就是每个人用这个饺子镜像复制出来的饺子形状都是一样的,但是里边具体啥馅是不一定的。
小胖天天吃饺子,过了仨月,小胖突然想,我既然能复制饺子镜像,那我能不能复制别的食物,比如包子、馅饼、烤鸭之类的呢?
也就是说,大家如果把各自的镜像共享出来,那是不是每个人都能获得好多好多的好吃的?
答案当然是肯定的。大家最常使用的Registry公开服务,是官方的Docker Hub,这也是默认的 Registry,并拥有大量的高质量的官方镜像,就相当于一个装满了各种美食的背包。
就在Docker容器技术被炒得热火朝天之时,大家发现,如果想要将Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理。
从吃饺子的角度看,如果缺乏一个管理仓库中各种食物镜像的安全性和口味的大厨,万一有的食物镜像里边有毒可咋整?再说也不是所有人都懂怎么吃每一种食物啊。
就在这个时候,K8S出现了。
K8S,就是基于容器的集群管理平台。它的全称,是kubernetes,但是这个词太长了,大家又都比较懒懒,因此把“k”和“s”中间的八个字母缩写成一个“8”,它的意思是“掌舵人”。我们看它的Logo也能看出来。
K8S的架构,略微有一点复杂,我们简单来看一下。
一个K8S系统,通常称为一个K8S集群(Cluster)。这个集群主要包括两个部分: 一个Master节点(主节点)一群Node节点(计算节点)。主要职责是容器编排( Container Orchestration )一启动容器,自动化部署、扩展和管理容器应用,还有回收容器。
简单来说,K8S有点像容器的保姆。它负责管理容器在哪个机器上运行,监控容器是否存在问题,控制容器和外界的通信等等。
4.结语当今社会飞速发展,新概念、新技术的迭代可谓日新月异。曾经被2010年的马化腾不看好、称之为“今后几百年才能用得上”的云计算技术,不知不觉间已经成了像空气一样的、每个人感受不到却都离不开的资源。
今天我们大体上了解了一下云计算的诞生历史、IaaS/PaaS/SaaS三大特性,并简要了解了KVM、Hypervisor、Openstack等虚拟化技术的涵义和Docker、K8s等容器技术的涵义。希望这篇博客能够帮助你理解云计算究竟是个啥玩意,并且我希望它有助于你在和小区门口看新闻联播的老大爷的辩论中取得胜利。
如果你觉得这篇博客不错,不妨给作者点个赞~
参考博客:
https://zhuanlan.zhihu.com/p/53260098
https://www.zhihu.com/question/27211555/answer/556692696
https://blog.csdn.net/qq_44584356/article/details/104420687
https://www.jianshu.com/p/312056e70387?from=timeline
https://blog.csdn.net/gui951753/article/details/81045508?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
文章来源:CSDN博主「在风暴的中央」
原文链接:https://blog.csdn.net/qq_44584356/article/details/104525110
全网平台ID:觉醒元宇宙AI声明:「觉醒元宇宙AI」登载此文出于传递更多信息之目的,如有侵权,请第一时间联系作为大数据云计算的新生怎么样可以入门学习?
看过评论当中很多大牛推荐了如何了解云计算的概念还有书籍,题主可以通过了解云计算的概念之后开始逐步学习,这边给题主推荐的就是云计算入门的方法。
懒人目录:
云计算+运维开发基础知识云计算相关知识进阶运维云计Python运维开发一、云计算+运维开发基础知识这个部分我们需要的就是运维基本功包含内容:运维基础、linux系统概述、linux系统安装、linux基本指令、VIM编辑器、Linux用户权限、Liunx系统机制、LAMP环境配置+开源项目实战(YUM);看下图更清晰:
技术要点:
运维发展史、计算机概述,硬件组成,软件应用,操作系统Linux系统概述,虚拟机,CentOS x64系统安装,CentOS系统配置、基本的Linux指令VIM编辑器介绍,三种模式(命令模式,输入模式,末行模式),相关VIM指令,VIM项目实战用户和组概念,用户和组相关操作,Linux用户权限配置,企业实际案例应用系统模式、用户操作、网络配置、SSH、FQDN、chkconfig、ntp、防火墙、RPM包、定时任务LAMP环境概述、LAMP环境编译安装、YUM指令、YUM指令配置LAMP环境、开源项目实战二、云计算相关知识进阶运维进阶这部分,我们直接将知识点罗列到思维导图上面方便大家理解。后面是每一个总板块的细分技术要点,可以逐步去学习理解。
技术要点:
网络概念、IP、网卡、网线、交换机、路由器、局部网、广域网、网络应用实战Linux基本指令回顾、Linux高级指令详解Linux软件包概述、Linux下常见软件包管理添加新硬盘、fdisk指令概述、Linux分区概述、Linux分区实战、几个基本概念(PV、VG、PE、LV)、LVM操作实战Raid概述、基本原理、关键技术、Raid等级、Raid应用选择sshd服务概述,yum源配置,sshd服务安装与配置实战,公私钥概念,ssh免密码登录ftp服务概述,ftp安装与配置实战,nfs服务概述,nfs安装与配置实战,samba服务概述,samba安装与配置实战DNS概述、DNS详解、DNS域名服务实战网站访问流程、服务程序介绍(Apache、Nginx、IIS、Tomcat)、阿里云产品介绍、LAMP服务器构建日志概念与应用场景、日志的种类、日志查看的相关指令、rsyslog介绍、实践部署MySQL概述,MySQL安装,MySQL配置,MySQL基本操作、MySQL索引、MySQL备份与还原、MySQL主从复制、MySQL读写分离、MySQL企业级应用实战三、运维云计算技术要点:
大数据概念概述,Hadoop+HDFS大数据服务器架构, wordcount入门,MR编程实例,Python脚本编程实战虚拟化技术概述,Xen、VMware、KVM虚拟化对比与实践公有云概述、阿里云/华为云应用实战Openstack概述,OpenStack组件功能介绍,OpenStack安装与配置,OpenStack私有云运维实战; ESXi私有云运维实战Docker概述,Docker部署,Docker容器,Docker镜像仓库、Docker实战Kubernetes概述、Kubernetes安装与部署、Docker+Kubernetes集群实战学完此阶段可掌握的核心能力:1、熟练掌握虚拟化技术;2、掌握公有云与私有云架构实战;3、熟练使用容器与容器编排工具;4、熟练掌握大数据服务器架构。
学完此阶段可解决的现实问题:
能够使用KVM实现虚拟化;能够熟练使用Docker容器;能够熟练使用Kubernates容器编排工具;能够掌握公有云与私有云服务器架构实战;能够独立构建Hadoop大数据服务器。四、Python运维开发技术要点:
HTML简介、HTML标签详解、字符编码的奥秘、HTML5新特性与常用标签CSS简介、CSS的引入方式、CSS基本选择器、CSS属性、盒子模型、CSS浮动、CSS3新特性与常用属性、CSS应用案例JavaScript概述、Javascript注意点、直接量、数据类型、流程控制、数组、函数、字符串、BOM模型、DOM模型、jQuery框架实战Python+Django开发企业自动化运维平台学完此阶段可掌握的核心能力:
掌握Web前端开发相关技术如HTML5/CSS3/JavaScript;掌握Python运维相关模块;掌握Python Django框架;具备一定的Python运维开发能力。学完此阶段可解决的现实问题:
具备一定的编程思维,为未来系统架构师铺路搭桥;能够熟练掌握Python运维相关模块实现运维管理;能够使用Python+Django开发企业自动化运维平台。云计算采用的业务处理系统为?
云计算操作系统,又称云计算中心操作系统、云OS,是云计算后台数据中心的整体管理运营系统(也有人认为云计算系统包括云终端操作系统,例如现在流行的各类手机操作系统,这与先行的单机操作系统区别不大,在此不做讨论),它是指构架于服务器、存储、网络等基础硬件资源和单机操作系统、中间件、数据库等基础软件管理海量的基础硬件、软资源之上的云平台综合管理系统。
云计算操作系统通常包含以下几个模块:大规模基础软硬件管理、虚拟计算管理、分布式文件系统、业务/资源调度管理、安全管理控制等几大模块组成。
简单来讲,云计算操作系统有以下几个作用,一是治众如治寡,能管理和驱动海量服务器、存储等基础硬件,将一个数据中心的硬件资源逻辑上整合成一台服务器;二是为云应用软件提供统一、标准的接口;三是管理海量的计算任务以及资源调配;
云计算操作系统是实现云计算的关键一步,从前端看,云计算用户能够通过网络按需获取资源,并按使用量付费,如同打开电灯用电,打开水龙头用水一样,接入即用;从后台看,云计算能够实现对各类异构软硬件基础资源的兼容,更要实现资源的动态流转,如西电东送,西气东输等。将静态、固定的硬件资源进行调度,形成资源池,云计算的两大基本功能就是云计算中心操作系统实现的,但是操作系统的重要作用远不止于此。
一般来讲,国内外大的网站,比如google、网易、腾讯等,都有该类产品,但由于该系统是各自的核心竞争力,都是自产自用,不对外发售;现在市面上可用的只有两家,一是vmware的vsphere,不过该产品是虚拟化技术衍生出来的,管理的设备数量有限,目前还没有分布式文件系统;二是浪潮的云海,浪潮云海是第一款国产的云计算中心操作系统,采用“linux+Xen”开放标准技术路线,支持分布式计算、分布式存储等,性能和可用性更强、成本也相对低廉,但是要到2010年底才能发布。