[步骤] Linux Kdump 的开启 (用于收集内核崩溃时的信息) (SLES 版)

正文:

步骤一:确保 kdump 软件包已安装

# rpm -qa | grep kdump || zypper install kdump

(注意:此方法只有 openSUSE & SLES 可以使用)

步骤二:给 Kdump 预留内存

2.1 计算给 Kdump 预留的内存大小

2.1.1 使用 kdumptool calibrate 命令获取推荐的 Kdump 预留大小
# kdumptool calibrate
config option KDUMP_COPY_KERNEL is deprecated, ignoring
Total: 1023
Low: 0
High: 342
MinLow: 0
MaxLow: 325
MinHigh: 0
MaxHigh: 325

(补充:这里的 Low 值为 0,High 值为 342)

(注意:这里数字的单位是兆 “M”)

2.1.2 查看 /proc/scsi/scsi 文件获取多路径设备数
# cat /proc/scsi/scsi | grep Lun | wc -l
2

(补充:这里显示的多路径设备数是 2)

(注意:这里需要排除掉多路径的设备,因为系统会忽略这些设备)

2.1.3 计算给 Kdump 预留的内存大小
2.1.3.1 计算给 Kdump 预留的 Low 内存大小

1) 当 kdumptool calibrate 命令执行的结果中 Low 值小于或等于 72M 时,Low 值应该设置为 72M
2) 当 kdumptool calibrate 命令执行的结果中 Low 值大于 72M 时,Low 应该设置为和kdumptool calibrate 命令执行的结果中的 Low 值一样

例如步骤 2.1.1 中的 Low 值为 0,所以这里的 Low 内存值为 72M

(补充:Low 值表示 DMA 32 区域中的内存预留值,是仅支持 32 位设备所需要的内存量,即 4GB 以内的全部内存。其值的设置应该注意以下两点)

(注意:在没有任何仅支持 32 为设备的情况下,为 Low 指指定 72M 的默认分配大小可确保一切正常,但 NUMA 系统似乎需要更多的 Low 内存。所以建议使用 numa=off 引导 Kdump 内核以去报常规内核分配不使用 Low 内存)

2.1.3.2 计算给 Kdump 预留的 High 内存大小
SIZE_HIGH = RECOMMENDATION + (LUNs / 2)

例如步骤 2.1.1 中的 High 值为 342,步骤 2.1.2 中获取到的数字是 2,所以这里的 High 内存值为 343

2.1.3.3 计算给 Kdump 预留的内存大小

根据步骤 2.1.3.1 和步骤 2.1.3.2 可计算出这次需要给 KDUMP 预留的内存大小如下:

crashkernel=343M,high crashkernel=72M,low

2.2 给 Kdump 预留内存

2.2.1 在 /etc/default/grub 配置文件里修改 crashkernel 参数
# vim /etc/default/grub

在这一行里:

.....
GRUB_CMDLINE_LINUX_DEFAULT="......"
.....

确保有:

.....
GRUB_CMDLINE_LINUX="crashkernel=343M,high crashkernel=72M,low......"
.....

并确保此文件其他地方没有和 crashkernel= 相关的参数

(补充:这里的 crashkernel=343M,high crashkernel=72M,low 是由步骤 2.1 计算得到的)

2.2.2 让刚刚修改的内核参数生效
2.2.2.1 生成新的 /boot/grub2/grub.cfg 文件
# grub2-mkconfig -o /boot/grub2/grub.cfg
2.2.2.2 重启系统
# reboot

步骤三:让 Kdump 加载刚刚设置的预留的内存大小

# systemctl enable kdump.service ; systemctl restart kdump.service

步骤四:测试 Kdump

4.1 手动触发内存奔溃

# echo c > /proc/sysrq-trigger

4.2 查看系统奔溃的记录

# last | grep crash

4.3 系统重启后查看 Kdump 有没有在系统奔溃时创建系统的日志

# ls /var/crash

(注意:如果 Kdump 没有生成的话,可以适当增加 crashkernel=,high 的值,之后再执行相印的步骤,之后再测试)

参考文献:

https://documentation.suse.com/sles/15-SP7/html/SLES-all/cha-tuning-kexec.html#sec-tuning-kexec-crashkernel
https://documentation.suse.com/zh-cn/sles/15-SP7/html/SLES-all/cha-tuning-kexec.html#sec-tuning-kexec-crashkernel

[步骤] Linux SNMP 账号的管理 (SNMP v3 版) (RHEL 版)

步骤一:创建 SNMP 账号

1.1 关闭 snmpd 服务

# systemctl stop snmpd

1.2 安装 net-snmp-utils

# yum install net-snmp-utils

1.3 创建 SNMP 账号

# net-snmp-config --create-snmpv3-user -A '12345678' -X '12345678' -a SHA-256 -x DES snmpuser


补充:这里以测试
1) 验证方式是 SHA-256
2) 名为 snmpuser 的账号
3) 密码是 12345678
为例

1.4 开启 snmpd 服务

# systemctl start start

步骤二:测试 SNMP 账号

# snmpwalk -v3 -u snmpuser -l authNoPriv -a SHA-256 -x AES -A 12345678 -X


补充:这里以测试
1) 验证方式是 SHA-256
2) 名为 snmpuser 的账号
3) 密码是 12345678
为例

步骤三:删除 SNMP 账号

3.1 方法一:完全通过编辑文件删除 SNMP 账号

3.1.1 关闭 snmpd 服务
# systemctl stop snmpd 
3.1.2 删除 /etc/snmp/snmpd.conf 文件里的账号信息
# vi /etc/snmp/snmpd.conf

删除以下行:

......
rwuser snmpuser

(补充:这里以删除名为 snmpuser 账号的信息为例)

3.1.3 删除 /var/lib/net-snmp/snmpd.conf 文件里的账号信息
# vi /var/lib/net-snmp/snmpd.conf

删除以下行:

......
usmUser 1 3 0x80001g8720f19f5860eb3a024200000000 "snmpuser" "snmpuser" NULL .1.3.6.1.6.3.10.1.1.5 0xc8829b35b230safa325225ad2b98c36e40db704089229956d4b1634463a14be .1.3.6.1.6.3.10.1.2.4 0xc1224b24b5402cag322555alk2b49e36o ""

(补充:这里以删除名为 snmpuser 账号的信息为例)

3.1.4 开启 snmpd 服务
# systemctl start snmpd

3.2 方法二:通过命令和编辑文件的方式删除 SNMP 账号

3.2.1 使用 snmpusm 命令删除 SNMP 账号
# snmpusm -v 3 -u snmpuser -l authNoPriv -a SHA-256 -x AES -A 12345678 -X 12345678 localhost delete snmpuser


补充:这里以删除
1) 验证方式是 SHA-256
2) 名为 snmpuser 的账号
3) 密码是 12345678
为例

3.2.2 关闭 snmpd 服务
# systemctl stop snmpd
3.2.3 删除 /var/lib/net-snmp/snmpd.conf 文件里的账号信息
# vi /var/lib/net-snmp/snmpd.conf

删除以下行:

......
usmUser 1 3 0x80001g8720f19f5860eb3a024200000000 "snmpuser" "snmpuser" NULL .1.3.6.1.6.3.10.1.1.5 0xc8829b35b230safa325225ad2b98c36e40db704089229956d4b1634463a14be .1.3.6.1.6.3.10.1.2.4 0xc1224b24b5402cag322555alk2b49e36o ""

(补充:这里以删除名为 snmpuser 账号的信息为例)

3.2.4 开启 snmpd 服务
# systemctl start snmpd

[步骤] bond 网卡捆绑组的添加 (CentOS Linux & RHEL 版) (nmtui 版)

步骤一:使用 nmtui 命令进入 nmtui 界面

# nmtui

步骤二:进入创建 bond 的界面

Edit a connection --> <Add> --> Bond

步骤三:在创建 bond 的界面里填写 bond 界面里的资料

3.1 填写 Profile name 后面的资料

Profile name

给 bond 设置 1 个身份名称 (必须设置)

(补充:建议是 bond0)

3.2 填写 Device 后面的资料

Device

给 bond 设置 1 个设备名称 (必须设置)

(补充:建议是 bond0)

3.3 填写 Mode: 后面的资料

Mode:

3.4 填写 Active Backup 后面的资料

Active Backup

(补充:强烈建议改成 Active Backup)

3.5 IPv4 CONFIGURATION: 后面的资料

IPv4 CONFIGURATION:
<Manual> 

(补充:需要修改成 Manual 后才能手动配置 IP 地址)

3.6 配置 IP 地址、子网掩码、网关

(步骤略)

步骤四:在创建 bond 的界面里填写添加 bond 子网卡

4.1 进入添加 bond 子网卡的界面

BOND Slaves --> <ADD> --> Ethernet

4.2 在添加 bond 子网卡的界面里填写 bond 界面里的资料

Profile name

给 bond 子网卡设置 1 个设备名称 (必须设置)

(补充:建议是 bond0-slave)

Device

给 bond 子网卡选择 1 个设备名称 (必须设置)

[排错] 解决虚拟机使用命令 nmcli connection up enp1s0 时报错 “Error: Connection activation failed: No suitable device found for this connection (device eth0 not available because profile is not compatible with device (mismatching interface name)). ” (给网卡配置的静态 IP 地址无法生效)

报错代码

# nmcli connection up enp1s0 
Error: Connection activation failed: No suitable device found for this connection (device eth0 not available because profile is not compatible with device (mismatching interface name)).

解决方法

步骤一:在虚拟机管理器上刷新虚拟机网卡的 MAC 地址或者删除原网卡添加一个新网卡

(步骤略)

步骤二:删除 NetworkManager 上所有的网卡配置

2.1 显示目前 NetworkManager 所有的网卡配置

# nmcli connection show

2.2 删除 NetworkManager 上所有的网卡配置

# nmcli connection delete enp1s0
# nmcli connection delete Wired\ connection\ 1 

(补充:这里以删除网卡配置 enp1s0 和 Wired\ connection\ 1 为例)

2.3 确保目前 NetworkManager 没有网卡配置

# nmcli connection show

(注意:确保这条命令输入后没有输出结果)

步骤三:添加新的 NetworkManager 网卡配置

3.1 显示目前的网卡硬件

# nmcli device show

(注意:这里需要记住网卡硬件的名称,因为下个步骤需要使用)

3.2 添加新的 NetworkManager 网卡配置

# nmcli connection add con-name eth0 ifname eth0 type ethernet

(补充:这里以给 eth0 网卡添加个名为 eth0 的 NetworkManager 网卡配置为例)

(注意:这里的 ifname 后面的名称,必须和上个步骤输出命令后显示的网卡硬件名称一致)

3.3 让刚刚添加的 NetworkManager 网卡配置生效

# nmcli device connect eth0

(补充:这里以启动 eth0 网卡为例)

(注意:这里的 eth0 是在上个步骤中使用 con-name 参数配置的网卡配置名)

步骤四:给 NetworkManager 网卡配置设置 IP 地址

4.1 给 NetworkManager 网卡配置设置 IP 地址

# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.100.8/24 ipv4.gateway 192.168.100.1 autoconnect yes ipv4.dns 1.1.1.1

(补充:这里以给 eth0 网卡添加静态 IP 地址 192.168.100.8/24,网关 IP 地址 192.168.100.1,DNS 1.1.1.1 并开机自启为例)

(注意:这里的 eth0 是在前面的步骤中使用 con-name 参数配置的网卡配置名)

4.2 让刚刚配置的 IP 地址生效

# nmcli connection up eth0 

(补充:这里以让 eth0 网卡上配置的 IP 地址生效为例)

(注意:这里的 eth0 是在前面的步骤中使用 con-name 参数配置的网卡配置名)