UJP - 技術情報1

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

Surface Go 2 on Ubuntu Serverでストレージを管理する

Surface Go 2 on Ubuntu Serverでストレージを管理する


概要

更新履歴

  • 2026/05/18 初版

目次

はじめに

  • このドキュメントでは,ログファイルのサイズ制限と,ディスクの空き容量が減った時に警告メールを送信する仕組みを導入する.

現状のストレージ情報を把握する

  • 現在のストレージの状態を確認.
ujpadmin@okachimachi:~$ df -h🆑
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              379M  2.1M  377M   1% /run
efivarfs                           164K   74K   86K  47% /sys/firmware/efi/efivars
/dev/mapper/ubuntu--vg-ubuntu--lv   27G   14G   13G  52% /🈁
tmpfs                              1.9G   12K  1.9G   1% /dev/shm
tmpfs                              5.0M  8.0K  5.0M   1% /run/lock
/dev/mmcblk0p2                     2.0G  300M  1.5G  17% /boot
/dev/mmcblk0p1                     1.1G  6.2M  1.1G   1% /boot/efi
tmpfs                              379M   92K  379M   1% /run/user/1000
ujpadmin@okachimachi:~$
  • 残り13GB程度.
  • 元々Surface Go 2 4GB RAM 64GB eMMCなのでそんなもんでしょう.

systemd-journald のログサイズを調べる

ujpadmin@okachimachi:~$ journalctl --disk-usage🆑
Archived and active journals take up 581.8M in the file system.
ujpadmin@okachimachi:~$
  • 582MBほどある模様.
  • 一部権限不足なのでsudoで確認している.
ujpadmin@okachimachi:~$ cd /var/log/journal/🆑
ujpadmin@okachimachi:/var/log/journal$ ls -la🆑
total 32
drwxr-sr-x+  3 root systemd-journal  4096 May  3 23:39 .
drwxrwxr-x  11 root syslog           4096 May 18 13:09 ..
drwxr-sr-x+  2 root systemd-journal 20480 May 18 13:09 ec697cb9074c4aa6a1c8b9696e863ccc🈁
ujpadmin@okachimachi:/var/log/journal$ cd ec697cb9074c4aa6a1c8b9696e863ccc🆑
ujpadmin@okachimachi:/var/log/journal/ec697cb9074c4aa6a1c8b9696e863ccc
  • ログファイルを確認.
ujpadmin@okachimachi:/var/log/journal/ec697cb9074c4aa6a1c8b9696e863ccc$ ls -lat|head -n 10🆑
total 595808
-rw-r-----+ 1 root systemd-journal 16777216 May 18 15:09 system.journal
-rw-r-----+ 1 root systemd-journal  8388608 May 18 15:05 user-1000.journal
-rw-r-----+ 1 root systemd-journal  8388608 May 18 13:09 user-1000@2029b5e8a9554854860e852af8b6de59-000000000011b6ce-0006520d78dce2e4.journal
drwxr-sr-x+ 2 root systemd-journal    20480 May 18 13:09 .
-rw-r-----+ 1 root systemd-journal  8388608 May 18 13:09 system@5dae244f7363483996e6ab772a1f749a-000000000011f722-0006520fbb78cd8b.journal
-rw-r-----+ 1 root systemd-journal 16777216 May 18 13:09 system@2029b5e8a9554854860e852af8b6de59-000000000011b6cf-0006520d78de5769.journal
-rw-r-----+ 1 root systemd-journal  8388608 May 18 10:27 user-1000@888f6e43bd0a4a5fbd7dfffaffda42be-000000000011a1aa-00065205f4d622c4.journal
-rw-r-----+ 1 root systemd-journal  8388608 May 18 10:27 system@2029b5e8a9554854860e852af8b6de59-000000000011b121-0006520d783a4b0f.journal
-rw-r-----+ 1 root systemd-journal  8388608 May 18 10:27 system@888f6e43bd0a4a5fbd7dfffaffda42be-000000000011a081-00065205e8d9b947.journal
ujpadmin@okachimachi:/var/log/journal/ec697cb9074c4aa6a1c8b9696e863ccc$
  • ここには,次の様なものが保存されている.
    • system.journal(システムログ)
      •  journalctl -u systemd-journald -fで確認可能
      • OSの根幹(システム全体)や、管理者権限(root)で動いているサービスのログ.
        • ネットワーク(NetworkManager)の接続ログ
        • Surface Go 2の温度管理(thermald)の警告やエラー
        • SSHで外部からログインした際の接続記録
        • OSの起動・シャットダウンのプロセス

    • user-1000.journal(ユーザーログ)
      • journalctl --user -fで確認可能
      • UID 1000(一般ユーザー)の権限下で動いているアプリやプロセスのログ.
        • 自動起動設定(.desktop)で立ち上がっている Chromium(ブラウザ)が出したエラーや警告,Webサイトの読み込みエラー
        • LXQt(デスクトップ環境)のシステムが出したエラー
        • ユーザー権限(ujpadminユーザーなど)で定期実行している自作スクリプトの出力結果

journaldのログファイルの保存ルールを設定

  • ログファイルは次のルールで保存されている.
    • デフォルトのローテーションタイミング(条件)
      • システムの総容量制限に達したとき(最優先)
        • ログが保存されているハードディスク(SSD)の総容量の10% 、または上限4GB のどちらか小さい方に達したタイミング。
      • ストレージの空き容量が少なくなったとき
        • SSDの空き容量が残り15% を下回りそうになったタイミング(ログがこれ以上増えるとシステムが危険と判断し、古いものから消していきます)。
      • 個別のログファイルが大きくなったとき
        • 現在書き込んでいる1つのログファイルが約8M〜512MB(設定による最大値の1/8)に達したタイミング。
        • この時、ファイルが「過去ログ」として切り離され(ローテーション)、新しいファイルが作られます。
      • 保存期間を過ぎたとき
        • 設定されていれば、指定日数(例:30日など)が経過したタイミングで古いログが消えます(Ubuntuのデフォルトは期間無制限 )。
  • 今回は200MBか7日間を過ぎた時と設定する.
ujpadmin@okachimachi:~$ sudo mkdir -p /etc/systemd/journald.conf.d/🆑
[sudo] password for server:🔑
ujpadmin@okachimachi:~$ echo -e "[Journal]\nSystemMaxUse=200M" | sudo tee /etc/systemd/journald.conf.d/maxuse.conf🆑
[Journal]
SystemMaxUse=200M
ujpadmin@okachimachi:~$ echo "MaxRetentionSec=7day" | sudo tee -a /etc/systemd/journald.conf.d/maxuse.conf🆑
MaxRetentionSec=7day
ujpadmin@okachimachi:~$ sudo cat /etc/systemd/journald.conf.d/maxuse.conf🆑
[Journal]
SystemMaxUse=200M
MaxRetentionSec=7day
ujpadmin@okachimachi:~$
  • 設定を反映させる.
ujpadmin@okachimachi:~$ sudo systemctl restart systemd-journald🆑
ujpadmin@okachimachi:~$
  • ログファイルの容量を確認.
ujpadmin@okachimachi:~$ journalctl --disk-usage🆑
Archived and active journals take up 199.9M in the file system.
ujpadmin@okachimachi:~$
  • 580MBあったけど200MB以下に減った.すぐ実行された模様.

ディスク容量のモニタリングを行う

  • ディスク容量不足になったら,メールを送信する仕組み.
  • サイネージは基本ディスク容量は増えないが,念のため.
ujpadmin@okachimachi:~$ cd ~/scripts/🆑
ujpadmin@okachimachi:~/scripts$
ujpadmin@okachimachi:~/scripts$ cat disk_monitor.sh🆑
#!/bin/bash

# --- 【設定項目】環境に合わせて書き換えてください ---
ALERT_PERCENT=15                # 空き容量が「残り何%」以下になったらアラートを出すか
TO_EMAIL="admin@example.com"    # 通知先のメールアドレス
FROM_EMAIL="ujpadmin@okachimachi"  # 送信元のメールアドレス
# --------------------------------------------------

# 現在のルートディレクトリ(/)の「空き容量の%」を数値で取得
CURRENT_FREE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
# 使用率から空き容量(%)を計算
FREE_PERCENT=$((100 - CURRENT_FREE))

# 設定した空き容量(%)を下回ったらメールを送信
if [ "$FREE_PERCENT" -le "$ALERT_PERCENT" ]; then
    HOSTNAME=$(hostname)
    SUBJECT="[警告] ${HOSTNAME} のディスク空き容量が低下しています"

    # メールの本文を作成
    BODY="サイネージ端末 (${HOSTNAME}) のディスク空き容量が残り ${FREE_PERCENT}% になりました。\n\n現在のディスク使用状況:\n$(df -h /)"

    # Postfixを使ってメールを送信
    echo -e "Subject: ${SUBJECT}\nFrom: ${FROM_EMAIL}\nTo: ${TO_EMAIL}\n\n${BODY}" | /usr/sbin/sendmail -t
fi

ujpadmin@okachimachi:~/scripts$ chmod +x disk_monitor.sh🆑
ujpadmin@okachimachi:~/scripts$
  • メールアドレスと,残りの容量部分を調整.
  • crontabで設定する.
ujpadmin@okachimachi:~$ crontab -l|grep -v ^#🆑
@reboot sleep 30 && echo "サイネージ稼働開始okachimachi" | mail -s "【通知】 サイネージ" xxxx@xxxxx.jp
0 * * * * /bin/bash /home/server/scripts/disk_monitor.sh
ujpadmin@okachimachi:~$
  • これで毎時0分にチェックされる.


広告スペース
Google