1.系统安装前的规则

a.分区:不同环境不同分法,按自己的需求来

以硬盘500G为例

/boot 100M-200M(只存放grub和启动相关文件,不存放其他)

/  80G-100G (因为很多人默认会把各种东西放到根目录下,没有单独挂载的分区都属于根

swap 内存小就一般分2倍,内存大(现在服务器16G以上内存很常见)就最大4G或者8G

/var 50-100G (主要存放日志,邮件,ftp,httpd等家目录,kvm的磁盘文件等

/vm 50-100G (主要存放vmware虚拟机)

/data 50G 左右(主要存放你的个人数据)

如果系统出问题,能排错就排错,不能或很麻烦在重装时只格式化根分区就可以了,重做完后,改写/etc/fstab

根分区分的太小,满了怎么办? 如果是lvm可以在线扩容,没有lvm只能去把根分区下的一些数据移到其他分区(除非用新一代文件系统btrf这种)

b,软件包的选择:你需要啥就安装啥(如果在意系统瘦身,那么选择最小化安装,再安装应用时少啥就装啥

2.关闭不用的服务(service xxx stop 或 chkconfig xxx off 或 ntsysv --level 2345)

有几个服务记录不要关闭了,haldaemon,messagebus 这两个服务关闭任意一个,就造成开机鼠标键盘无法用

常见的不关闭服务:network,sshd 等

3.主机名配置和绑定

如果公司现在有100甚至更多的机器,都要互相绑定

方法一:shell 脚本,先在其中一台绑定所有机器的ip与名字到/etc/hosts文件,再用shell脚本循环拷贝到其他所有机器(ssh等效性或except)
方法二:在安装所有机器时,使用kickstart 或cobber 让其在安装的时候就通过postscripts 实现安装完后就统一截IP,配置主机名,绑定主机名

方法三:内网DNS (/etc/nsswitch.conf)这个文件里配置了,称查找/etc/hosts ,再查找DNS

方法四:使用自动化运维工具,如 puppet

4。静态IP

5.yum配置

一般不可能所有服务器都用公网的yum 源,建议把本地iso和第三方下载的rpm包都在其中一台服务器做成yum仓库,其他服务器就直接使用这台的yum就可以了

如何下载

a) 先配置远程公网yum源路径

如下:
[puppet]

name=puppet

baseurl=http://yum.puppetlabs.com/el/6.5/products/x86_64/

enabled=1

gpgcheck=0

b)使用reposync命令

reposync --repoid=puppet

都会下载到本地当前目录

c)因为下载后,没有repodata目录,所以需要手动生成

yum install createrepo -y

createrepo 下载的目录路径

d)通过服务如httpd做成其他服务器能使用的yum源

-------------------------------------------------------------------------

--------------------------------------------------------------------
扩展使用yum要注意的一个小例子
使用yum remove 删除软件包时,一般会删除一些依赖包,然后 yum install重新安装,不一定会把这些依赖包自动装回来。所以建议都把这些依赖包手动再安装回来

# rpm -qa |grep ^mysql --我这里查找到已经安装了这么多mysql的软件包
mysql-devel-5.1.71-1.el6.x86_64
mysql-test-5.1.71-1.el6.x86_64
mysql-server-5.1.71-1.el6.x86_64
mysql-connector-java-5.1.17-6.el6.noarch
mysql-5.1.71-1.el6.x86_64
mysql-libs-5.1.71-1.el6.x86_64
mysql-bench-5.1.71-1.el6.x86_64
mysql-connector-odbc-5.1.5r1144-7.el6.x86_64

下面我需要重装这些软件包,在使用yum remove mysql*时删除的包包括依赖性特别的多,这样很可能会因为删除了其它服务需要使用的rpm包,而造成其它服务或系统其它的功能缺失

解决方法:
方法一:
rpm -e mysql-5.1.71-1.el6.x86_64 --nodeps
rpm -e mysql-devel-5.1.71-1.el6.x86_64 --nodeps
rpm -e mysql-server-5.1.71-1.el6.x86_64 --nodeps
rpm -e mysql-test-5.1.71-1.el6.x86_64 --nodeps
rpm -e mysql-connector-java-5.1.17-6.el6.noarch --nodeps
rpm -e mysql-libs-5.1.71-1.el6.x86_64 --nodeps
rpm -e mysql-bench-5.1.71-1.el6.x86_64 --nodeps
rpm -e mysql-connector-odbc-5.1.5r1144-7.el6.x86_64 --nodeps
再重装回来
yum install mysql*

方法二:
rpm -qa |grep ^mysql |xargs rpm -e --nodeps
再重装回来
yum install mysql*

方法三:
直接使用yum remove mysql* 去删除包
再用下面的命令重装回来
# cat /var/log/yum.log |grep "Jun 04" |grep Erased |awk '{print $NF}' |xargs yum install -y

--上面三个方法最好的应该是方法二,操作快速,而且不会像方法三那样去删除了其它的依赖性包(因为你删除其它的依赖性包,就算是再安装回来,那么原来的配置文件被刷新了)

------------------------------------------------------------------

6.pam,iptables或selinux的配置

7.用户有关的:

a.创建完要用的普通用户(如果一个用户只用于跑服务daemon,可以指定家目录为/dev/null,uid小于500

登陆环境为/sbin/nologin 等,如useradd -r -d /dev/null -s /sbin/nologin xxx)

b.做完后,保证/etc/passwd,/etc/shadow 等文件的安全(如:不需要修改就chattr +i /etc/passwd,chattr +i /etc/shadow

c.对相应的普通用户做sudo授权

8.重要的文件权限的配置,比如一些自己的很重要的文件,chmod 700 xxx 或 chmod 600 xxx

9.如果有必要,并且技术水平成熟,可以重新编译升级内核?

答案:内核如果不支持你所需要的一个功能,可以重编内核来加上这个功能.但是一般来说,

没有内核不支持的功能,但是redhat自带的内核不一定给你加上这个功能

比如,要在linux下支持ntfs格式挂载

一:重新编译内核,加上ntfs挂载功能(因为redhat默认没有加到内核里,但内核是支持的)

二: 用第三方软件,把功能做成模块加到内核上,让其支持还有一个情况需要自己编译内核,

就是内核编译优化,简单来说就是把内核里自己用不到的功能去掉,只留下自己用得到的功能

重新编译内核的步骤:

a)下载新内核源码,解压;os自带内核源码在 (/usr/src/kernels/`uname -r`/,如果此内核源码目录不存在

可以通过 yum install kernel-devel -y 安装

b) cd 内核源码目录/

c) make-menuconfig

按你需求来选择功能

* 代表编进内核

M 代表编译成 模块,需要 modprobe xxx 装载才能使用

空 代表 不需要这个功能

d)选择好功能后,保存,会把你所有的选择保存到一个.config 文件里

e)make

f)make modules_install --把编译后的模块复制到/lib/modules/内核新版本/  以后可以用modprobe insmod 来装载使用

g)make install

h) reboot 重启你的系统,在grub菜单选择新的内核登陆你的 OS

10.文件系统

ext2 ext3 ext4 fat32 ntfs xfs reiserfs zfs btrfs jfs nfs gfs2 ocfs......

下面以rhel6 默认ext4为例简单讨论 ext4 的优化

a.单个文件可以 chattr + A xxx 让这个文件的atime不变化   (因为atime是文件的访问时间,基本没什么实用价值,所以让其不变也是一种优化)

b.只优化单个文件不行,所以需要优化整个文件系统让所有文件 atime都 不变化

在 rhel5 里cat 一次 atime 就会变化一次

在 rhel6 里只有当 atime时间早于或等于mtime或ctime之一时 cat 这个文件,atime 才会变(因为rhel6 已经做了相对的优化,主要实现的方法是在mount 加了relatime

但是我们想优化更彻底,那么让 atime 在任何情况下都不变,做法为:
mount -o defaults,noatime /dev/sda7 /test/ --这样做后 /dev/sda7 这个分区里所有文件里的所有文件都不改变atime 了

所有分区都要这么做,就在 /etc/fstab 里把所有分区的defaults 参数后加,noatime 就可以了

但写到 fstab 里需要重启才能生效,因为根分区不能umount 再 mount 所以要使用下面remount 的参数在线重挂载

mount -o remount,defaults,noatime /

c.Ext4 提供三种数据日志记录方式:data=writeback ,data=ordered (默认) data=journal

data=writeback 速度最快,但是不记录文件系统日志,只记录基本元数据,数据安全性低

data=journal     速度最慢,但是记录完整文件系统日志,数据安全性高

data=ordered    居中

如果要修改,在mount 时用 -o data=writeback 来挂载就可以 或者在 /etc/fstab 里defaults,data=writeback 就可以了

实验 :

用一个实现分区,分三种日志记录方式去挂载,然后使用 dd 命令写文件来测试比较速度

mount -o defaults,data=writeback /dev/sda7 /test/

cd /test

dd if=/dev/zero of =test

最快

mount -o defaults,data=journal /dev/sda7 /test

cd /test

dd if =/dev/zero of=test

最慢

mount -o defaults,data=ordered /dev/sda7 /test

cd /test

dd if =/dev/zero of=test

居中

11,内核参数优化(不是内核编译,是内核参数修改)

linux 系统优化,调优的更多相关文章

  1. linux性能调优概述

    - 什么是性能调优?(what) - 为什么需要性能调优?(why) - 什么时候需要性能调优?(when) - 什么地方需要性能调优?(where) - 什么人来进行性能调优?(who) - 怎么样 ...

  2. linux系统性能调优第一步——性能分析(vmstat)

    linux系统性能调优第一步--性能分析(vmstat) 分类: LINUX 性能调优的第一步是性能分析,下面从性能分析着手进行一些介绍,尤其对linux性能分析工具vmstat的用法和实践进行详细介 ...

  3. Linux内核调优参数说明

    该脚本是我常用的系统安装后执行脚本,包括开机启动服务.内核.SSH优化. !/bin/sh 服务优化,(sshd.network.crond.syslog.rsyslog)服务保持默认开机启动 Ser ...

  4. Linux网卡调优篇-禁用ipv6与优化socket缓冲区大小

    Linux网卡调优篇-禁用ipv6与优化socket缓冲区大小 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一般在内网环境中,我们几乎是用不到IPV6,因此我们没有必要把多不 ...

  5. 转载linux性能调优工具

    Linux 大牛,Netflix 高级性能架构师 Brendan Gregg 更新 Linux 性能调优工具,各种资源应有尽有,大量干货,强烈建议收藏.

  6. <Linux性能调优指南>主要思路流程

    网上IBM很早放出的一本免费电子书, 十来年了,参考意义还是很大. 国内有翻译成中文在线阅读的版本. 见如下两个URL Linux Performance and Tuning Guidelines ...

  7. linux 性能调优工具参考 (linux performance tools)

    之前发现几张图对于linux使用者有着较强的参考意义,下面对其进行简单备忘: # linux 静态信息查看工具 # linux 性能测试工具 benchmark # linux 性能观测工具 # li ...

  8. linux内核调优参考

    对于新部署的机器,需要做一些基本的调优操作,以更改一些默认配置带来的性能问题 1 修改打开文件数 root@mysql:/data/tools/db# vim /etc/security/limits ...

  9. Linux系统调优

    Linux核心参数都是放置在/proc下面:系统的参数都是放置在/proc/sys swap最好放置在运行最快的硬盘上面,但是swap并能取代ram,因为并有I/O上面的损耗,所以优先考虑检验内存没有 ...

随机推荐

  1. 20140814 explicit

    1.explicit explicit   只对构造函数起作用,用来抑制隐式转换. 如:     class   A   {        A(int   a);   };  int   Functi ...

  2. 清除浮动的方法(float)

    方式一: 额外标签法:给浮动的元素后面新增加一个清除浮动的盒子 例如: <div style="float: left">浮动盒子</div> <di ...

  3. AXD 的使用以及源代码说明

    汇编源代码说明 ;=============================================================================== ;  引用头文件 ;= ...

  4. ubuntu 16.04 pecl 不能安裝 mcrypt

    vagrant@ubuntu-xenial:/etc/apt$ sudo pecl install mcrypt-1.0.1 downloading mcrypt-1.0.1.tgz ... Star ...

  5. 【Tomcat】Tomcat调优

    Tomcat的默认配置,性能并不是最优的,我们可以通过优化tomcat以此来提高网站的并发能力.提高Tomcat的性能可以分为两个方向. 服务器资源 服务器所能提供CPU.内存.硬盘的性能对处理能力有 ...

  6. 通过base64实现图片下载功能(基于vue)

    1. 使用场景 当我们处理图片下载功能的时候,如果本地的图片,那么是可以通过canvas获得图片的base64的,方法如下.但是如果图片的url存在跨域问题的话,下面的方法将行不通,这时候我们可以另辟 ...

  7. 牛客网 NOIP赛前集训营-普及组(第四场)C--部分和 (高维前缀和)

    传送门 解题思路 高维前缀和模板题.首先,求前缀和有两种方式,比如说对于求二维前缀和来说. 第一种 : for(int i=1;i<=n;i++) for(int j=1;j<=n;j++ ...

  8. vue中使用router全局守卫实现页面拦截

    一.背景 在vue项目中使用vue-router做页面跳转时,路由的方式有两种,一种是静态路由,另一种是动态路由.而要实现对路由的控制需要使用vuex和router全局守卫进行判断拦截(安全问题文章最 ...

  9. UIWindow & UIWindowLevel笔记

    一.UIWindow是一种特殊的UIView,通常在一个程序中只会有一个UIWindow,但可以手动创建多个UIWindow,同时加到程序里面.UIWindow在程序中主要起到三个作用: 1.作为容器 ...

  10. mysql最新版与mysql5.6的兼容问题

    最近公司在给别的企业打了一个项目,在公司本地使用的是mysql 5.6,但是搭建的项目的mysql版本是最新版5.7以后吧,所以有些sql在执行上出了一点问题 目前发现的是: 1: 在5.6版本下先o ...