Jenkins

Jenkins Disk Space Fix for Amazon Linux 2023

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

Amazon Linux 2023 Jenkins ディスク容量不足 対策の体系的解決ガイド

AWSでJenkinsを運用する際、Amazon Linux 2023のデフォルト設定が引き起こすディスク容量不足問題は深刻な障害となります。本記事では、tmpfsの仕組みやJenkins特有のファイル生成パターンに焦点を当て、実践的な対策手順を解説します。


Amazon Linux 2023における/tmp=tmpfsのデフォルト設定とその影響

Amazon Linux 2023では、起動時に/tmp揮発性メモリディスク(tmpfs)として自動マウントされます。この設計はシステムのクリーンさと高速なI/Oを確保する意図ですが、JenkinsのようなCIツールでは深刻な問題を引き起こします。

tmpfsの仕組みとメモリマッピング

tmpfsはRAM上に仮想ディスクを作成し、データを一時的に格納します。Amazon Linux 2023ではデフォルトで物理メモリ容量の50%/tmp領域として割り当てられます(例: 16GB RAM環境なら8GB)。ただし、この制限を超えるとシステムはディスク操作をブロックし、Jenkinsノードがオフラインになる危険性があります。

重要: 実際のデフォルト値はAmazon Linux 2023バージョンやカーネルリビジョンに依存するため、mount | grep tmpfsで確認することを強く推奨します。

項目 補足
tmpfsデフォルトサイズ 物理メモリの50% RAM容量に依存する
使用領域 /tmp Jenkinsの一時ファイルがここに保存
リセットタイミング レジューム/シャットダウン 内容は揮発性となる

Jenkinsでの一時ファイル生成パターン

Jenkinsはビルド中に以下のような一時ファイルを大量に生成します。

  • ワークスペース$WORKSPACE): 各ジョブのソースコードやビルド結果が保存される領域
  • ログファイル/var/log/jenkins/*.log): ビルド実行時の詳細な出力
  • キャッシュデータ~/.m2/repository, ~/.npmなど): 外部ライブラリのダウンロード一時保存

特に/tmpはJenkinsのワークスペースや一時ファイルの格納先として頻繁に使用されるため、容量不足時にノードがオフラインになるメカニズムにつながります。


Jenkinsノードオフラインになるメカニズムと監視方法

Jenkinsノードがオフラインになる主な原因は/tmp領域のディスク容量不足です。システムレベルでのエラーメッセージやCloudWatchアラームの設定で事前に検知・対応することが重要です。

ディスク容量不足時のエラーメッセージの種類

以下のメッセージがJenkins管理画面やログに表示される場合があります。

  • hudson.util.IOException2: java.io.IOException: No space left on device
  • /tmp領域がいっぱいになった直接的な原因を示す。
  • Node is offline because it failed to connect
  • 起動中のJenkinsエージェントがノード接続失敗を報告。

重要: エラーメッセージが発生しても、df -hdu -sh /tmpで実際のディスク使用量を確認する必要があります。

CloudWatchアラーム設定例

AWS CloudWatchで /tmp領域の使用率を監視するには、以下の手順を取ります。

注意: AWS/EC2 namespaceに標準的なDiskSpaceUsedメトリクスは存在しないため、カスタムメトリクスまたはCloudWatch Agentでファイルシステム情報を取得する必要があります。

  1. CloudWatchメトリクスにカスタムアラームを作成(例: 使用率が90%を超えた場合)。
  2. 通知方法としてSNSトピックを設定し、DevOpsチームに即座に通知。


/tmp容量拡張のためのmountオプション変更手順

/tmp領域の制限を超えるには、/etc/fstabでtmpfsのサイズ制限を解除する必要があります。以下が具体的な手順です。

/etc/fstab編集時の注意点

  • 編集前にはdf -h /tmpfree -mで現在のRAM使用量を確認し、過剰な拡張を避ける。
  • tmpfsの最大サイズはRAM容量の70%を超えないことを推奨(例: 16GB RAMなら11.2GB)。

再マウントコマンドの実行確認

変更後、mount -o remount /tmpで即座に反映。永続的な設定は再起動後も維持されます。

手順:

  1. /etc/fstabを編集し、以下のように設定する:
    bash
    tmpfs /tmp tmpfs defaults,size=20G 0 0

  2. マウントオプションの変更を反映:
    bash
    mount -o remount /tmp

  3. 再起動後も設定が維持されるか確認:
    bash
    cat /etc/fstab | grep /tmp


Jenkinsの一時ファイル最適化策とワークスペース管理

/tmp領域の拡張に加え、Jenkins側で一時ファイルを減らす工夫も有効です。パイプラインスクリプトやプラグインによる管理が推奨されます。

PipelineでのcleanWs構文活用法

Pipelineスクリプト内でcleanWsを指定することで、ジョブ実行前にワークスペースを自動削除できます。

Node Cleanup Pluginの有効活用

Node Cleanup Pluginは、ノードオフライン時に不要な一時ファイルやキャッシュを自動掃除。

  • 設定方法: Jenkins管理画面 > プラグイン管理 > Node Cleanup Pluginを有効化
  • 使用例: ジョブ終了後に/tmp/jenkins以下のファイルを削除するスクリプトを登録

注意: 本プラグインは、Jenkinsのキャッシュやワークスペースに影響を与えるため、テスト環境で動作確認を推奨します。


永続的ディスク使用を推奨するstorageクラス設定

tmpfsに依存する代わりに、EBSボリュームなどの永続ストレージを利用することが長期的な安定性のカギです。

EBSボリュームの最適なプロビジョニング

  • IOPS確保: ハイパフォーマンスなジョブを実行する環境では、gp3型EBSで3000 IOPS以上を設定。
  • 容量計画: 週間または月次のビルド量を考慮し、初期ボリュームサイズを50~100GB程度に設定。

Jenkinsホームディレクトリ移動手順

Jenkinsのホームディレクトリ(デフォルト: /var/lib/jenkins)をEBSに移すことで、ログやワークスペースがtmpfsに依存しなくなります。

手順:

  1. EBSボリュームをインスタンスにアタッチし、マウントポイントを作成(例: /mnt/ebs)。
  2. Jenkinsホームディレクトリの内容を移動:
    bash
    rsync -av /var/lib/jenkins/ /mnt/ebs/

  3. jenkins.serviceWorkingDirectoryを変更し、再起動:
    bash
    sudo sed -i 's|WorkingDirectory=.*|WorkingDirectory=/mnt/ebs|' /etc/systemd/system/jenkins.service
    sudo systemctl daemon-reload && sudo systemctl restart jenkins


AWSクラウドフォーラムへの実践経験共有

本記事で紹介した対策は、Jenkins運用の現場での実際に検証された手順です。ただし、環境や使用するリソースによって最適な方法が異なるため、コミュニティでの情報共有が不可欠です。

AWSクラウドフォーラムで自身の対策を投稿し、他のエンジニアと知識を交換することで、さらなる改善が可能になります。以下から投稿ページにアクセスしてください:
https://forums.aws.amazon.com/


スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Jenkins