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. tensorflow 训练网络loss突然出现nan的情况

    1.问题描述:开始训练一切都是那么的平静,很正常! 突然loss变为nan,瞬间懵逼! 2.在网上看了一些解答,可能是梯度爆炸,可能是有关于0的计算.然后我觉得可能是关于0的吧,然后进行了验证. 3. ...

  2. Django框架(八)—— 模板层:模板导入、模板继承、静态文件

    目录 模板导入.继承.静态文件 一.模板导入 1.语法 2.使用 二.模板的继承 1.使用模板的继承 2.强调(注意点) 三.静态文件 1.在配置文件settings中配置过静态文件 2.导入使用静态 ...

  3. js小项目:显示与输入的内容相关的

    1,添加键盘抬起事件 2,获取文本框的内容,是否与数组中的内容匹配 3,创建元素 <!DOCTYPE html> <html lang="en"> < ...

  4. leetcode.字符串.696计数二进制子串-java

    1. 具体题目 给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的.重复出现的子串要计算它们出现的次数. 示例 1 : 输入: ...

  5. 天道神诀--samba和NFS部署

    samba yum -y install samba samba-client rpm -qa |grep samba service smb start(445端口) service nmb sta ...

  6. 不走弯路,微信小程序的快速入门?

    微信小程序下载注册地址:https://mp.weixin.qq.com/cgi-bin/wx 微信小程序登开发者平台地址(可以查看小程序APPID):https://mp.weixin.qq.com ...

  7. Flask理论基础(一)视图函数和URL反转函数(url_for)

    一.视图函数 1.1 基本用法试图函数是 app.route 或者 bp.route(蓝图)装饰器装饰的函数.该函数实现了对URL路径的转换,也就是路由功能,例如下面代码定义了默认url ‘/’ 和‘ ...

  8. 转: Meshlab简介

    本文翻译自Meshlab主页:http://www.meshlab.net/ MeshLab是用于处理和编辑3D三角形网格的开源系统.它提供了一组用于编辑,清理,修复,检查,渲染,纹理和转换网格的工具 ...

  9. CKEditor与CKFinder学习--自定义界面及按钮事件捕获

    原文地址:CKEditor与CKFinder学习--自定义界面及按钮事件捕获  讨厌CSDN的广告,吃香太难看! 效果图 界面操作图 原始界面 调整后的界面(删除了flush,表单元素等) 该界面的皮 ...

  10. day05 mysql pymysql的使用 (前端+flask+pymysql的使用) 索引 解释执行 慢日志 分页性能方案

    day05 mysql pymysql   一.pymysql的操作     commit(): 在数据库里增删改的时候,必须要进行提交,否则插入的数据不生效       1.增, 删, 改  #co ...