CentOS7安装与优化
1.1 历史版本下载地址
https://opsx.alibaba.com/mirror #阿里云镜像站 http://vault.centos.org/ #历史版本 http://vault.centos.org/7.2.1511/isos/x86_64/ #我这里使用的是7.2-1511版本
镜像名字解释:CentOS-7-x86_64-DVD-1708.iso
从 CentOS 7 之后,版本命名就跟发行的日期有关了
• CentOS-7 系统是7.x版本 • x86_64 64 位操作系统,并且从7以后不再提供32位镜像。 • 1708 2017年08月发表的版本
1.2 CentOS7系统安装
IP:10.0.0.201和172.16.1.201
主机名:CentOS7
磁盘空间:100G
安装包组如右图所示
防火墙和Selinux关闭
做好快照
1.2.1 新建虚拟机
1.2.2 安装CentOS7系统
#开机
#按下TAB键
输入一下指令修改网卡名称为eth0
net.ifnames=0 biosdevname=0
#选择语言
#设置网卡
#设置eth0和eth1
#勾选开机自启动
#设置IP地址并保存eth1也是同样步骤
#设置主机名
#设置上海时间
#关闭密码保护
#设置分区
#这个是设置主分区
#这个是设置主分区
#格式化磁盘
#关闭kdump
#选择系统安装包
#设置root密码
1.3 系统初始化技术演变
1.3.1 Sysvinit 技术
特点:
1. 系统第1个进程(pid=1)为init;
2. Init进程是所有进程的祖先,不可kill;
3. 大多数Linux发行版的init系统是和SystemV相兼容的,被称为sysvinit。
4. 代表系统:CentOS5
#应用场景: 用于服务器时代。 #优点: SysVinit运行非常良好,概念简单清晰。它 主要依赖于Shell脚本。 #缺点: ①按照一定顺序执行启动太慢。 ②很容易hang住,fstab与nfs挂载问题 #未来的趋势: 个人PC机和移动平台,需要便捷、快的系统。
1.3.2 Upstart 技术
• CentOS6采用了Upstart技术代替sysvinit进行引导,Upstart对rc.sysinit脚本做了大量的优化,缩短了系统初始化时的启动时间。但是CentOS6为了简便管理员的操作,upstart的很多特性并没有凸显或者直接不支持,因此在CentOS6中的服务启动脚本还是以原来SysV的形式提供的。
• But,一个应运而生的技术,却因为竞争对手太强大,而被淘汰。
• 代表系统: CentOS6 ,Ubuntu14,从CentOS7,Ubuntu15开始使用systemd
1.3.3 Systemd 技术
• 新系统都会采用的技术(RedHat7,CentOS7,Ubuntu15等);
• 设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度;
• 和 Sysvinit 兼容,降低迁移成本;
• 最主要优点:并行启动
• Pid为1的进程
[root@centos7 ~]# ps-ef|head -2 UID PID PPID C STIME TTY TIME CMD root 1 0 0 11:13 ? 00:00:01 /usr/lib/systemd/systemd --switched-root -- system --deserialize 21
1.3.4 并发启动三大原理
1.解决 socket 依赖/端口依赖
2.采用了D-Bus作为程序之间的通信工具,类似消息队列,可以缓存信息
3.解决文件系统依赖:优先启动要用的文件系统,其余的文件系统都延迟启动加载。
1.4 登录系统 & 简单优化
1.4.1 查看系统版本
[root@centos7 ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@centos7 ~]# uname -r 3.10.0-327.el7.x86_64 [root@centos7 ~]# uname -m x86_64
1.4.2 补充安装软件包
yum install yum-utils cmake ncurses-devel libaio-devel make gcc gcc-c++ lrzsz dos2unix tree nmap nc dos2unix telnet nc sl telnet sl nano bash-completion vim net-tools wget curl lsof -y
1.4.3 关闭邮件
systemctl stop postfix #当前关闭 systemctl disable postfix #关闭开机自启动 systemctl stop firewalld.service #关闭防火墙 systemctl disable firewalld.service #关闭开机自启动 sed -i.bak 's@#UseDNS yes@UseDNS no@g;s@^GSSAPIAuthentication yes@GSSAPIAuthentication no@g' /etc/ssh/sshd_config #ssh优化 sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config #关闭selinux 关机做快照
1.4.4 区别1:网卡名称eth0和enp5s0/ens33
传统上,Linux的网络接口名称为eth0、eth1…,但这些名称并不一定符合实际的硬件插槽等,这可能会导致不同的网络配置错误(例如,由无意的接口改名引起的禁止接口)。基于MAC地址的udev规则在虚拟化的环境中并不有用,这里的MAC地址如端口数量一样无常。
• CentOS6/RHEL6引入了一致和可预测的网络设备命名网络接口的方法。这些特性可以唯一地确定网络接口的名称以使定位和区分设备更容易,并且在这样一种方式下,无论是否重启机器、过了多少时间、或者改变硬件,其名字都是持久不变的。然而,这种命名规则并不是默认在CentOS/RHEL6上开启。
• 从CentOS7/RHEL7起,这种可预见的命名规则变成了默认。根据这一规则,接口名称被自动基于固件,拓扑结构和位置信息来确定。现在,即使添加或移除网络设备,接口名称仍然保持固定,而无需重新枚举,和坏掉的硬件可以无缝替换。
1.4.5 CentOS7 修改网卡名称为eth0
在安装系统的时候配置:修改内核选项,net.ifnames=0 biosdevname=0 #上面已经说过
1.4.6 已经安装完系统修改为eth0
1.4.6.1 调整网卡名称
[root@centos7 ~]# cd/etc/sysconfig/network-scripts/ #<==进入网卡文件目录。 [root@centos7 network-scripts]# mv ifcfg-eno16777736 ifcfg-eth0 #<==进重命名网卡名称
1.4.6.2 调整网卡的配置信息
[root@centos7 network-scripts]# cat ifcfg-eth0 #<==修改后的结果如下。 TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=eth0 #<==修改为eth0。 UUID=3e8d1581-84bd-44e8-ae70-467fa29e2585 DEVICE=eth0 #<==修改为eth0。 ONBOOT=yes DNS1=10.0.0.2 IPADDR=10.0.0.201 PREFIX=24 GATEWAY=10.0.0.2 IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_PRIVACY=no
1.4.6.3 修改并生成grub配置
修改后的结果如下,也可以在安装系统或开机启动时进行调整。
[root@centos7 network-scripts]# cat /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=128M rhgb net.ifnames=0 biosdevname=0 quiet" #<==黄色底纹内容是添加的。
GRUB_DISABLE_RECOVERY="true"
[root@lcentos7 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg #<==生成grub启动菜单。
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-229.el7.x86_64
Found initrd image:/boot/initramfs-3.10.0-229.el7.x86_64.img
Found linux image:/boot/vmlinuz-0-rescue-1100f7e6c97d4afaad2e396403ba7f61
Found initrd image:/boot/initramfs-0-rescue-1100f7e6c97d4afaad2e396403ba7f61.img
Done
1.4.6.4 验证是否修改结果
[root@centos7 ~]# network-scripts]# reboot #<==必须重启系统。 [root@centos7 ~]# yum install net-tools -y #<== centos7默认没有ifconfig 需要安装net-tools包 [root@centos7 network-scripts]# ifconfig #<==再次查看网卡信息 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet10.0.0.201 netmask 255.255.255.0 broadcast 10.0.0.255 inet6fe80::20c:29ff:feae:ef19 prefixlen64 scopeid 0x20<link> ether00:0c:29:ae:ef:19 txqueuelen 1000 (Ethernet) RX packets36248 bytes 2319009 (2.2 MiB) RXerrors 0 dropped 0 overruns 0 frame 0 TXpackets 43090 bytes 67555745 (64.4 MiB) TXerrors 0 dropped 0 overruns 0 carrier 0 collisions 0
1.4.7 区别2:网络配置相关命令
ip:yum -y install iproute CentOS7主推使用ip、ss命令。 • ifconfig:yum -y install net-tools • setup:yum -y install setuptool 废弃命令 安装好之后,你会发现里面什么都没有,这只是一个图形工具。我们需要用到的网络服务,防火墙,系统服务等需要另外再安装。安装好setup tools工具之后,我们需要安装工具组件如ntsysv(系统服务),system-config-networktui(网络服务),iptables(防火墙配置)等。只需要部分的也可以只安装需要的也行。 • nmtui:替代setup命令
1.4.8 区别3:主机名等配置文件
修改主机名 hostname CentOS7 临时生效 编辑/etc/hostname 主机名的配置文件变了 hostnamectl set-hostname CentOS7 #→方法2,本质还是改配置文件。 修改字符集 localectl set-locale LANG=zh_CN. UTF-8 编辑/etc/locale.conf cat /etc/redhat-release 查看系统版本号 cat /etc/os-release 所有支持systemd系统的统一发行版名称和版本号文件
1.4.9 区别4:兼容的 /etc/rc.local
需要加+x执行权限,才可以开机自启动(一般有些软件开机自启动命令放在里面)
# Please note that you must run 'chmod+x /etc/rc.d/rc.local' to ensure # that this script will be executed during boot.
1.4.10 区别5:运行级别Runlevel
Runlevel [root@CentOS7 ~]# cat /etc/inittab # inittab is no longer used when using systemd. • 当前启动级别 [root@CentOS7 ~]# systemctl get-default multi-user.target • 设置启动级别 systemctl set-default multi-user.target
1.4.11 systemd一统天下
看看从前的runlevel都变成什么样了? ls -lh /usr/lib/systemd/system/runlevel*.target • 所有可用的单元文件存放在/usr/lib/systemd/system/和 /etc/systemd/system/目录(后者优先级更高)。 ll -h /etc/systemd/system/default.target
1.4.12 区别6:管理服务
chkconfig • service • /etc/init.d/ • systemctl:融合service和chkconfig的功能于一体,兼容SysV和LSB的启动脚本,而且够在进程启动过程中更有效地引导加载服务。。
1.4.13 启动时间优化
开机启动时间 systemd-analyze time • systemd-analyze blame • systemd-analyze plot > bootime.svg