云平台,听着是一个很厉害的东西,总觉得可能需要一个很大很厉害的服务器才能做到,但是这次需要我们用自己的电脑来实现这个私有云,听起来不简单,做起来却并没有想象中那样困难。
服务计算第一次实验:使用 VirtualBox 让 PC 提供云桌面服务
大部分流程同老师给出的试验内容相同,本篇博客主要记录在其中遇到的问题,和问题的解决和本人的思考(思考可能并不清晰,也不甚正确,欢迎评论指出)
一、安装Centos 7
首先,安装好VirtualBox,配置好一块虚拟网卡(管理 -> 主机网络管理器),如图:
同时,下载好Centos Minimal ISO,作为前期准备。
新建虚拟机,根据要求更改好显示和存储,重点在网络上,第一块网卡选择网络地址转换(NAT)
,第二块网卡选择仅主机(Host-Only)网络
,并选择刚才我们配置好的虚拟网卡。
这里,从windows中也能看到这块网卡的信息:
- 小思考——关于虚拟机的网卡连接方式:
从上面VBox的截图可以看到,我原来也用虚拟机运行桌面版Linux发行版Ubuntu,所以这一次选择了Centos这个系统来进一步学习,但是原来安装虚拟机的时候并没有关注过网络方面的选择,一直都是默认的NAT方法,虚拟机网络有时候也会出现一些小问题,但是重启基本都能解决,这一次看到网络可以有这么多种选择就去简单了解了一下这次所用到的两种。
- 网络地址转换(NAT):简单来说就是,虚拟机不拥有自己的ip,而通过主机连接,也就是通过你的win系统的网络访问外网,一般ip地址为10.x.x.x,内网地址。
- 仅主机(Host-Only)网络:通过虚拟主机,也可以理解为虚拟网卡访问外网,能与主机相互ping通,但只有主机允许该网卡共享网络时,才能访问外网。虚拟机存在于主机构建的虚拟局域网中。
之后,启动虚拟机,图形化界面引导安装centos,记住自己设定的用户名和密码,这里我直接使用了root用户,以便后来的配置。安装完成后,输入用户名和密码就可以进入系统啦!
二、配置Centos7
1. 网络配置
使用nmtui检查网络是否活动以及配置ip地址和主机名
这里,enp0s3
是我们配置的NAT网络,enp0s8
是仅主机网络,一般来说,前者不需要配置,我们主要需要配置第二张网卡的ip,设置如下图:
需要注意的是,ipv4需要设定为Manual(手动)
,事实上,第一次的时候我并没有修改这里而是保持了默认的Automatic(手动)
也能正常配置完成整个私有云,但是后来舍友遇到了无法连接的问题,我再回头来登陆我的虚拟机才发现确实不能连接,会出现以下提示:
也就是ip设置出了问题,后来改成了手动没问题了。我的理解是,由于我们在虚拟机主机网络设置那里,设置的那张虚拟网卡是没有启用DHCP服务器
的,所以连接不能设置成自动,只有在手动的情况下我们配置的ip才是有效的,这一点,在桌面版中很好理解,如果不设置成手动,根本就不会有让你填写ip的地方:
最后,关于nmtui
工具,还有一点需要注意,虽然大部分命令都是回车ENTER确定,但是那些需要勾选成X状态的选项,是需要按空格SPACE的!!!(神坑,由于当时不知道,所以自动连接是通过改ifconfig文件的ONBOOT=YES
改出来的)
之后,可以用ip addr
查看当前网络状态,跟win下的ipconfig
命令相似:
然后可以ping
一下主机和外网:
然后在win下也可以ping
一下虚拟机:
2. 软件配置
更改成阿里云源
1
2curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache升级OS内核
1
yum update
安装vim
1
yum install vim
安装VBox增强功能
先安装需要的编译环境
1
yum install gcc kernel-devel kernel-headers bzip2
之后网上有很多各种各样的方法,这里我只介绍我解决了的,最方便快捷的
先挂载上
VBoxGuestAdditions.iso
(设备->分配光驱->选择虚拟盘->然后选择VBox安装文件夹下的VBoxGuestAdditions.iso
)这里的光盘应该是位于
/dev/cdrom
,我们用mount
命令将他挂载到其他位置才能执行,进入我们挂载的位置,然后直接执行./VBoxLinuxAdditions.run
就安装好了。还有一种十分简单明了的办法,也是可行的,参考这篇博客的第8条:Linux 环境下为VirtualBox安装增强功能
3. SSH连接
Centos7已经提供了内置的SSH连接,我们只需要启用它就可以了,修改/etc/ssh/sshd_config
文件,将
1 | Port 22 |
这两行前面的注释#符号去掉,然后开启服务:
1 | service sshd start |
这时就可以从win中ssh连接虚拟机了:
这里不得不提一句,前面为什么要关掉DHCP服务器
以及设置手动配置ip
,因为这样就不需要再在虚拟机中用ip addr
查看当前ip
,可以直接用VBox的无界面启动
,然后在已知我们配置好的ip的情况下ssh
连接虚拟机,比直接开启虚拟机要方便快捷许多。
补充:
利用端口转发,可以使用主机地址+端口号访问虚拟机,而不需要知道虚拟机的ip地址:
如上配置,我们可以利用ssh -p 10303 192.168.100.1
访问虚拟机:
三、复制Centos7
这里,大部分人都没有遇到问题,只需要按步骤,利用VirtualBox提供的复制功能一路点点点就可以解决,但是我复制了三次,都出错了…只要一复制,配置好的虚拟机和它的备份都再也打不开了…
第一次,我觉得可能是运气不太好,删掉重来了。
第二次,我觉得可能是复制的姿势不太对,删掉再来。
第三次,我实在舍不得删掉重来了,就复制了报错信息google了一下,然后将信将疑地按步骤执行,最后终于不需要再删掉重来了!
这里就分享一下我的理解。
问题参考解决方法:
简单来说,就是在复制虚拟机时会更改虚拟机存储文件的uuid,导致启动虚拟机时无法找到对应的文件,故而报错。
总之,如果它报的错是:
1 | Parent UUID {00000000-0000-0000-0000-000000000000} of the medium 'C:\Users\nik\VirtualBox VMs\XP-nik\Snapshots/{ab4aad8d-7b66-4569-bbfd-facb581deefc}.vhd' does not match UUID {94b27e89-d561-4449-a1a7-83c2f1dd8d12} of its parent medium stored in the media registry (‘C:\Users\nik/.VirtualBox\VirtualBox.xml’) |
你就执行:
1 | VBoxManage.exe internalcommands sethdparentuuid "C:\Users\nik\VirtualBox VMs\XP-nik\Snapshots\{ab4aad8d-7b66-4569-bbfd-facb581deefc}.vhd" {94b27e89-d561-4449-a1a7-83c2f1dd8d12} |
其中VBoxManage.exe
在VirtualBox安装文件夹中。
以上。
复制好后,我们需只要修改第二台虚拟机的主机名和ip配置,就可以得到我们刚刚配置好的Centos7完全一样的备份机啦~如果把这个虚拟机搞出任何问题,都可以重新从原来的虚拟机复制一份新的而不用担心需要从头配置呢~
然后我们可以给这台复制好的虚拟机装上桌面系统
1 | yum groupinstall "GNOME Desktop" |
设置启动目标为桌面
1 | ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target |
然后重启虚拟机,就可以看到桌面版Linux了。
四、 远程连接Centos7
这里只需要利用VBox提供的端口转发功能,开启远程桌面服务,基本上就能完成了。不得不说,VirtualBox真是是一个很强大的开源虚拟机软件啊。
配置如下:
把虚拟机无界面启动
,在win下远程桌面连接虚拟机:
五、 结语
至此,本次的私有云配置就告一段落了。虽然知道距离真正的云还有很多很多的路要走,但是这次实验总是还是有趣而有意义的,也能学习到很多东西,自己查了许多的资料,也问了许多问题,看了已成功的同学们的博客,自己写这篇博客的时候有些慌乱,因为确实已经做了很多遍了,但是由于没有一些关键问题的截图,只能有这一次成功的截图,大概就是只留下成功的喜悦吧~
希望以后能好好利用这次创建好的私有云吧,也希望能坚持自己选择安装Centos想要多多熟悉命令行Linux的初衷。
感谢你能阅读本篇博客到这里,欢迎评论。