マルウェア解析システムのCAPEv2を運用していると、避けて通れないのが「ディスク容量問題」です。
特に /opt/CAPEv2/storage/ 配下には、解析ごとのメモリダンプやバイナリ、スクリーンショットが蓄積されるため、高速なSSDがあっという間に枯渇します。
今回、「本体はSSDのまま、重い解析データだけを外部HDDに逃がす」 という構成変更を行いました。その際、「シンボリックリンク」を用いた方法でハマり、「バインドマウント(Bind Mount)」 で解決した経緯と手順を記録します。
実装手順
「バインドマウント」を使用して、安全かつ確実にデータをHDDへ移行する手順です。
前提環境
- OS: Ubuntu
- CAPEv2:
/opt/CAPEv2にインストール済み - ディスク構成:
sda: システム用 SSDsdb: 増設用 HDD (4TB)
1. HDDの確認とフォーマット
まず、増設したHDDを確認します。
lsblk
# 出力例:
# sda 1T (SSD)
# sdb 4T (外付け HDD) -> ここでは /dev/sdb1 と仮定
※初回のみ実施:HDDを ext4 でフォーマットします(データは消えます)。
sudo mkfs.ext4 /dev/sdb1
2. マウントポイントの作成
まず、物理的なHDDをマウントする場所を作ります。
sudo mkdir -p /mnt/cape_storage
3. 自動マウント設定 (/etc/fstab)
ここが重要です。再起動しても設定が維持されるよう /etc/fstab を編集します。
今回は 「1. HDD自体のマウント」 と 「2. CAPEディレクトリへのバインドマウント」 の2行が必要です。
まずUUIDを確認:
sudo blkid /dev/sdb1
# 例: UUID="abcd-1234-xxxx"
/etc/fstab に追記:
# 1. HDD自体をシステムにマウント
UUID=abcd-1234-xxxx /mnt/cape_storage ext4 defaults,noatime 0 2
# 2. CAPEのstorageディレクトリへバインドマウント (Bind Mount)
/mnt/cape_storage/storage /opt/CAPEv2/storage none bind 0 0
4. サービスの停止
データ移動中の整合性を保つため、CAPE関連のサービスを停止します。
sudo systemctl stop cape
sudo systemctl stop cape-processor
sudo systemctl stop cape-web
# 環境によっては cuckoo* の場合もあり
5. データの移動とディレクトリ準備
既存のデータをHDD側に移動し、マウント先となる空ディレクトリを作成します。
# 1. データをHDDへ移動
# ※ /mnt/cape_storage は手順3の設定反映前なら手動mountが必要: sudo mount /dev/sdb1 /mnt/cape_storage
sudo mkdir -p /mnt/cape_storage/storage
sudo rsync -av /opt/CAPEv2/storage/ /mnt/cape_storage/storage/
# 2. 元のディレクトリを空にする(マウントポイントにするため)
# 安全のためバックアップしてから削除推奨
sudo mv /opt/CAPEv2/storage /opt/CAPEv2/storage_bk
sudo mkdir /opt/CAPEv2/storage
# 3. 権限の修正(念のため)
sudo chown -R cape:cape /mnt/cape_storage/storage
sudo chown cape:cape /opt/CAPEv2/storage
6. マウントの適用
fstab の設定を反映させます。
sudo mount -a
確認コマンド:
df -h | grep cape
# または
findmnt | grep storage
/opt/CAPEv2/storage がマウントされているように見えれば成功です。
7. サービスの再開と動作確認
sudo systemctl start cape
sudo systemctl start cape-processor
sudo systemctl start cape-web
WebUIから解析タスクを流し、HDD側にデータが書き込まれているか確認します。
ls -l /mnt/cape_storage/storage/analyses/
# 新しいタスクIDのディレクトリが増えていればOK
まとめ
- CAPEv2 本体と MongoDB 👉 SSD(速度重視)
- storage (analyses, dumps) 👉 HDD(容量重視)
- 接続方法 👉 Bind Mount(互換性・安定性重視)
WebサーバーやDBのデータディレクトリを移動させる際、シンボリックリンクは手軽ですが、権限やセキュリティ設定でハマる要素が多いのかもしれません。今回は Bind Mount が、トラブルの少ない最適解でした。