从CentOS 6快速上手CentOS 7和Ubuntu
Posted 运维军团
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从CentOS 6快速上手CentOS 7和Ubuntu相关的知识,希望对你有一定的参考价值。
1. 背景
随着时间推移,需求的变更,线上的环境越来越复杂。原先我们线上的系统从CentOS 4升级到5、6之后就稳定下来没怎么动过,但是后面在大规模部署openstack的时候发现ubuntu更适合,加上docker对CentOS 6的支持很差,使得我们把已发行多年的CentOS 7也纳入眼中进行尝试使用。
作为熟悉CentOS 6的小伙伴们怎样才能举一反三,把CentOS 7和Ubuntu得心应手地玩转起来呢?接下来我们就来看看他们各自的区别。
2. CentOS 7与CentOS 6区别
CentOS 6升级到7可不像5升级到6那么顺利和平滑,不管在底层和用户层都有很大的差异,不好好了解的话可能会很生疏。CentOS 7与6之间最大的差别就是初始化技术的不同,7采用的初始化技术是Systemd,并行的运行方式,除了这一点之外,还包括服务启动、开机启动文件、网络命令各个方面等等,有些看起来是多此一举的改动,不过我们也还是有选择的余地。
2.1 CentOS 7新特性
CentOS自2014年原地升级6.5至7.0,现在又更新到了7.4版本,这些版本变更给我们带来了很多新的特性,其中比较重要的有:
全面支持 LVM 缓存;
支持 Linux 容器(赞~);
Open VMware Tools 及 3D 图像能即装即用;
支持 Btrfs 文件系统、OverlayFS 及 Cisco VIC 内核驱动程序;
支持40G以太网络卡;
可挂载 ceph 方块设备;
全面支持 openJDK-1.8.0;
引进网络分组技术作为链路聚集的捆绑备用方法;
虚拟I/O对底层硬件调用更加的效率,支持USB3.0,嵌套虚拟化技术,增强了对VMWARE支持;
SSH1支持已从SSH服务中删除。所有被认为是不安全的加密协议和算法已被废弃。
2.2 文件系统
CentOS 7默认采用xfs格式:
file -Ls /dev/sda1 /dev/sda1: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
xfs不像之前的ext4文件系统会被限制在16TB,是一个64位文件系统,最大支持8EB减1字节的单个文件系统,而且扩展性和性能比ext4好,ext4在存在海量文件的时候性能下架特别厉害,甚至有这类报错导致无法写入:
EXT4-fs warning (device dm-0): ext4_dx_add_entry:2006: Directory index full
用户这里平常对文件系统的细节可以基本忽略,享受xfs即可。
2.3 系统初始化技术
CentOS 7采用的是最新的初始化系统:systemd 。它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度。systemd的目标就是尽可能启动更少的进程,尽可能将更多进程并行启动。启动流程如下:
看起来比较生涩,在用户层最直观的表现就是管理服务的方式变了,即引入了systemctl命令来替代原先的service和chkconfig命令和/etc/init.d/目录的脚本,其中服务脚本目录改为了/usr/lib/systemd/system,运行结果也是大不相同。
2.4 系统具体区别
内核版本: CentOS 6版本为2.6.x-x ;CentOS 7 版本为3.10.x-x
内核参数设置:CentOS 6中的/etc/sysctl.conf 在CentOS 7 中修改为/usr/lib/sysctl.d/00-system.conf、/etc/sysctl.d/<name>.conf。ll查看如下:
ll /usr/lib/sysctl.d/ total 12 -rw-r--r--. 1 root root 293 Aug 4 2017 00-system.conf -rw-r--r--. 1 root root 1810 Aug 4 2017 10-default-yama-scope.conf -rw-r--r-- 1 root root 1205 Oct 20 11:07 50-default.conf
运行级别runlevel:CentOS 6 下的/etc/inittab 在CentOS 7 中无效,改用system target替代。运行级别也有CentOS 6中的7种变更为5种(2 3 4合并为1种):
开机启动:CentOS 6 中的/etc/rc.local 在7中默认没有执行权限,需要使用需额外加权限处理。CentOS 7中统一使用systemctl 管理开机启动服务,比如:
systemctl enable docker.service
目录结构: CentOS 6中的/bin/ ,/sbin/,/lib/ , /lib64 在CentOS 7 中移到了/usr目录下,这个比较折腾,原先的脚本移植过来可能会有绝对路径的问题,不过CentOS 7也是尽量做了些路径的硬链接来保持兼容,比如/usr/sbin/ip和/sbin/ip完全是同一个文件。
yum源:CentOS 6中默认从官方源下载,在CentOS 7中优化成自动寻找离自己最近的yum源下载。
命令:最小化安装时候,比CentOS 6更小的包来安装,比如:vim、ifconfig、setup等等命令都没有了,需要的时候要安装完系统额外安装:
yum install lrzsz tree net-tools nmap vim bash-completion lsof dos2unix nc telnet ntp wget rng-tools psmisc screen -y
防火墙:CentOS 7默认防火墙变更为firewalld,个人感觉有些画蛇添足,而且不够直观,可以关闭firewalld安装回ipables。
systemctl stop firewalld.service systemctl disable firewalld.service yuminstall -y iptables-services systemctl restart iptables.service systemctl enable iptables.service
语言设置: CentOS 6中/etc/sysconfig/i18n、centos7中/etc/locale.conf
#CentOS 6
cat /etc/sysconfig/i18n LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16"
#CentOS 7
cat /etc/locale.conf LANG="en_US.UTF-8"
主机名设置:由CentOS 6中/etc/sysconfig/network 变更为/etc/hostname
#CentOS 6
cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=localhost.localdomain
#CentOS 7
cat /etc/hostname localhost.localdomain
管理服务:CentOS 6 中的chkconfig、service、/etc/init.d/ 管理服务器命令再centos7 中统一用systemctl替代。例如:
sysvinit命令 systemctl命令
启动服务
service crond start systemctl start crond.service
停止服务
service crond stop systemctl stop crond.service
重启服务
service crond restart systemctl restart crond.service
当支持时,重新装载配置文件而不中断等待操作
service crond reload systemctl reload crond.service
如果服务正在运行,那么重启它
service crond condrestart systemctl condrestart crond.service
查看服务运行状态
service crond status systemctl status crond.service
输出在各个运行级别吓服务的启动和禁用情况
chkconfig --list systemctl list-unit-files
在下次启动时或满足其他触发条件时设置服务为启动
chkconfig crond on systemctl enable crond.service
在下次启动时或满足其他触发条件时设置服务为禁用
chkconfig crond off systemctl disable crond.service
用来检查一个服务在当前环境在被配置为启动还是禁用
chkconfig --list crond systemctl is-enabled crond.service
当创建新服务文件或者变更设置时使用
chkconfig --add crond systemctl daemon-reload
2.5 网卡命名
CentOS 7系统,网卡命名跟之前发生了变化,不再是传统的eth0、eth1,而是提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名全自动的、可预知的,缺点是比 eth0、wlan0 更难读,比如 ens33。这种命名规则缺点太明显,如此难读,那么如何把网卡命名改成默认的呢?方法如下:
编辑 grub 配置文件(增加标红部分)
vi /etc/sysconfig/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet net.ifnames=0 biosdevname=0" GRUB_DISABLE_RECOVERY="true"
重新生成grub配置文件,然后重新启动Linux操作系统,通过ip addr可以看到网卡名称已经变为eth0:
grub2-mkconfig -o /boot/grub2/grub.cfg
2.6 单用户模式修改密码
CentOS 6进入单用户模式比较简单, 直接在grub的内核引导那里尾部加上single即可,但是CentOS 7进入单用户模式稍微麻烦(如果直接加single的话,则和命令systemctl rescue一样进入救援模式,需要输入root密码),免密进入单用户操作如下: 在grub的启动项那里按e进行编辑,把ro选项改为rw,然后删除rhgb和quiet,同时在后面添加init=/bin/bash。
这是修改后(注意rhgb quiet已删除):
修改完成后按ctrl+x 重启系统,即可免密进入单用户模式了。
2.7 其他命令区别
其余还有些细节,比如python从2.6升级到2.7了,解决了我们平常很多的一些库依赖问题。另外还有些细节在平滑更新到新的方式,也就是说现在还比较兼容,但趋势是会慢慢进行替换,我们需要尝试理解和接受。
时间同步:7系列里面的标配时间同步服务是chrony,而不是之前的ntp。
网络信息:网络这块,7系列更加突出原先的ip命令的地位,比如加策略路由我们在6上面也是需要用到,功能非常强大。下面简单列一下对应关系做参考:
#查看网卡和IP地址:
ifconfig ip a
#查看路由和网络连接:
netstat –r route ip r ip rule netstat -antulp ss -anlp
关机和重启:关机和重启这块,原先的shutdown、halt和reboot之类的命令全部做软链接到systemctl命令了,现在还是兼容可以使用,不过也需要注意下绝对路径的变化。
3. CentOS和Ubuntu区别
CentOS基于RHEL,Ubuntu基于Debian。是两个不同系列的系统,他们最大的区别是:Ubuntu使用dpkg管理.deb软件包,CentOS使用rpm管理.rpm软件包。
区别如下所示:
3.1 rpm与dpkg对比
3.2 yum与apt-get区别
4. 结语
关于系统的选型,如果是一些很特殊的稳定性要求异常高的,建议Redhat或者Unix都不为过,我认为如果是需要运作一些新事物或者桌面的话,就建议考虑Ubuntu这类更新比较激进的系统了,如果只是普通的运行场景,选哪个系统并不是那么重要,就算选opensuse也有一大堆大厂商共同奋战~
近期文章
END
全中国只有不到1% 的人关注了运维军团
你是个有眼光的人!
(由于交流群人数已超100人,需要进群的小伙伴可以添加运维小编的微信:)
ywjtshare
运维军团
专注运维技术与传承,分享丰富原创干货
以上是关于从CentOS 6快速上手CentOS 7和Ubuntu的主要内容,如果未能解决你的问题,请参考以下文章
NGINX-新手小白快速上手Centos搭建Nginx服务器