基础运维之linux系统初始化

基础运维之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 极少数选择中文
  • 时区选择: 国内一般都是beijingshanghai
  • 文件系统: 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脚本来实现;

-萧瑟

你可能感兴趣的:(基础运维之linux系统初始化)