暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

搭建部分功能解释说明

原创 Decay 2022-09-12
499

1.8 启用chronyd
[root@db1 ~]# systemctl start chronyd
[root@db1 ~]# systemctl enable chronyd

集群中节点之间需要时间同步,Chronyd不依赖外部的时间服务NTP,在内部搭建时间服务器。

Chrony是网络时间协议(NTP)的一种实现,是一个类Unix系统上NTP客户端和服务器的替代品。Chrony客户端可以与NTP servers同步系统时间,也可以与参考时钟(例如:GPS接受设备)进行同步,还与手动输入的时间进行同步。同样Chrony也可以作为一个NTPv4(RFC 5905) server为其他计算机提供时间同步服务。



1.9 关闭avahi-daemon
[root@db1 ~]# systemctl stop avahi-daemon
[root@db1 ~]# systemctl disable avahi-daemon

Avahi 是Zeroconf规范的开源实现,常见使用在Linux上。包含了一整套多播DNS(multicastDNS)/DNS-SD网络服务的实现。它使用的发布授权是LGPL。Zeroconf规范的另一个实现是Apple公司的Bonjour程式。Avahi和Bonjour相互兼容(废话,都走同一个 规范标准嘛,就象IE,Firefox,chrome都能跑HTTP1.1一样)。

Avahi允许程序在不需要进行手动网络配置的情况下,在一个网络中发布和获知各种服务和主机。例如,当某用户把他的计算机接入到某个局域网时,如果他的机器运行有Avahi服务,则Avahi程式自动广播,从而发现网络中可用的打印机、共享文件和可相互聊天的其他用户。这有点象他正在接收局域网中的各种网络广告一样。

“零配置网络服务”的目标,是让非专业用户也能便捷的连接各种网络设备,例如计算机,打印机等。整个搭建网络的过程都是通过程式自动化实现。如果没有zeroconf,用户必须手动配置一些服务,例如DHCP、DNS,计算机网络的其他设置等。



1.5 禁用transparent_hugepage和NUMA
[root@db1 ~]# vi /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet transparent_hugepage=never numa=off"
GRUB_DISABLE_RECOVERY="true"
[root@db1 ~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
[root@db1 ~]# reboot

验证:
[root@db1 ~]# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.10.0-957.el7.x86_64 root=/dev/mapper/vg00-root ro crashkernel=auto rd.lvm.lv=vg00/root rd.lvm.lv=vg00/swap rd.lvm.lv=vg00/usr rhgb quiet transparent_hugepage=never numa=off
[root@db1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]


1.什么是Transparent HugePages?
Transparent HugePages是RHEL6的新特性。
为了提升性能,Kernel会将程序缓存在内存中,每页内存以2M为单位。
想要有效的使用THP,kernel要在内存中找到一系列连续的物理内存来满足需求,也可能会对齐。
为了达到这个效果,系统新加了一个khugepaged进程,这个进程会偶尔尝试把正在使用的较小页面换到hugepage中。这样就能使hugepage使用达到最大化。
2.如何关闭THP
尽管THP的本意是为提升性能,但某些数据库厂商还是建议直接关闭THP(比如说Oracle、MongoDB等),否则可能导致性能下降,内存锁,甚至系统重启等问题。



1.18 配置NOZEROCONF
[root@db1 ~]# /etc/sysconfig/network
NOZEROCONF=yes

这么说,若是Oracle Linux/Redhat Linux作为Oracle DB Server使用,是不是要强制:把NOZEROCONF=yes添加到/etc/sysconfig/network中?
感觉是要把NOZEROCONF=yes添加到/etc/sysconfig/network中!



1.19 安装cvuqdisk
两个节点都要安装。
cvuqdisk存于oracle GI安装介质的cv/rpm目录下:
[root@db1 ~]# cd /grid/19.3.0/grid/cv/rpm/
[root@db1 rpm]# export CVUQDISK_GRP=oinstall
[root@db1 rpm]# rpm -ivh cvuqdisk-1.0.10-1.rpm

在安装RAC的过程中,如果没有安装cvuqdisk包,那么集群检验工具(Cluster Verification Utility,CVU)就不能发现共享磁盘。而且,如果没有安装该包或者安装的版本不对的话,那么当运行集群检验工具的时候就会报“PRVF-10037 : Failed to retrieve storage type for "<devicepath>" on node "<node>"”或“Could not get the type of storage”或“PRVF-07017: Package cvuqdisk not installed”的错误。cvuqdisk的RPM包含在Oracle Grid Infrastructure安装介质上的rpm目录中。


1.20 配置/dev/shm
[root@db1 ~]# vi /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=512G 0 0

[root@db1 ~]# mount -o remount /dev/shm


默认的Linux发行版中的内核配置都会开启tmpfs,映射到了/dev/下的shm目录。可以通过df 命令查看结果.
/dev/shm/是linux下一个非常有用的目录,因为这个目录不在硬盘上,而是在内存里。因此在linux下,就不需要大费周折去建ramdisk,直接使用/dev/shm/就可达到很好的优化效果。默认系统就会加载/dev/shm,它就是所谓的tmpfs,有人说跟ramdisk(虚拟磁盘),但不一样。象虚拟磁盘一样,tmpfs 可以使用您的 RAM,但它也可以使用您的交换分区来存储。而且传统的虚拟磁盘是个块设备,并需要一个 mkfs 之类的命令才能真正地使用它,tmpfs 是一个文件系统,而不是块设备;您只是安装它,它就可以使用了。
tmpfs有以下优势:
1、动态文件系统的大小,/dev /shm/需要注意的一个是容量问题,在linux下,它默认最大为内存的一半大小,使用df -h命令可以看到。但它并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节;如果它最大为1G,里头放有 100M文件,那剩余的900M仍然可为其它应用程序所使用,但它所占用的100M内存,是绝不会被系统回收重新划分的。
2、tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的。
3、tmpfs 数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。所以有必要做一些脚本做诸如加载,绑定的操作。


二、修改/dev/shm大小
默认的最大一半内存大小在某些场合可能不够用,并且默认的inode数量很低一般都要调高些,这时可以用mount命令来管理它。
#mount -o size=1500M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm
在2G的机器上,将最大容量调到1.5G,并且inode数量调到1000000,这意味着大致可存入最多一百万个小文件。
如果需要永久修改/dev/shm的值,需要修改/etc/fstab
tmpfs /dev/shm tmpfs defaults,size=1.5G 0 0
mount -o remount /dev/shm



1.14 修改资源限制
[root@db1 ~]# vim /etc/security/limits.conf
添加:
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock unlimited
oracle hard memlock unlimited


# - stack - max stack size (KB) 最大栈大小
# - memlock - max locked-in-memory address space (KB) 最大锁定内存地址空间
# - nofile - max number of open file descriptors 最大打开的文件数(以文件描叙符,file descripter计数)
# - nproc - max number of processes 进程的最大数目
# - core - limits the core file size (KB) 限制内核文件的大小。
# - data - max data size (KB) 最大数据大小
# - fsize - maximum filesize (KB) 最大文件大小
# - memlock - max locked-in-memory address space (KB) 最大锁定内存地址空间
# - nofile - max number of open file descriptors 最大打开的文件数(以文件描叙符,file descripter计数)
# - rss - max resident set size (KB) 最大持久设置大小
# - stack - max stack size (KB) 最大栈大小
# - cpu - max CPU time (MIN) 最多CPU占用时间,单位为MIN分钟
# - nproc - max number of processes 进程的最大数目
# - as - address space limit (KB) 地址空间限制
# - maxlogins - max number of logins for this user 此用户允许登录的最大数目
# - maxsyslogins - max number of logins on the system 系统最大同时在线用户数
# - priority - the priority to run user process with 运行用户进程的优先级
# - locks - max number of file locks the user can hold 用户可以持有的文件锁的最大数量

"soft" 和 “hard” 的区别
soft xxx :代表警告的设定,可以超过这个设定值,但是超过后会有告警
hard xxx : 代表严格的设定,不允许超过这个设定的值

如:soft 设为1024,hard设为2048 ,则当你使用数在11024之间时可以随便使用,10242048时会出现警告信息,大于2048时,就会报错。

"nproc" 和 "nofile"的区别
nproc : 是操作系统级别对每个用户创建的进程的限制
nofile :是每个进程可以打开的文件的限制


修改系统的配置
打开/etc/security/limits.conf (部分的系统是在/etc/security/limits.d/90-nproc.conf)

设置限制数量,第一列表示用户,* 表示所有用户

soft nproc :单个用户可用的最大进程数量(超过会警告);
hard nproc:单个用户可用的最大进程数量(超过会报错);
soft nofile :可打开的文件描述符的最大数(超过会警告);
hard nofile :可打开的文件描述符的最大数(超过会报错);

重启后生效
reboot

②/etc/security/limits.d/里面配置会覆盖/etc/security/limits.conf的配置

③只有root用户才有权限修改/etc/security/limits.conf

④如果limits.conf没有做设定,则默认值是1024



# echo "qwert" | passwd --stdin rusky 把echo返回的字符qwert设置为用户rusky的密码
这种方式虽然简单,但是通过history命令可以查到用户的密码,所以不安全





设置Linux内核参数 /etc/sysctl.conf

配置 Linux 内核参数修改后不用重启动更新: /sbin/sysctl -p --马上生效,永久

打开/etc/sysctl.conf 复制如下内容
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144
这里,对每个参数值做个简要的解释和说明。
(1)shmmax:该参数定义了共享内存段的最大尺寸(以字节为单位)。缺省为32M,对于oracle来说,该缺省值太低了,通常将其设置为2G。
(2)shmmni:这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。通常不需要更改。
(3)shmall:该参数表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,通常不需要修改。
(4)sem:该参数表示设置的信号量。
(5)file-max:该参数表示文件句柄的最大数量。文件句柄设置表示在linux系统中可以打开的文件数量。
修改好内核以后,执行下面的命令使新的配置生效。
(6)fs.aio-max-nr = 1048576 --同时可以拥有的的异步IO请求数目,推荐值是:1048576 其实它等于 1024*1024 也就是 1024K 个

1. kernel.shmmax :

是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。设置应该足够大,能在一个共享内存段下容纳下整个的 SGA , 设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。至于导致系统下降的主要原因为在实例启动以及 ServerProcess 创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低 ( 在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响 ) ,但是其他时候都不会有影响。

官方建议值:

32 位 linux 系统:可取最大值为 4GB ( 4294967296bytes ) -1byte ,即 4294967295 。建议值为多于内存的一半,所以如果是 32 为系统,一般可取值为 4294967295 。 32 位系统对 SGA 大小有限制,所以 SGA 肯定可以包含在单个共享内存段中。

64 位 linux 系统:可取的最大值为物理内存值 -1byte ,建议值为多于物理内存的一半,一般取值大于 SGA_MAX_SIZE 即可,可以取物理内存 -1byte 。

内存为 12G 时,该值为 12*1024*1024*1024-1 = 12884901887

内存为 16G 时,该值为 16*1024*1024*1024-1 = 17179869183

内存为 32G 时,该值为 32*1024*1024*1024-1 = 34359738367

内存为 64G 时,该值为 64*1024*1024*1024-1 = 68719476735

内存为 128G 时,该值为 128*1024*1024*1024-1 = 137438953471

2. kernel.shmall :

该参数控制可以使用的共享内存的总页数。 Linux 共享内存页大小为 4KB, 共享内存段的大小都是共享内存页大小的整数倍。

一个共享内存段的最大大小是 16G ,那么需要共享内存页数是 16GB/4KB==4194304 (页),

当内存为 12G 时, kernel.shmall = 3145728

当内存为 16G 时, kernel.shmall = 4194304

当内次为 32G 时, kernel.shmall = 8388608

当内存为 64G 时, kernel.shmall = 16777216

当内存为 128G 时, kernel.shmall = 33554432

#at
kernel.shmmax = 539967537152
#at
kernel.shmall = 131828012


vm.dirty_background_ratio:这个参数指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如5%)就会触发pdflush/flush/kdmflush等后台回写进程运行,将一定缓存的脏页异步地刷入磁盘;

vm.dirty_ratio:而这个参数则指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如10%),系统不得不开始处理缓存脏页(因为此时脏页数量已经比较多,为了避免数据丢失需要将一定脏页刷入磁盘);在此过程中很多应用进程可能会因为系统转而处理文件IO而阻塞。


vm.dirty_expire_centisecs = 500
当Linux中脏页的时间到达dirty_expire_centisecs,无论脏页的数量多少,必须立即写回。通过在后台启动进程,进行脏页写回。
看我手机上目前是200分秒,2秒
vm.dirty_writeback_centisecs = 100
指定多长时间 pdflush/flush/kdmflush 这些进程会唤醒一次,然后检查是否有缓存需要清理。

net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2



rp_filter (Reverse Path Filtering)参数定义了网卡对接收到的数据包进行反向路由验证的规则。他有三个值,0、1、2,具体含意如下:

0:关闭反向路由校验
1:开启严格的反向路由校验。对每个进来的数据包,校验其反向路由是否是最佳路由。如果反向路由不是最佳路由,则直接丢弃该数据包。
2:开启松散的反向路由校验。对每个进来的数据包,校验其源地址是否可达,即反向路由是否能通(通过任意网口),如果反向路径不通,则直接丢弃该数据包。



vm.swappiness
vm.swappiness的默认值为60,它表示激活交换之前可用内存的百分比。值越低,使用的交换越少,并且物理内存中保留的内存页越多。


60的值是一个折衷方案,非常适合现代台式机系统。建议将较小的值用于服务器系统。正如Red Hat Performance Tuning手册指出的那样[8],对于数据库工作负载,建议使用较小的swappiness值。例如,对于Oracle数据库,Red Hat建议将swappiness的值设置为10。相反,对于MariaDB数据库,建议将swappiness的值设置为1 [9]。

更改值直接影响Linux系统的性能。定义了这些值:

* 0:禁用交换
* 1:不完全禁用交换的最小数量
* 10:当系统中有足够内存时为提高性能而推荐的值
* 100:主动交换

如上所示,cat命令有助于读取该值。同样,sysctl命令为您提供相同的结果:

#sysctl vm.swappiness
vm.swappiness = 60

请记住,sysctl命令仅对管理用户可用。




十四、 修改资源限制
[root@db1 ~]# vim /etc/security/limits.conf
添加:
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock unlimited
oracle hard memlock unlimited



十五、 修改/etc/pam.d/login文件
[root@db1 ~]# vim /etc/pam.d/login
添加:
session required pam_limits.so



十六、 修改/etc/profile文件
[root@db1 ~]# vim /etc/profile
添加:
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

要使/etc/security/limits.conf 文件配置生效,必须要确保 PAM验证模块pam_limits.so
文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:
session required /lib/security/pam_limits.so

64位地址是:/lib64/security/pam_limits.so 否则本地即使输入正确密码也无法登陆。
参考网址
https://www.cnblogs.com/hftian/p/6944133.html

PAM的 验证模块,存放位置在/lib/security,如pam_limits.so、pam_group.so等

PAM验证模块的配置文件,存放位置
/etc/security中,如pam_limits.so验证模块对应的配置文件limits.conf,pam_group.so验证模块对应的配置文件group.conf。

PAM验证模块和应用程序的对应关系,存放位置/etc/pam.d文件夹。通过修改此文件夹下的配置文件,可以为应用选定具体的验证模块











mknod
我们的linux操作系统跟外部设备(如磁盘、光盘等)的通信都是通过设备文件进行的,应用程序可以打开、关闭、读写这些设备文件,从而对设备进行读写,这种操作就像读写普通的文件一样easy。linux为不同种类的设备文件提供了相同的接口,比如read(),write(),open(),close()。
所以在系统与设备通信之前,系统首先要建立一个设备文件,这个设备文件存放在/dev目录下。其实系统默认情况下就已经生成了很多设备文件,但有时候我们需要自己手动新建一些设备文件,这个时候就会用到像mkdir, mknod这样的命令。
mknod 的标准形式为: mknod DEVNAME {b | c} MAJOR MINOR
1,DEVNAME是要创建的设备文件名,如果想将设备文件放在一个特定的文件夹下,就需要先用mkdir在dev目录下新建一个目录;如/dev/flash:
2, b和c 分别表示块设备和字符设备:
b表示系统从块设备中读取数据的时候,直接从内存的buffer中读取数据,而不经过磁盘;
c表示字符设备文件与设备传送数据的时候是以字符的形式传送,一次传送一个字符,比如打印机、终端都是以字符的形式传送数据;
3,MAJOR和MINOR分别表示主设备号和次设备号:
为了管理设备,系统为每个设备分配一个编号,一个设备号由主设备号和次设备号组成。主设备号标示某一种类的设备,次设备号用来区分同一类型的设备。linux操作系统中为设备文件编号分配了32位无符号整数,其中前12位是主设备号,后20位为次设备号,所以在向系统申请设备文件时主设备号不好超过4095,次设备号不好超过2^20 -1。

最后修改时间:2022-09-13 10:55:22
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论