首页 > 系统相关 >LINUX系统优化

LINUX系统优化

时间:2024-06-11 23:00:43浏览次数:8  
标签:文件 系统优化 分区 Linux 如下 etc yum LINUX

LINUX系统优化

企业生产场景中Linux系统的分区方案及内核

企业生产场景中Linux系统的分区方案
常规的分区方案如下:

方案1:针对网站集群架构中的某个节点服务器分区,该服务器上的数据有多份(其他节点也有)且数据不太重要,建议的分区方案如下。
/boot:设置为100~200MB。
swap:物理内存的1.5倍,当内存大于或等于8GB时,配置为8~16GB即可。
/:剩余硬盘空间大小(/usr、/home、/var等分区和“/”共用一个分区,这相当于在Windows系统中只有一个C盘,所有数据和系统文件都放在一起)。

方案2:针对数据库及存储角色的服务器分区,该服务器的业务有大量重要的数据,建议分区方案如下。
/boot:设置为100~200MB。
/:大小设置为50~200GB,只存放系统相关文件,网站等的业务数据不放在这里。
swap:物理内存的1.5倍,当内存大于或等于8GB时,配置为8~16GB即可。
/data:剩余硬盘空间大小,放数据库及存储服务等重要数据。当然,data的名称也可以换成别的名字。
本方案其实就是把重要数据单独分区,便于备份和管理。

方案3:针对大网站或门户级别企业的服务器进行分区。
/boot:大小设置为100MB。
swap:物理内存的1.5倍,当内存大于或等于8GB时,配置为8~16GB即可。
/:大小设置为50~200GB,只存放系统相关文件,网站等的业务数据不存放在这里。
剩余的磁盘空间保留,不再进行分区,将来分配给不同的使用部门,由他们自己根据需求再分!
此种分区方案更灵活,比较适合业务线比较多、需求不确定的大企业使用。

内核版本

#Linux内核版本号为
	uname -r
#内核的数字解释:
#第一个数字2表示主版本号,有结构性变化才更改;接下来的数字6表示次版本号,新增功能时才变化,一般奇数表示测试版,偶数表示开发版;接下来的32表示对次版本的修订次数或补丁包数;504代表编译的次数,每次编译可对少数程序优化或修改;e16用来表示版本的特殊信息,有较大的随意性;el代表企业版Linux;pp代表测试版;fc代表fedora core;rc代表候选版本;x86_64表示64位。

配置yum源仓库(下载软件的参考)

阿里云

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#或者
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

清华源

#配置清华源
# https://mirrors.tuna.tsinghua.edu.cn/help/centos/
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
         -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos|g' \
         -i.bak \
         /etc/yum.repos.d/CentOS-*.repo

自写yum源仓库的格式

cat > /etc/yum.repo.d/local.repo
[app1]
baseurl=
checkgpg=0
enabled=1
yum clean all #清除
yum makecache [fast]#重建缓存
yum update #升级

更新系统,打补丁到最新

ls -l /etc/pki/rpm-gpg/
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
yum update -y 
#一般在首次安装系统时可以执行yum update-y,如果是在生产线已经应用的业务服务器系统中就不要轻易更新了,以免导致业务服务异常。
#若遇到了特殊的漏洞(例如2014年4月发生的openssl心脏出血及2014年10月发生的bash漏洞,可以单独对指定的问题软件进行升级处理。yum upgrade与yum update的作用和区别很小,可执行man yum进行查看。

1、系统安装类型选择及自定义额外包组

#根据经验,选择安装包时应该采用最小化原则,即不需要的或不确定是否需要的就不安装,这样可以最大程度上确保系统安全。
	yum groupinstall "Compatibility libraries" "Base" "Development tools"
	yum groupinstall "debugging Tools" "Dial-up Networking Support"
	yum grouplist

2、安装系统常用的软件包

#最小化安装时,会有一些有用的工具包没有安装进去,此时就可以安装这些软件工具了,命令如下:
yum install tree telnet dos2unix sysstat lrzsz nc nmap -y
#安装yum-priorities源优先级工具
yum install yum-priorities -y
#yum-priorities源优先级工具是yum-plugin-priroites插件,用于给yum源划分优先级。比如说系统存在官方源、epel、puppetlabs3个yum源,这3个yum源中可能含有相同的软件,yum管理器会应用该工具来分辨安装软件时采用哪个yum源的软件。
#注意,要想开启yum源的优先级功能,就要先确保priorities.conf文件里面有如下内容,需要先打开此文件,打开文件的命令如下:
vim /etc/yum/pluginconf.d/priorities.conf
#确保文件里面包含如下内容:
[main]
enabled=1

3、关闭不需要的服务

#服务越少,系统占用的资源就会越少,所以应当关闭不需要的服务。首先可以看下系统中存在着哪些已经启动了的服务,查看命令如下:
ntsysv
#下面列出的是需要启动的服务,未列出的服务一律关闭。
#crond:自动计划任务。
#network:Linux系统的网络服务,很重要,若不开启此服务的话,服务器就不能联网。
#sshd:OpenSSH服务器守护进程。
#rsyslog:Linux的日志系统服务(CentOS 5.8下此服务名称为syslog),必须要启动。

4、关闭不需要的TTY

#可用vim编辑器打开vim/etc/init/start-ttys.conf文件,文件内容如下所示:
start on stopped rc RUNLEVEL=[2345]
env ACTIVE_CONSOLES=/dev/tty[1-6]
env X_TTY=/dev/tty1
task
script
	. /etc/sysconfig/init
	for tty in $(echo $ACTIVE_CONSOLES) ; do
		[ "$RUNLEVEL" = "5" -a "$tty" = "$X_TTY" ] && continue
		initctl start tty TTY=$tty        done
end script


#这段代码使init打开了6个控制台,可分别用ALT+F1到ALT+F6进行访问。此6个控制台默认都驻留在内存中,用ps aux命令即可看到,命令如下:
ps aux | grep tty|grep -v 'grep'

修改

#打开/etc/init/start-ttys.conf文件
	env ACTIVE_CONSOLES=/dev/tty[1-2]
#打开/etc/sysconfig/init文件
	ACTIVE_CONSOLES=/dev/tty[1-2]

5、对TCP/IP网络参数进行调整

#调整TCP/IP网络参数,可以加强对抗SYN Flood的能力,命令如下:
echo 'net.ipv4.tcp_syncookies = 1' >> /etc/sysctl.conf
sysctl -p

6、修改SHELL命令的history记录个数

#用vim编辑器打开/etc/profile文件,关注HISTSIZE=1000:
vi /etc/profile
#在找到HISTSIZE=1000后,将其改为HISTSIZE=100(这条可根据实际工作环境而定)。
#不需要重启系统也可让其生效,命令如下:
source /etc/profile

#建议各位小伙伴们,从一开始就去了解文本三剑客(AWK,SED,GREP),经常用他们,时间久了,你就很厉害了!

7、定时校正服务器的时间

#我们可以定时校正服务器的时间,命令如下:
yum install ntp
crontab -e
#加入一行:
*/1 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>>/dev/null

8、调整Linux的最大文件打开数

#在Linux下部署应用时,有时候会遇上“Too many open files”这样的问题,这个值也会影响服务器的最大并发数。其实Linux是有文件句柄限制的,但默认值不是很高,一般是1024,生产服务器很容易就会达到这个值,所以需要改动此值。
#下面打开/etc/security/limit.conf命令,在最后一行添加如下命令:
* soft nofile 65535
* hard nofile 65535
#正解的做法应该是除了以上步骤之外,还要在系统的/etc/rc.local文件里添加如下内容:
ulimit -SHn 65535

#另外,ulimit-n命令并不能真正看到文件的最大文件打开数,可用如下脚本查看:
#!/bin/bash
for pid in 
`ps aux |grep nginx |grep -v grep|awk '{print $2}'`
do
cat /proc/${pid}/limits |grep 'Max open files'
done

9、启动网卡

#/etc/sysconfig/network-scripts/ifcfg-eth0文件的配置内容:
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:14:22:1B:71:20
IPV6INIT=no
IPV6_AUTOCONF=yes
ONBOOT=yes   -->此项一定要记得更改为yes,它会在系统引导时就启动网卡设备
NETMASK=255.255.255.192
IPADDR=203.93.236.146
GATEWAY=203.93.236.129
TYPE=Ethernet
PEERDNS=yes   -->允许用从DHCP处获得的DNS覆盖本地的
DNSUSERCTL=no    -->不允许普通用户修改网卡

10、关闭写磁盘I/O功能

#Linux文件默认有3个时间,分别如下所示。
#    ·atime:对此文件的访问时间。
#    ·ctime:此文件inode发生变化的时间。
#    ·mtime:此文件的修改时间。

#如果有多个小文件(比如Web服务器的页面上有多个小图片),通常是没有必要记录文件的访问时间的,这样就可以减少写磁盘的I/O。
#在包含大量小文件的分区中使用noatime和nodiratime这两个命令。
#操作如下
vim /etc/fstab
/dev/sda5 /data/phtones ext3 noatime,nodiratime 0,0

11、增加具有sudo权限的用户

#这里用vim命令,在打开的/etc/sudoers文件内容里添加如下内容:
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
#然后添加如下内容:
李路通   ALL=(ALL)       ALL
#如果在进行sudo切换时不想输入密码,可以做如下更改:
lilutong  ALL=(ALL) NOPASSWD:ALL

#建议使用 visudo 有语法检验功能

12、修改SSH登录配置

#SSH服务配置优化,请保持机器中至少包含一个具有sudo权限的用户,下面的配置会禁止root远程登录,代码内容如下所示:
sed -i 's@#PermitRootLogin yes@PermitRootLogin no@' /etc/ssh/sshd_config #禁止root远程登录
sed -i 's@#PermitEmptyPasswords no@PermitEmptyPasswords no@' /etc/ssh/sshd_config #禁止空密码登录
sed -i 's@#UseDNS yes@UseDNS no@' /etc/ssh/sshd_config /etc/ssh/sshd_config #关闭SSH反向查询,以加快SSH的访问速度

标签:文件,系统优化,分区,Linux,如下,etc,yum,LINUX
From: https://blog.csdn.net/l47ronin/article/details/139610705

相关文章

  • Linux——线程池
    目录一、什么是线程池二、线程池的优点三、线程池的应用四、实现一个简单的线程池五、单例模式5.1、饿汉实现方式5.2、 懒汉实现方式5.3、 单例模式实现线程池(懒汉方式)六、其他常见的各种锁一、什么是线程池        线程池是线程的一种使用模式。在前面......
  • 嵌入式Linux中的LED驱动控制(续)
    前面的实例实现了在野火STM32MP157开发板上对三个LED灯的控制,这里来讨论一下该驱动程序的具体实现方式。由于实例使用的是STM32MP157这款芯片,所以先来看一下与该芯片端口操作相关的寄存器。先看端口模式寄存器MODER,该类型的寄存器在STM32MP157中有11个,即x的值从A到K。它们分别针......
  • Linux速成技巧:通过Docker高效运行Swift
    Swift,作为苹果公司推出的一种强类型编程语言,以其高效、安全的特性在开发社区中广受欢迎。虽然Swift最初是为iOS和macOS开发设计的,但它的应用范围已经扩展到了Linux平台。在Linux环境中,通过Docker运行Swift成为了一种流行且高效的方式。本文将详细介绍如何在Linux环境中通过D......
  • 在Linux系统中使用Certbot为Nginx安装SSL证书
    在Linux系统中使用Certbot为Nginx安装SSL证书并进行配置,通常遵循以下步骤:1.安装Certbot首先确保你的系统已经安装了EPEL仓库,如果没有安装,可以通过以下命令安装:sudoyuminstallepel-release接着安装Certbot:sudoyuminstallcertbot2.配置Nginx在Nginx配置文件中添......
  • Linux系统通过CrossOver运行windows系统exe程序
    1.CrossOver下载下载网址:https://crossover.mairuan.com/?a_planid=462146305&a_unitid=9457631754&a_kw_enc_utf8=crossover+%E4%B8%8B%E8%BD%BD&a_creative=93751965498&cjtg=bdsem_cr_pp&bd_vid=11448931900093706309点击免费下载软件自动下载的安装包不是liunx需要的,需要下......
  • linux基本知识(2)
    链接(创建链接(硬链接,软连接))目录的本质:文件​ 如果想在一个目录中添加或者删除目录项,需要获得目录的写权限硬链接:目录在物理文件系统中的指向软连接(符号链接):里面存储文件的路径,类似指针lnlsfilename 为文件file创建一个名为name的硬链接 默认创建硬链......
  • linux导出所有文件名到文件
    在Linux中,你可以使用find命令配合xargs和echo来导出文件名到文件。以下是一个例子,它会在当前目录及其子目录下查找所有文件和目录,并将它们的名称导出到filenames.txt文件中:  find.-typef-or-typed|xargsecho{}>>filenames.txt解释:find.:在当前目录......
  • linux内存管理(四)- 用户空间的内存分配在kernel中的实现
    malloc是常用的用户态分配内存的接口,它会调用brk系统调用来请内存分配内存。下面看看该系统调用的实现。插一句,每次调用malloc的时候未必都会调用brk去从kernel分配实际的内存,因为每次系统调用都是有开销的,为了避免频繁的陷入内核,malloc会多申请一部分内存当作内存池,之后要申请内......
  • linux内存管理(七)- 写时复制
    在fork进程的时候子进程会共享父进程的页表,但并没有分配新页。此时页表时只读的,如果父进程或者子进程写内存就会触发pagefault,内核会重新分配内存更改页表,从此分道扬镳。因此写时复制包含两部分内容,第一是fork进程时复制页表并设置pte为只读,第二是写内存发生pagefault。先来看......
  • 【Linux驱动设备开发详解】14.Linux网络设备架构
    1.Linux网络设备驱动的结构与字符设备和块设备不同,网络设备并不对应于/dev目录下的文件,应用程序最终使用套接字完成与网络设备的接口。Linux系统对网络设备驱动定义了4个层次,这4个层次为:网络协议接口层:向网络层协议提供同一的数据包收发接口,无论是IP还是ARP,都是通过dev_queue_......