journalctl 日志可通过符号链接+目录挂载+权限适配三步存至非根分区:先挂载目标分区(如/data),创建并设置 /data/journal 的归属与 setgid 权限(2755),再以 root 身份将 /var/log/journal 符号链接至此,最后启用 Storage=persistent 并重启 systemd-journald。

journalctl 日志默认可配置为持久化,但路径固定在 /var/log/journal。若想将日志存到非根分区(比如 /data/journal 或 /mnt/ssd/journal),不能直接修改 journalctl 的存储路径,而是通过符号链接 + 目录挂载 + 权限适配三步实现——核心是让 systemd-journald 仍“认为”它在写 /var/log/journal,实际数据落在其他分区。
创建并挂载非根分区目录
确保目标分区已格式化、挂载且有足够空间(例如挂载到 /data):
- 确认挂载点存在且可用:
df -h /data,应显示该分区容量与使用率 - 创建子目录:
sudo mkdir -p /data/journal - 设置正确归属:
sudo chown root:systemd-journal /data/journal - 设置 setgid 权限(关键):
sudo chmod 2755 /data/journal
替换默认日志目录为符号链接
systemd-journald 启动时会检查 /var/log/journal 是否存在且权限合规。我们用符号链接将其指向非根分区目录:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 先停用 journald:
sudo systemctl stop systemd-journald - 移除原目录(若存在且为空):
sudo rm -rf /var/log/journal - 建立符号链接:
sudo ln -sf /data/journal /var/log/journal - 验证链接:
ls -l /var/log/journal应显示指向/data/journal
启用持久化并重启服务
仅做链接还不够,必须确保 journal 按持久化模式运行:
- 编辑配置:
sudo nano /etc/systemd/journald.conf - 确认以下行已取消注释并设为:
Storage=persistentForwardToSyslog=noForwardToKMsg=no - 保存后重启服务:
sudo systemctl start systemd-journald - 触发日志重载(可选):
sudo systemctl kill --signal=SIGUSR1 systemd-journald
验证是否生效
执行以下命令确认日志真正写入非根分区:
- 查看磁盘用量来源:
journalctl --disk-usage,输出应显示/data/journal路径 - 检查实际日志文件位置:
ls -lh /data/journal/*/system.journal,应有近期生成的二进制文件 - 确认跨重启保留:
journalctl --list-boots | head -n 3,能看到多个 boot ID - 记录测试日志后重启:
logger "test on /data"; sudo reboot,重启后用journalctl -n 5查看是否还在
不复杂但容易忽略:符号链接必须由 root 创建,权限必须含 setgid(2755),且 Storage=persistent 必须显式启用。只要这三点到位,日志就稳稳落在你指定的非根分区里。

















