基础运维之linux系统初始化
不管是在bat工作还是在初创公司工作,服务器操作系统的标准化可以说是非常重要的一环,就像盖房子的打桩一样。
**
标准化的系统必须要满足:
**
- 稳定
- 适用性强
- 性能
其实满足这三点的操作系统有很多,像ubuntu centos redhat debain 等等都很不错; 而目前看来市场占有率ubuntu和centos平分秋色,不相上下;故,今天我就用ubuntu来做标准化系统。
1)选择系统;
系统选择的必要条件是公司的大部分人都比较熟悉这个系统,不能盲目的根据个人喜欢来决定;
首先是研发部门和测试部门看他们对于哪个系统更熟悉一些,其次是运维人员熟悉哪些,正常情况下运维人员对于多个操作系统都应该能够适应,至少可以做到快速学习;
选择完系统后需要对版本进行选择,应以最简化的操作系统做为标准系统,当然也可以DIY裁剪系统。
ubuntu-14.04.5-server-amd64.iso
2)安装标准
**
在安装前需要确定以下内容:
**
- hostname
#用来标识主机所在位置,运行的服务;
举例:sh-web1
这是比较简单的命名方式,也有比较复杂的:sh-jinqiao-lab-project1-web01
;
- ip address
#大公司网络这块管理的比较严格,一般需要跟网络部门或IT部门申请ip地址,小公司的话可能就运维自己规划了;
- 系统语言选择:
english
极少数选择中文 - 时区选择: 国内一般都是
beijing
或shanghai
- 文件系统:
ext4 xfs
需要根据业务的类型来选择,主要是读写的密集度,是否存储大文件等等; - 分区标准: 一般大都会将所有的空间分配给/根目录,也有将大部分空间分配给/home目录的,其实主要是从两个方面考虑:数据
安全,效率;
*1.数据安全: 主要方面:只用一个分区,若遇到系统需要重装或者分区需要进行格式化等,原有的重要文件无法在本硬盘保留,而若提前进行了合理分区,则用户数据不会收到影响 次要方面,我们知道,同等外部条件下,读取越频繁,磁盘越容易受损,我们把读写频繁的目录挂载到一个单独的分区,可以把磁盘的损伤控制在一个集中的区域。
2.效率: 主要方面:分区将数据集中在某个磁柱的区段,当有数据要读取自该分区时, 硬盘只会搜寻相应区段,有助于数据读取的速度与效能的提升!另一方面,磁盘不同区域(内圈与外圈,)的读取速度是不同的,磁盘越大,差别越明显,通常将读写频繁的目录挂载到读取速度更快的区域(总体来说,是推荐外圈),不常使用和变更的数据放在稍慢的区域将是一个比较好的选择
- 需要安装的默认系统服务:例如
ssh iptables samba email
等等
3)安装后系统优化
-
配置时间同步
ntpdate 0.pool.ntp.org && hwclock -w
#这真是其中一种方法; -
history历史记录数调整
export HISTSIZE=10000 export HISTTIMEFORMAT="%F %T `whoami`"
#将这两行加入到
/etc/profile
文件中,并重新加载:source /etc/profile
-
文件描述符
-
tcp最大连接数
大多数人将65535理解为系统的最大连接数,这样理解不够准确,准确的来说应该是client系统的最大tcp连接数为6w多,也就是说一台client就可以跟server系统产生6w多并发连接;所以大家可以理解成服务器端的tcp连接是一个无限大的数,因为clinet有n多个(tcp最大连接数理论值是2的48次方)。 -
文件描述符
Linux内核本身有文件描述符最大值的限制,你可以根据需要更改:
系统最大打开文件描述符数:cat /proc/sys/fs/file-max
临时性设置:echo 1000000 > /proc/sys/fs/file-max
永久设置:修改/etc/sysctl.conf
文件,增加fs.file-max = 1000000
进程最大打开文件描述符数:ulimit -n
使用ulimit -n查看当前设置。使用ulimit -n 1000000进行临时性设置。
要想永久生效,你可以修改/etc/security/limits.conf文件,增加下面的行:
-
* hard nofile 1000000
* soft nofile 1000000
root hard nofile 1000000
root soft nofile 1000000
还有一点要注意的就是hard limit不能大于/proc/sys/fs/nr_open,因此有时你也需要修改nr_open的值;
echo 2000000 > /proc/sys/fs/nr_open
查看当前系统使用的打开文件描述符数,可以使用下面的命令:
cat /proc/sys/fs/file-nr
#详细的内容可以参考这篇博文http://www.cnblogs.com/zengkefu/p/5602473.html
- 内核参数优化(网络方面)
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.ip_local_port_range = 1024 65000
#将这些内容加入
/etc/systyl
中并执行sys -p
至于每个参数的具体意义和效果大家自行百度吧;
除了网络方面的内核优化,深入一点还有io的优化,但这块属于鸡肋的优化,除非是一些大数据的系统对磁盘读写要求特别高。
- 锁定系统文件:
chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
#防止程序或者人为误操作导致系统文件被修改。
- selinux 和 防火墙是否关闭
#这块根据实际需求来修改配置文件。
本文只整理了大体的思路和重点内容,一些细节内容在文中没有体现出来,大家借助搜索引擎自行补充吧^_^
[_]:注释
安装系统,如果使用kickstart来部署的话可以通过修改配置文件来实现自动化安装系统;
安装后的系统优化,也可以shell脚本来实现;
-萧瑟
网友评论