浅谈Linux优化及安全配置个人体会总结
在网上看到不少有关linux优化方面的好文章,在此我也不赘述这些文章了,我只想从我自己的体会来谈谈这方面的问题。 作为一个系统管理员,我下面说的都是基于服务器应用的linux来谈的,由于个人电脑上使用linux也许不是像服务器上一样,优先追求安全和稳定,因此个人电脑使用的朋友只做个参考吧。
本文提及的系统,如没有特别声明,均采用redhat公司的redhat linux系统。
关于优化
说起优化,其实最好的优化就是提升硬件的配置,例如提高cpu的运算能力,提高内存的容量,个人认为如果你考虑升级硬件的话,建议优先提高内存的容量,因为一般服务器应用,对内存的消耗使用要求是最高的。当然这都是题外话了。
这里我们首要讨论的,是在同等硬件配置下(同一台服务器,不提升硬件的情况下)对你的系统进行优化。
作为系统管理员,我认为,首先我们要明确一个观点:在服务器上作任何操作,升级和修改任何配置文件或软件,都必须首要考虑安全性,不是越新的东西就越好,这也是为什么linux管理感觉上和windows有所不同的地方,windows首先推荐大家去使用它的最新版本软件和操作系统,其实我个人认为这是一种商业行为,作为从系统管理上来讲,这是很不好的,使用新的软件和系统可能带来新的问题,有些甚至是致命的。
因此,作为管理,我们还是应该考虑稳定的长期使用的软件版本来作为我们的版本,具体的好处我就不多说了。相信作为管理员的你应该知道的。
其实个人使用的linux最直接的一个优化就是升级内核,自己编译的内核是根据自己的系统编译而来,将得到最大的性能和最小的内核。
但是,服务器就不太一样了,当然我们也希望每一台服务器都是自己手工编译的内核,高效而精巧。但是实际和愿望是有差距的,试想一下,如果你管理100来台 linux主机,而每一台也许配置都不一样,那编译内核的一个过程将是一个浩大工程,而且从实际考虑,工作量大得难以想象。我想你也不会愿意做这种事情吧。因此,个人建议,采用官方发布的内核升级包是很好的选择。
首先,我们对新安装的系统,将做一系列升级,包括软件和内核,这是很重要的步骤,(这方面的详细情况欢迎察看我另一篇关于升级方面的文章)。
在升级好所有软件后,基本的防火墙和配置都做好以后,我们开始优化一些细节配置,如果你是老系统,那么在作本问题及的一些操作和优化你系统之前,务必被备份所有数据到其他介质。
1、虚拟内存优化
首先查看虚拟内存的使用情况,使用命令
# free
查看当前系统的内存使用情况。
一般来说,linux的物理内存几乎是完全used。这个和windows非常大的区别,它的内存管理机制将系统内存充分利用,并非windows无论多大的内存都要去使用一些虚拟内存一样。这点需要注意。
linux下面虚拟内存的默认配置通过命令
# cat /proc/sys/vm/freepages
可以查看,显示的三个数字是当前系统的:最小内存空白页、最低内存空白页和最高内存空白。
注意,这里系统使用虚拟内存的原则是:如果空白页数目低于最高空白页设置,则使用磁盘交换空间。当达到最低空白页设置时,使用内存交换(注:这个是我查看一些资料得来的,具体应用时还需要自己观察一下,不过这个不影响我们配置新的虚拟内存参数)。
内存一般以每页4k字节分配。最小内存空白页设置是系统中内存数量的2倍;最低内存空白页设置是内存数量的4倍;最高内存空白页设置是系统内存的6倍。这些值在系统启动时决定。
一般来讲在配置系统分配的虚拟内存配置上,我个人认为增大最高内存空白页是一种比较好的配置方式,以1g的内存配置为例:
可将原来的配置比例修改为:
2048 4096 6444
通过命令
# echo "2048 4096 6444" > /proc/sys/vm/freepages
因为增加了最高空白页配置,那么可以使内存更有效的利用。
2、硬盘优化
如果你是scsi硬盘或者是ide阵列,可以跳过这一节,这节介绍的参数调整只针对使用ide硬盘的服务器。
我们通过hdparm程序来设置ide硬盘,
使用dma和32位传输可以大幅提升系统性能。使用命令如下:
# /sbin/hdparm -c 1 /dev/hda
此命令将第一个ide硬盘的pci总线指定为32位,使用 -c 0参数来禁用32位传输。
在硬盘上使用dma,使用命令:
# /sbin/hdparm -d 1 /dev/hda
关闭dma可以使用 -d 0的参数。
更改完成后,可以使用hdparm来检查修改后的结果,使用命令:
# /sbin/hdparm -t /dev/had
为了确保设置的结果不变,使用命令:# /sbin/hdparm -k 1 /dev/hda
hdparm命令的一些常用的其他参数功能
-g 显示硬盘的磁轨,磁头,磁区等参数。
-i 显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供。
-i 直接读取硬盘所提供的硬件规格信息。
-p 设定硬盘的pio模式。
-tt 评估硬盘的读取效率和硬盘快取的读取效率。
-u <0或1> 在硬盘存取时,允许其他中断要求同时执行。
-v 显示硬盘的相关设定。
3、其他优化
关闭不需要的服务,关于系统自动启动的服务,网上有很多资料,在此我就不赘述了。
所有的TCP/IP调优参数都位于/proc/sys/net/目录。例如, 下面是最重要的一些调优参数,后面是它们的含义:
1、/proc/sys/net/core/rmem_max — 最大的TCP数据接收缓冲
2、/proc/sys/net/core/wmem_max — 最大的TCP数据发送缓冲
3、/proc/sys/net/ipv4/tcp_timestamps — 时间戳在(请参考RFC 1323)TCP的包头增加12个字节
4、/proc/sys/net/ipv4/tcp_sack — 有选择的应答
5、/proc/sys/net/ipv4/tcp_window_scaling — 支持更大的TCP窗口 如果TCP窗口最大超过65535(64K), 必须设置该数值为1
6、rmem_default — 默认的接收窗口大小
7、rmem_max — 接收窗口的最大大小
8、wmem_default — 默认的发送窗口大小
9 wmem_max — 发送窗口的最大大小
/proc目录下的所有内容都是临时性的, 所以重启动系统后任何修改都会丢失
建议在系统启动时自动修改TCP/IP参数:
把下面代码增加到/etc/rclocal文件, 然后保存文件, 系统重新引导的时候会自动修改下面的TCP/IP参数:
echo 256960 > /proc/sys/net/core/rmem_default
echo 256960 > /proc/sys/net/core/rmem_max
echo 256960 > /proc/sys/net/core/wmem_default
echo 256960 > /proc/sys/net/core/wmem_max
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
echo 1 > /proc/sys/net/ipv4/tcp_sack
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
TCP/IP参数都是自解释的, TCP窗口大小设置为256960, 禁止TCP的时间戳(取消在每个数据包的头中增加12字节), 支持更大的TCP窗口和TCP有选择的应答。
上面数值的设定是根据互连网连接和最大带宽/延迟率来决定
注: 上面实例中的数值可以实际应用, 但它只包含了一部分参数
另外一个方法: 使用 /etc/sysctlconf 在系统启动时将参数配置成您所设置的值:
netcorermem_default = 256960
netcorermem_max = 256960
netcorewmem_default = 256960
netcorewmem_max = 256960
netipv4tcp_timestamps = 0
netipv4tcp_sack =1
netipv4tcp_window_scaling = 1
----------------------------------------------------------------
/proc/sys/fs/super-max
该文件指定超级块处理程序的最大数目。挂装的任何文件系统需要使用超级块,所以如果挂装了大量文件系统,则可能会用尽超级块处理程序。
缺省设置:256
/proc/sys/fs/super-nr
该文件显示当前已分配超级块的数目。该文件是只读的,仅用于显示信息。
/proc/sys/kernel
/proc/sys/kernel/acct
该文件有三个可配置值,根据包含日志的文件系统上可用空间的数量(以百分比表示),这些值控制何时开始进行进程记帐:
如果可用空间低于这个百分比值,则停止进程记帐
如果可用空间高于这个百分比值,则开始进程记帐
检查上面两个值的频率(以秒为单位)
要更改这个文件的某个值,应该回送用空格分隔开的一串数字。
缺省设置:2 4 30
如果包含日志的文件系统上只有少于 2% 的可用空间,则这些值会使记帐停止,如果有 4% 或更多可用空间,则再次启动记帐。每 30 秒做一次检查。
嵌入式linux开机时间优化小结:
1、用Image替代zImage,zImage是压缩后的内核镜像文件,所以使用Image就省去的加载时的解压所消耗的时间(大概可以节省2~3秒的启动时间)。但若使用Image则应考虑NandFlash的空间是否够用。
2、文件系统镜像有ramdisk、jffs2和cramfs三种,内核加载这三种镜像的速率cramfs最快,其次jffs2,最后是ramdisk。其中cramfs是只读文件系统。通常一个产品是三者的结合。
3、优化bootloader,减少其运行时间。
4、减少kernel体积,比如将不是在启动阶段必须加载的驱动模块留在文件系统后面加载,减少kernel的运行和加载时间。
5、优化或关闭调试串口输出。
6、 驱动程序放在文件系统后面加载,先显示应用程序界面,再在后台加载必要的驱动模块。
7、将整个系统运行环境保存到RAM中,加电只是个系统恢复过程。
8、仔细优化kernel和每个驱动模块,将每个部分的延时调试到最快。
9、 应用程序的优化,减少应用程序的启动时间。
0条评论