深夜排查 KVM 码率问题

现象

远程观看 OneKVM(NanoKVM Pro 刷的 OneKVM OS)时:

  • 码率上不去,卡在 300 kbps 左右,编码到收帧延迟明显
  • 日志持续刷
1
WARN failed resending nacked packet: io error: io error: Message too large (os error 90)
  • 局域网直连、以及走 IPv6 直连都正常,只有经 WireGuard 隧道回连时坏
  • 有时看着"重启下服务就好了",其实是 ICE 重新协商后换到了另一条路径(见下)

原因

OneKVM 按本机网卡的 MTU 打包,不做路径 PMTU 发现:

1
WebRTC ICE path selected ... interface="eth0" interface_mtu=1500 rtp_mtu=1444

rtp_mtu = interface_mtu - 56,所以发出的 IP 包正好 1500 字节。而隧道那条路的真实 MTU 只有 ~1400,于是:

  1. 超尺寸的 UDP 包发出去,QUIC 置了 DF(协议要求,靠 ICMP 拿 PMTU),路由器没有分片权,只能整包丢弃
  2. 丢弃触发 frag-needed 回程,内核学到更小的 pmtu,之后同尺寸的包在本地就被直接拒发(EMSGSIZE)
  3. 重传风暴 → 拥塞控制崩溃 → 码率被压到 300 kbps

顺带一提:网页用 https://192.168.233.15/(IPv4)打开,不代表媒体流也走 IPv4。ICE 选路是独立的,日志里选中的是:

1
2
(local) udp host 2408:8207:c3b:5f60:1852:f6ff:fe7d:867a:60252
<-> (remote) udp srflx 2001:da8:215:230b::83c8:58461

这条 IPv6 路径绕开了隧道,MTU 1500,所以一切正常;选中 IPv4 那条就进隧道、必炸。这也是"有时候好像又好了"的原因。

定位

在 kvm 上用二分法量路径 MTU,逐步加大小,回复消失的位置就是上限:

1
2
3
4
for s in 1400 1420 1440 1456 1472; do
printf "%s: " $s
ping -c 1 -W 2 -s $s 192.168.235.4 | grep -c "bytes from"
done

再看内核学到的 pmtu:

1
2
ip route get 192.168.235.4
# cache expires 599sec mtu 1412

解决

把 kvm 的 eth0 MTU 降到路径 MTU 以内,OneKVM 下次建会话时就会按新值打包(interface_mtu 跟着变):

1
ip link set eth0 mtu 1412

1412 是实测的路径上限,正好卡满、零余量;1400 也是实测可用,留 12 字节余量,路径 MTU 哪天降一点也不会复发,建议用 1400。

持久化。/run/systemd/network/20-onekvm.network 每次开机由 onekvm-network-config-prepare 重新生成,用 drop-in 叠加在上面:

1
2
mkdir -p /etc/systemd/network/20-onekvm.network.d
printf '[Link]\nMTUBytes=1400\n' > /etc/systemd/network/20-onekvm.network.d/10-mtu.conf

改完要重建会话才生效(已有会话仍按老 MTU 打包):

1
systemctl restart onekvm

效果:EMSGSIZE 归零,IPv4 路径码率从 300 kbps 回到 10+ Mbps。

试过但没用的

  • 调 MikroTik 的 WireGuard 接口 MTU:DF 的包路由器没有分片权,只能整包收或整包丢,隧道 MTU 必须 ≥ kvm 发的包大小才有意义。而且客户端那端用的是 WireGuard 图形客户端,隧道 MTU 写死 1420,配置文件里的 MTU = 字段只有 wg-quick 才认
  • MikroTik 的 clamp-to-pmtu:只钳 TCP 握手里的 MSS,对 UDP 报文不生效,实测无效
  • 清 kvm 的 pmtu 缓存:30 秒内就被重新填上

后续

已联系 OneKVM 作者,作者表示后续会加入 UDP MTU 探测,届时应该不需要再手动降 MTU。

NanoKVM Pro Desk(固件 1.2.15)小屏(320×172,SPI 接 JD9853)的定时开关屏方案。

需求

  • 23:00 关屏
  • 8:00 开屏显示时钟
  • cron 触发,每天自动跑

限制

  • /api/vm/lcd/screen-off 接口在 1.2.15 不可用(GitHub commit da60f0ce feat: support scheduled screen off 于 2026-07-31 提交到 main 分支,晚于 1.2.15 release(2026-06-12),且截至 2026-09 没有新 release 包含此功能)
  • 只能通过修改 /etc/kvm/kvm_ui.toml + kill -HUP 让 kvm_ui 重启加载新配置

最终方案

/opt/scripts/screen-off.sh(23:00):

1
2
3
4
5
6
#!/bin/bash
set -e

sed -i "s/^autoclock = .*/autoclock = 'off'/" /etc/kvm/kvm_ui.toml
sed -i "s/^sleep = .*/sleep = 5/" /etc/kvm/kvm_ui.toml
kill -HUP $(pgrep kvm_ui) 2>/dev/null || true

/opt/scripts/screen-on.sh(08:00):

1
2
3
4
5
6
7
8
9
#!/bin/bash
set -e

sed -i "s/^autoclock = .*/autoclock = 'clock_widget'/" /etc/kvm/kvm_ui.toml
sed -i "s/^sleep = .*/sleep = 0/" /etc/kvm/kvm_ui.toml
kill -HUP $(pgrep kvm_ui) 2>/dev/null || true

sleep 3
echo 0 > /sys/class/backlight/backlight/bl_power

cron:

1
2
0 23 * * * /opt/scripts/screen-off.sh
0 8 * * * /opt/scripts/screen-on.sh

关键点

  • autoclock 三个值:
    • clock_widget → panel 里 auto clock=on, auto sleep=off
    • none → auto clock=off, auto sleep=off
    • off → auto clock=off, auto sleep=on
  • sleep 是 idle 超时(秒),0 永不超时
  • kvm_ui 重启时会自动设 bl_power=1(dim),脚本里手动 echo 0 > .../bl_power 复位
  • HUP 让 kvm_ui 重启,kvmcomm supervisor 拉起新进程读新 toml

mise use php 报错

详细中含有未能处理 https 啥啥啥

原因为 mise 使用的 asdf-php 中的 openssl 依赖 [email protected] 已被 brew 弃用

可手动修改文件

~/.local/share/mise/plugins/php/bin/install

其中的两处 [email protected] 改为 openssl@3 即可

网上很多资料感觉有点过时了,本文记录一下在 OpenWrt 上配置 802.1X 无线用户认证的过程。

安装必要的软件包

1
2
3
4
5
opkg update
opkg remove wpad-mini # Or wpad-basic
opkg install wpad-openssl

reboot # 建议重启

网上很多资料说要安装的是 wpad,但实际用下来 wpad 在连接有证书的 802.1X 无线时会 AUTH_FAILED。(甚至可能 segfault上游 Radius 服务器!)

所以建议安装:

  • wpad-supplicant-openssl:Station mode only
  • wpad-openssl:Both Station and AP mode
  • wpa-supplicant-wolfssl: like wpad-supplicant-openssl but uses wolfSSL instead of OpenSSL
  • wpad-wolfssl: like wpad-openssl but uses wolfSSL instead of OpenSSL

配置无线网络

在 LuCI 里配也行,直接编辑 /etc/config/wireless 文件也行。

一个典型的配置如下:

1
2
3
4
5
6
7
8
9
10
config wifi-iface 'wifinet0'
option device 'radio0'
option mode 'sta'
option network 'wwan wwan6'
option ssid '[SSID]'
option encryption 'wpa2'
option eap_type 'peap'
option auth 'EAP-GTC'
option identity '[your-username]'
option password '[your-password]'

连接时可通过 logread -f 查看日志。

能看到证书信息一般就说明 ssl 支持正常。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Tue Jul  8 09:49:38 2025 daemon.notice wpa_supplicant[1699]: phy0-sta0: CTRL-EVENT-REGDOM-CHANGE init=DRIVER type=COUNTRY alpha2=CN
Tue Jul 8 09:49:38 2025 daemon.notice netifd: Wireless device 'radio0' is now up
Tue Jul 8 09:49:41 2025 daemon.notice wpa_supplicant[1699]: phy0-sta0: Trying to associate with 94:b4:0f:99:e4:f0 (SSID='wrd-dot1x' freq=5765 MHz)
Tue Jul 8 09:49:41 2025 daemon.notice wpa_supplicant[1699]: phy0-sta0: CTRL-EVENT-STARTED-CHANNEL-SWITCH freq=5765 ht_enabled=1 ch_offset=-1 ch_width=80 MHz cf1=5775 cf2=0
Tue Jul 8 09:49:41 2025 daemon.notice netifd: Network device 'phy0-sta0' link is up
Tue Jul 8 09:49:41 2025 daemon.notice netifd: Interface 'wwan' has link connectivity
Tue Jul 8 09:49:41 2025 daemon.notice netifd: Interface 'wwan' is setting up now
Tue Jul 8 09:49:41 2025 daemon.notice wpa_supplicant[1699]: phy0-sta0: Associated with 94:b4:0f:99:e4:f0
Tue Jul 8 09:49:41 2025 daemon.notice wpa_supplicant[1699]: phy0-sta0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
Tue Jul 8 09:49:41 2025 daemon.notice wpa_supplicant[1699]: phy0-sta0: CTRL-EVENT-EAP-STARTED EAP authentication started
Tue Jul 8 09:49:41 2025 daemon.notice wpa_supplicant[1699]: phy0-sta0: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=25
Tue Jul 8 09:49:41 2025 daemon.notice wpa_supplicant[1699]: tls_connection_set_params: Clearing pending SSL error: error:12800067:DSO support routines::could not load the shared library
Tue Jul 8 09:49:41 2025 daemon.notice wpa_supplicant[1699]: tls_connection_set_params: Clearing pending SSL error: error:12800067:DSO support routines::could not load the shared library
Tue Jul 8 09:49:41 2025 daemon.notice wpa_supplicant[1699]: tls_connection_set_params: Clearing pending SSL error: error:07880025:common libcrypto routines::reason(524325)
Tue Jul 8 09:49:41 2025 daemon.notice wpa_supplicant[1699]: phy0-sta0: CTRL-EVENT-EAP-METHOD EAP vendor 0 method 25 (PEAP) selected
Tue Jul 8 09:49:41 2025 daemon.notice netifd: wwan (7582): udhcpc: started, v1.36.1
Tue Jul 8 09:49:41 2025 daemon.notice wpa_supplicant[1699]: phy0-sta0: CTRL-EVENT-EAP-PEER-CERT depth=1 subject='/C=CN/ST=Radius/L=Somewhere/O=Example Inc./[email protected]/CN=Example Certificate Authority' hash=1398d42eabfb9de5337f82af5374ef11cac931bdf7213609836eab674258e4bf
Tue Jul 8 09:49:41 2025 daemon.notice wpa_supplicant[1699]: phy0-sta0: CTRL-EVENT-EAP-PEER-CERT depth=1 subject='/C=CN/ST=Radius/L=Somewhere/O=Example Inc./[email protected]/CN=Example Certificate Authority' hash=1398d42eabfb9de5337f82af5374ef11cac931bdf7213609836eab674258e4bf
Tue Jul 8 09:49:42 2025 daemon.notice wpa_supplicant[1699]: phy0-sta0: CTRL-EVENT-EAP-PEER-CERT depth=0 subject='/C=CN/ST=Radius/O=Example Inc./CN=Example Server Certificate/[email protected]' hash=9a346e75e5ec859c6072e55a474a92cf5a88d9d18a88c05ba8da6caf762831b4
Tue Jul 8 09:49:42 2025 daemon.notice netifd: wwan (7582): udhcpc: broadcasting discover
Tue Jul 8 09:49:42 2025 daemon.notice wpa_supplicant[1699]: EAP-TLV: TLV Result - Success - EAP-TLV/Phase2 Completed
Tue Jul 8 09:49:42 2025 daemon.notice wpa_supplicant[1699]: phy0-sta0: CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully
Tue Jul 8 09:49:42 2025 daemon.notice wpa_supplicant[1699]: phy0-sta0: PMKSA-CACHE-ADDED 94:b4:0f:99:e4:f0 0
Tue Jul 8 09:49:42 2025 daemon.notice wpa_supplicant[1699]: phy0-sta0: WPA: Key negotiation completed with 94:b4:0f:99:e4:f0 [PTK=CCMP GTK=CCMP]
Tue Jul 8 09:49:42 2025 daemon.notice wpa_supplicant[1699]: phy0-sta0: CTRL-EVENT-CONNECTED - Connection to 94:b4:0f:99:e4:f0 completed [id=0 id_str=]
Tue Jul 8 09:49:42 2025 kern.info kernel: [ 216.759156] IPv6: ADDRCONF(NETDEV_CHANGE): phy0-sta0: link becomes ready
Tue Jul 8 09:49:43 2025 daemon.info avahi-daemon[2871]: Joining mDNS multicast group on interface phy0-sta0.IPv6 with address fe80::f06a:ddff:fe4d:9b4b.
Tue Jul 8 09:49:43 2025 daemon.info avahi-daemon[2871]: New relevant interface phy0-sta0.IPv6 for mDNS.
Tue Jul 8 09:49:43 2025 daemon.info avahi-daemon[2871]: Registering new address record for fe80::f06a:ddff:fe4d:9b4b on phy0-sta0.*.
Tue Jul 8 09:49:45 2025 daemon.notice netifd: Interface 'wwan' is now up
Tue Jul 8 09:49:45 2025 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto

Using dd on macOS

  • Unmount the disk before writing to it.
  • Use rdiskX instead of diskX for better performance.
  • Use Ctrl+T to show progress in dd.
1
2
3
4
5
6
diskutil list
diskutil unmountDisk /dev/diskX

sudo dd if=/path/to/source.img of=/dev/rdiskX bs=1m
# or
sudo gdd if=/path/to/source.img of=/dev/rdiskX bs=1m status=progress

我去,AI 帮写博客可太方便了,直接把内容写好了,连格式都不用我操心。连这句也是 AI 写的,哈哈哈。

npm install 时报错 UNABLE_TO_GET_ISSUER_CERT_LOCALLY

使用 openssl s_client -brief -connect www.baidu.com:443 验证确实

openssl 使用的是 brew 安装的,brew 会自动创建软链接,但是有时候会出现软链接失效的情况,导致无法验证证书

通过 brew doctor 可以看到提示

1
2
Warning: Broken symlinks were found. Remove them with `brew cleanup`:
/opt/homebrew/etc/openssl@3/cert.pem

cert.pem 指向的是 ca-certificates 包中的证书,但是 ca-certificates 包也不完整,因为某种原因 cert.pem 文件丢失了

尝试重新安装 openssl 和 ca-certificates, 但是 reinstall 不行,需要 reinstall --force

brew doctor 验证 Your system is ready to brew.

再次使用 openssl s_client -brief -connect www.baidu.com:443 验证正常

npm install 也正常了

在 .tsx 文件中,coc.nvim 默认不会补全 html 标签,需要手动配置。

标签的补全是通过 coc-snippets 插件实现的

有两种方式

  1. snippets.addFiletypes

手动 :CocCommand snippets.addFiletypes html

或写入 vimrc 自动执行

1
autocmd FileType typescriptreact CocCommand snippets.addFiletypes html
  1. snippets.extends [推荐]

使用 snippets.extends 可以在某种文件类型的基础上扩展另一种文件类型的补全

在 coc-config.json 中添加

1
2
3
4
5
"snippets.extends": {
"javascriptreact": ["javascript"],
"typescriptreact": ["javascript", "javascript-jasmine-arrow", "html"],
"typescript": ["javascript", "javascript-jasmine-arrow"]
}

从 PHP5 入了这个深坑以来已经有十多年,记录一些感觉有点东西的相关

写文的 Dec 2024,PHP 在 TIOBE 上的排行已经下降到 12 位,Dec 2023 时为 7

同时,Rust 的排行为 14 位,Dec 2023 时为 18

不过个人觉得 PHP 在 PHP8 这一代的进步是显著的,即有 JIT,也有注解,Match 表达式等新特性的加入

PHP 依旧充满活力!

Laravel

Laravel

Laravel 是优雅的 PHP Web 开发框架,优雅!太优雅了!

生态丰富,历史悠久,大多数情况下用它总没错!

YAF, Phalcon

早期吐槽 PHP 的主要问题之一就是性能,于是催生了以 C 语言写扩展的方法去做框架

Yet Another Framework

YAF 的取名还是 Old fashioned 的 Yet Another XXX

Phalcon

比 YAF 提供了更多的功能

还维护了一个 Zephir language,用一个类似 PHP 语言的方式去写 PHP 扩展

Phalcon 的后期也是 Zephir/C 都有

Swoole 与 Open Swoole, Swow

Swoole

Swoole 也是 C 扩展,基于异步事件驱动,为 PHP 引入了协程的概念,类似 Golang 的 goroutine

不过 Swoole 的团队真是一言难尽,搞出了下面这个操作后,逐步分离出来了 Open Swoole

Swoole’s admin interface hot-loads code from a third-party server ? · Issue #4434 · swoole/swoole-src
https://github.com/swoole/swoole-src/issues/4434

Open Swoole

Swow

致力于使用最小 C 核心及多数 PHP 代码以支持 PHP 高性能网络编程

类似 Swoole

Hyperf, LaravelS

Hyperf

高性能、高灵活性的渐进式 PHP 协程框架,内置协程服务器及大量常用的组件

可基于 Swoole 或 Swow, 常驻内存,参考了 Laravel 的优雅

LaravelS

把 Laravel 架在 Swoole 上,以常驻内存的方式来加速其运行

workerman, webman

workerman

纯 PHP 开发的开源高性能的 PHP 应用容器

靠多 Worker 进程,Epoll + 非阻塞 I/O

webman 是基于 workerman 的 HTTP 服务框架

追求性能的话,现在首推这两

AMPHP

Fibers

PHP 在 8.1 加入了 Fibers,中文译为 纤程

纤,比线更细!

Fiber 主要用于为异步 I/O 实现协程,提供了独立栈分配、函数调用的暂停和恢复功能

就出自 AMPHP ext-fiber

投票结果以 50 对 14 通过

RFC

可以看到,PHP 创始人 Rasmus Lerdorf 和 Swoole 创始人韩天峰@matyhtf 均投了反对票

ReactPHP

ReactPHP

相较于 Swoole, Swow 等以 C 扩展的形式实现非阻塞 I/O,ReactPHP 是纯 PHP 的

  • Supports latest version of PHP 8+ and PHP 7+ for best performance and support.
  • Still supports legacy PHP 5.3+ and HHVM for maximum compatibility.

从它对 PHP 版本的支持中可以看到,也是老牌且相当不容易了

fiber 之后,ReactPHP 也加入了对其的支持,提供了一个 Async Utilities

async

PSL, Revolt

PHP Standard Library

Revolt

都为了非阻塞

box

box

把项目方便的打包成 PHAR

static-php-cli

SPC

构建独立的 PHP 二进制文件包括 cli, fpm, micro 三种模式

其中 micro 又可与单文件或 phar 结合,把 PHP 项目也打包为一个文件

Cool!

ext-php-rs

ext-php-rs

Rust Crate

用 Rust 写 PHP 扩展的库

甚至还提供 Async futures,但依赖 PHP fibers, php-tokio 和 PHP Revolt event loop

与 AMPHP, PSL, ReactPHP 或其它 Base on Revolt 的异步 PHP 库兼容

Cool!

vmware 的虚机磁盘扩容,从 vSphere 到 OS 层面

超详细

vSphere Client

不用关机,直接编辑虚拟机硬件,把磁盘大小改大,如 100G => 120G

确定后,等进度条,一般很快就完成

vmware 层面就搞定了

OS

OS 层面可能并未同步更新

可使用echo 1 > /sys/block/sda/device/rescan触发一下

1
2
3
4
5
6
7
8
9
10
11
12
13
fdisk -l

Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: Virtual disk

echo 1 > /sys/block/sda/device/rescan

fdisk -l

GPT PMBR size mismatch (209715199 != 251658239) will be corrected by write.
The backup GPT table is not on the end of the device.
Disk /dev/sda: 120 GiB, 128849018880 bytes, 251658240 sectors
Disk model: Virtual disk

由于是 AlmaLinux 9,这里我们并不使用 fdisk 进行分区调整,而是使用 parted

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
parted -l

Warning: Not all of the space available to /dev/sda appears to be used, you can
fix the GPT to use all of the space (an extra 41943040 blocks) or continue with
the current setting?
Fix/Ignore? fix
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 129GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 1049kB 630MB 629MB fat32 EFI System Partition boot, esp
2 630MB 1704MB 1074MB xfs
3 1704MB 107GB 106GB lvm


parted /dev/sda resizepart 3 100%

parted -l

Model: VMware Virtual disk (scsi)
Disk /dev/sda: 129GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 1049kB 630MB 629MB fat32 EFI System Partition boot, esp
2 630MB 1704MB 1074MB xfs
3 1704MB 129GB 127GB lvm

此时的 pv 还未更新,使用pvresize生效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pvdisplay

--- Physical volume ---
PV Name /dev/sda3
VG Name almalinux_211
PV Size 98.41 GiB / not usable 2.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 25193
Free PE 0
Allocated PE 25193
PV UUID 77PAja-dDP3-K2Ii-5jgw-AOFW-KnF5-ib8qg2

pvresize /dev/sda3

pvdisplay
--- Physical volume ---
PV Name /dev/sda3
VG Name almalinux_211
PV Size 118.41 GiB / not usable 1.98 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 30313
Free PE 5120
Allocated PE 25193
PV UUID 77PAja-dDP3-K2Ii-5jgw-AOFW-KnF5-ib8qg2

接着lvextend你要扩容的 lv,通过df查看挂载点对应的 lv,比如这里我们扩容 root

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
df -hT

Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 7.7G 0 7.7G 0% /dev/shm
tmpfs tmpfs 3.1G 65M 3.1G 3% /run
/dev/mapper/almalinux_211-root xfs 61G 56G 4.9G 93% /
/dev/sda2 xfs 960M 324M 637M 34% /boot
/dev/sda1 vfat 599M 7.1M 592M 2% /boot/efi
/dev/mapper/almalinux_211-home xfs 30G 4.5G 26G 16% /home

lvextend -l +100%FREE /dev/almalinux_211/root

Size of logical volume almalinux_211/root changed from <60.84 GiB (15574 extents) to <80.84 GiB (20694 extents).
Logical volume almalinux_211/root successfully resized.

这里直接再df查看会发现 root 并未扩大,需要最 grow 一下生效,这里是 xfs 所以使用 xfs_growfs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
xfs_growfs /dev/almalinux_211/root

meta-data=/dev/mapper/almalinux_211-root isize=512 agcount=4, agsize=3986944 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=15947776, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 15947776 to 21190656

df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 7.7G 0 7.7G 0% /dev/shm
tmpfs 3.1G 65M 3.1G 3% /run
/dev/mapper/almalinux_211-root 81G 56G 26G 69% /
/dev/sda2 960M 324M 637M 34% /boot
/dev/sda1 599M 7.1M 592M 2% /boot/efi
/dev/mapper/almalinux_211-home 30G 4.5G 26G 16% /home

打完收工

0%