如果你是一个搞运维的同学,那么肯定需要安装虚拟机,做试验也好、跨平台也好。但是安装虚拟机是一个耗时又有点复杂的通过,如果做到开箱即用呢?如果让虚拟机用着更加顺手呢?就需要好好地捣鼓捣鼓。
1. 安装虚拟机
现在市面上的虚拟机种类其实还挺多的,如很有名的 VMware
、Parallels
、Oracle VM VirtualBox
和 QEMU
等。所以选择一个好的虚拟机也是需要自己好好地琢磨琢磨的,选定之后就把这个软件研究透,都选择在这上面工作。
我试用上述虚拟机的绝大多数,VMware
好用且扩展性好、Parallels
绝对是 MBP
上的最佳助手、VirtualBox
免费且简单的工具。综合很多原因,我这里使用的是 VirtualBox
。
我这里安装了四个虚拟机,分别为两台 CentOS6
和两台 CentOS7
(第二台都是以第一台为模板进行复制而来的),且为其进行的分组,方便使用和查看。
2. 启动文本级别
我们都知道 Linux
系统有多种运行基本,最常使用的有单用户级别、图形级别和文本级别。通常,服务器都会是文本级别的,因为节省内存消耗且方便操作,否非是想使用 Linux
作为你日常的办公系统才会使用到图形界面。
如果将虚拟机中的操作系统,改为默认的文本级别呢?
- CentOS6
[root@node ~]# vim /etc/inittab
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
id:3:initdefault:
- CentOS7
[root@node ~]# cat /etc/inittab
# 都是注释信息,大致说了如下内容:
# multi-user.target 类似于 runlevel 3
# graphical.target 类似于 runlevel 5
# 查看默认运行级别的方式为 systemctl get-default
# 设置默认运行级别的方式 systemctl set-default TARGET.target
- CentOS6/7 运行级别对应表
init 级别 | systemctl target |
---|---|
0 | shutdown.target |
1 | emergency.target |
2 | rescure.target |
3 | multi-user.target |
4 | 无 |
5 | graphical.target |
6 | 无 |
- CentOS7 设置运行级别
systemctl | 命令 说明 |
---|---|
systemctl get-default | 获得当前的运行级别 |
systemctl set-default multi-user.target | 设置默认的运行级别为 mulit-user |
systemctl isolate multi-user.target | 在不重启的情况下,切换到运行级别 mulit-user 下 |
systemctl isolate graphical.target | 在不重启的情况下,切换到图形界面下 |
注释:当然 CentOS7
中还是可以使用 runlevel
命令来更改运行级别的
3. 网卡配置
配置好虚拟机,如果固定好各个虚拟机的网络地址呢?不然,使用 DHCP
自动分别,下次我们连接的时候,可能因为网络环境的改变而导致虚拟机的地址也发生的改变。所以我们就需要给虚拟机分配一个合适的静态地址了。
不管安装的虚拟机是 CentOS6
还是 CentOS7
的系统,大致上的静态地址的配置基本相同,就是 CentOS7
中的网卡名称不在以 eth
开头了。当然这也是可以改回来的,具体步骤自行 Google
吧。
配置静态IP
地址,基本只需要修改两处配置,如图所示:
当然,如果你使用的是 CentOS7
的最小化安装,可能当你登录之后发现没有 ifconfig
命令而且此时也无法连接到网络。这下你就悲剧了,可以挂载光盘进行进行 net-tools
的安装,或者你使用 ip
命令自行调整网络。
4. 常见问题
当然,在使用的时候肯定会遇到一些问题,有的其实挺坑爹的。
4.1 远程连接 ssh 无法登录
- 报错问题
- 提示:
ssh: connect to xxxxxxxxxx port 22: Connection refused
- 提示:
- 解决方式
- [可以原因] sshd 服务未安装
- [可以原因] sshd 服务未启动
- [可以原因] 防火墙给拦截了
# sshd服务未安装
[root@node ~]# yum install -y openssh-server
# sshd服务未启动
[root@node ~]# service sshd restart
[root@node ~]# systemctl restart sshd.service
# 防火墙给拦截了
[root@node ~]# service iptable stop
[root@node ~]# systemctl stop firewalld.service
4.2 重启后 resolv.conf 被重置
发现在修改一台 CentOS6
服务器的 DNS
时,发现只要重启服务器 DNS
就会被强制还原。
网卡设置中修改
NM_CONTROLLED
的值- 设置为
NM_CONTROLLED
的值为no
,禁止Network Manager
管理DNS
,默认为允许 - 其实这一步不设置也是可以,知道配置好
DNS
就可以了
- 设置为
修改网卡配置
- 注意配置好网关、
DNS
和IP
地址
- 注意配置好网关、
- 修改
/etc/resolv.conf
的值- 如果没有修改
NM_CONTROLLED
的值,可以不设置,因为Network Manager
会根据我们修改的网卡配置自动进行生成的
- 如果没有修改
[root@node ~]# vim /etc/resolv.conf
nameserver 192.168.31.1
nameserver 8.8.8.8
- 重启服务
[root@node ~]# service network restart
4.3 安装虚拟机扩展工具
在 virtualbox
界面中点击安装扩展工具,系统会自动将扩展工具驱动挂载到对应虚拟机上,后面执行如下命令既可。
# 挂载
$ sudo mount /dev/sr0 /media/cdrom
# 安装对应包
$ cd /media/cdrom
$ sudo ./VBoxLinuxAdditions.run
# 重启
$ sudo reboot
# 确认是否安装成功
$ lsmod | grep vboxguest