简短版本:如何在 Fedora 系统上禁用审计消息 (dmesg)?
Fedora 系统不断在 dmesg 中记录“审计:成功”消息 - 以一种极端的方式,dmesg 变得无法使用,因为它被这些消息填满(dmesg | grep -v audit为空)。这些消息完全没有用,因为它们显然想通知用户一些日常内部过程已经成功(在调试某些东西时可能会感兴趣,但在这种情况下它只是噪音)。
甚至命令行界面(切换到与非X TTY当Ctrl+ Alt+ F2)变得不可使用,因为它总是与这些审核消息混乱,这是不可能的读取实际上是由用户运行的命令的输出。例如,输入用户名(登录)后,会喷出一条审核消息(显然是告诉用户某些内容已格式化/打印成功):
审计:类型=1131审计(1446913801.945:10129):pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=fprintd comm="systemd" exe="/usr/lib/systemd/systemd" 主机名 地址=? 终端=?资源=成功'
似乎这些消息中的大多数表示“成功”,但是也有许多审核消息不包含此关键字。运行 Chromium 会触发数百个:
审计:类型=1326审计(1446932349.568:10307):auid=500 uid=500 gid=500 ses=2 pid=1593 comm="chrome" exe="/usr/lib64/chromium/chrome" sig=0 arch=c000003e系统调用=273 兼容=0 ip=0x7f9a1d0a34f4 代码=0x50000
其他消息包括:
审计:类型=1131审计(1446934361.948:10327):pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=NetworkManager-dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" =?地址=? 终端=?资源=成功'
审计:类型=1103 审计(1446926401.821:10253):pid=28148 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:setcred grantors=p am_env,pam_unix"exe acct/="user/usr /crond”主机名=?地址=? 终端=cron res=成功'
通常,大多数最近的审计消息(在撰写本文时)都包含关键字“ NetworkManager ”或“ chrome ”。
如何完全禁用这些消息?
附加点:
关机时经常会显示这样的消息:
"A stop job is running ..." (nfs mount)
Run Code Online (Sandbox Code Playgroud)
这显然即使发生在NFS服务器并没有消失。但即使与 NFS 服务器的连接丢失,systemd 也能有效地防止系统关闭。无法再通过 ssh 进入系统,也无法切换到另一个 tty。点击Ctrl+ Alt+F2确实会切换到带有光标的黑屏,但没有登录提示。用户被迫强制重新启动系统,从而冒着仍然挂载的文件系统上的数据损坏的风险。
那个时候关机过程中如何启用tty控制台登录?
应该可以以 root 身份登录并执行umount -l或执行任何可能需要的操作,以允许系统正常继续关闭过程。
(这个问题不是关于 NFS,它只是一个常见的例子。如果服务器消失了,NFS 挂载实际上会按设计挂起。这个问题是关于这样一个事实,即虽然这个“停止作业”阻止了关闭过程,但它不是可以登录并输入命令来处理这种情况。)
如何将 Debian 8 系统上的 NFS 服务器限制为 NFSv3?
默认情况下,可以使用 vers=3 和 vers=4 挂载共享。
/etc/default/nfs-kernel-server:
# To disable NFSv4 on the server, specify '--no-nfs-version 4' here
#RPCMOUNTDOPTS="--manage-gids"
RPCMOUNTDOPTS="--manage-gids --no-nfs-version 4"
Run Code Online (Sandbox Code Playgroud)
这个选项似乎没有任何效果(rpcinfo 仍然显示 nfs 接受版本 4)。
不幸的是,当硬盘驱动器(通常是虚拟驱动器)很慢时,Linux 会在超时后中止对该驱动器的请求,这可能会导致数据损坏。
上次发生在我身上时,我在存储上运行了 2 个虚拟机(Linux 和 FreeBSD),该存储存在连接问题并且冻结了一个多小时。存储本身很好,没有错误,在修复连接后,虚拟机(显然也被冻结了)似乎又开始工作了。
然而,Linux 虚拟机决定中止请求,导致该系统无法使用(大多数目录上的 ls 卡住了,没有选项的挂载也是如此,许多其他事情不再起作用);重新启动是必要的。这些是错误(dmesg):
...
[86707.916728] Write(10): 2a 00 02 4c 9e 38 00 03 c0 00
[86707.916732] mptscsih: ioc0: task abort: SUCCESS (rv=2002) (sc=ffff880036865500)
[86707.916734] mptscsih: ioc0: attempting task abort! (sc=ffff880036866100)
[86707.916735] sd 2:0:0:0: [sda] CDB:
[86707.916736] Write(10): 2a 00 02 4c a1 f8 00 03 c0 00
[86707.916739] mptscsih: ioc0: task abort: SUCCESS (rv=2002) (sc=ffff880036866100)
[86707.916741] mptscsih: ioc0: attempting task abort! (sc=ffff880036865c80)
[86707.916742] sd 2:0:0:0: [sda] CDB:
[86707.916743] Write(10): 2a 00 …Run Code Online (Sandbox Code Playgroud) Chrome/Chromium 不会加载任何网站,只会显示“噢,啪!出了问题......”页面。一些子进程出现段错误。
当在终端中启动时,它将显示很多这些:
[...错误:platform_thread_posix.cc(126)] pthread_create:资源暂时不可用
当 Chrome 仍在运行时,启动另一个程序有时会触发相同的错误:Resource temporarily unavailable
这是在带有 systemd 229 的 Arch Linux 上,但在 Fedora Linux 上也报告了类似的行为。
是什么导致了这些崩溃?
乍一看,进程限制似乎不是问题:
$ ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 23870
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time …Run Code Online (Sandbox Code Playgroud) 具有 2 500 GB 硬盘的 BTRFS RAID1 阵列,无错误。这是根文件系统,因此每个驱动器上有 3 个分区:1 = /boot (ext4)、2 = / (btrfs)、3 (swap)
/boot 是 ext4,因为如果 /boot 是 btrfs 文件系统(安装了新内核,但 grub 配置未更新),则升级内核并不总是有效。
现在,该镜像已移至较小的驱动器,新驱动器为 120 GB,因此必须调整 btrfs 文件系统的大小。例如,可以使用 GParted 来调整两个 btrfs 分区的大小。调整大小后,可以将带有分区信息的 MBR 从旧的 500 GB 驱动器复制到新的 120 GB 驱动器 ( dd if=/dev/sda of=/dev/sdb bs=512 count=1),以及 btrfs 分区 ( dd if=/dev/sda2 of=/dev/sdb2)。(忽略交换分区,必须将其移动到 120 GB 以内。)
尽管系统启动并且新的 120 GB 驱动器没有问题,但会记录一条错误消息 (dmesg):
BTRFS:无法获取 bytenr 274877906944 的超级缓冲区头
并且擦洗发现“超级”错误(但没有数据错误):
“错误详细信息:超级=1”
此错误是否存在数据损坏的风险?
如何解决这个问题?
由于 274877906944 是 256 GB,旧的 btrfs 分区 …