Ubuntuでmergerfsを使い、複数のストレージを仮想的に統合する

【概要】

この記事では、複数のファイルシステムを仮想的に1つに統合するためのFUSE (Filesystem in Userspace) ベースのunionファイルシステム「mergerfs」の導入と基本的な設定方法をUbuntu環境で解説します。mergerfsを使うことで、物理的に異なる複数のディスクやパーティションをあたかも1つの大きなストレージ領域のように扱え、データ管理と保存を簡素化できます。

注意: mergerfsはストレージを統合しますが、RAIDのようなデータの冗長化(耐障害性)機能は提供しません

前提条件

事前準備: Ubuntu システムの最新化

mergerfsの導入に先立ち、システムのパッケージリストとインストール済みパッケージを最新の状態に更新することを推奨します。これにより、セキュリティの向上や依存関係の問題発生を防ぎます。 以下のコマンドをターミナルで実行してください。

(参考: Ubuntuの基本的なセットアップについては、別ページ » を参照してください。)

sudo apt -y update
sudo apt -y upgrade

(任意) カーネルなどシステムの中核に関わるアップデートが含まれた場合は、システムを再起動すると安全です。

# 必要に応じて実行
sudo systemctl reboot

mergerfs のインストール

mergerfsは、Ubuntuの標準リポジトリからインストールする方法と、GitHubからソースコードを取得してビルドする方法があります。通常はリポジトリからのインストールが手軽で推奨されます。最新機能を利用したい場合はソースコードからビルドします。

方法1: Ubuntuリポジトリからインストール (推奨)

(注記: まずはこちらの方法を試してください。)

sudo apt update
sudo apt install mergerfs
# インストール確認
mergerfs -V

方法2: ソースコードからビルドしてインストール (最新版を利用したい場合)

リポジトリ版が存在しない、または最新版が必要な場合は、以下の手順でソースコードからビルドします。

1. ビルドに必要な依存パッケージをインストール

(ビルドツール、git、FUSE開発ライブラリ、拡張属性ライブラリ、パッケージ設定ツールなど)

(注: パッケージ名はUbuntuのバージョンによって異なる場合があります)

sudo apt -y install build-essential git libfuse-dev libattr1-dev pkg-config xattr

2. ソースコードの取得とビルド

(作業用の一時ディレクトリに移動)

cd /tmp

(GitHubから最新のソースコードをクローン)

git clone https://github.com/trapexit/mergerfs.git

(ソースコードディレクトリに移動)

cd mergerfs

(ソースコードをコンパイル)

make

(コンパイルしたプログラムをシステムにインストール)

sudo make install

3. インストールの確認 (任意)

(バージョン情報が表示されれば成功)

mergerfs -V

mergerfs の設定と自動マウント

mergerfsを利用して複数のファイルシステムを統合し、システム起動時に自動的にマウントされるように設定します。

設定前の準備:

  1. 統合元ディレクトリの確認/マウント: 統合したいファイルシステム(ブランチと呼びます)がマウントされていることを確認します。ここでは例として、別々のディスクが /mnt/hdd1/mnt/hdd2 にマウントされているとします。これらのディレクトリが存在し、アクセス可能であることを確認してください。
    ls /mnt/hdd1
    ls /mnt/hdd2
    
  2. 統合先マウントポイントの作成: 統合後のファイルシステムとしてアクセスするための空のディレクトリを作成します。ここでは例として /mnt/storage を作成します。
    sudo mkdir -p /mnt/storage
    

fstabへの追記:

システム起動時に mergerfs を自動マウントさせるため、/etc/fstab ファイルに設定を追記します。/etc/fstab はシステムの重要な設定ファイルのため、編集前にバックアップを取得することを強く推奨します。

バックアップ作成 (日付付き)

sudo cp /etc/fstab /etc/fstab.bak.$(date +%Y%m%d)

エディタでfstabを開く (例: nano)

sudo nano /etc/fstab

以下の行を /etc/fstab の末尾に追加します。ご自身の環境に合わせて、統合元パス(ブランチ)と統合先マウントポイントを修正してください。

# <統合元パス(コロン区切り)> <統合先マウントポイント> <タイプ> <オプション>  
/mnt/hdd1:/mnt/hdd2 /mnt/storage fuse.mergerfs defaults,allow_other,use_ino,category.create=epmfs,minfreespace=10G,fsname=mergedStorage 0 0

主要なオプションの説明:

便利な追加オプションの例:

設定の反映と確認:

/etc/fstab の編集後、以下のコマンドでマウントを実行し、設定が正しいか確認します。エラーメッセージが表示されないか注意してください。

sudo mount -a

(もしエラーが発生した場合は、/etc/fstab の記述を見直してください。再起動する前にこのコマンドで正しくマウントできるか確認することが重要です。)

正しくマウントされたか、統合後の容量を確認します。df -h コマンドで、指定したマウントポイント (例: /mnt/storage) のサイズが、統合元ブランチの合計容量に近い値になっていることを確認します。個々のディスク使用率ではなく、統合された全体の容量が表示されます。

df -h /mnt/storage

補足事項

アンマウント:

mergerfsでマウントしたファイルシステムを一時的に解除(アンマウント)したい場合は、以下のコマンドを実行します。

sudo umount /mnt/storage

(/etc/fstab の記述を削除またはコメントアウトしない限り、次回のシステム起動時には再度自動マウントされます。)

重要な注意点: 冗長性について

繰り返しになりますが、mergerfsは複数のストレージを束ねて大容量に見せる機能を提供しますが、RAIDのようなデータの冗長化(耐障害性)機能はありません。 統合しているディスクのうち1つでも物理的に故障した場合、そのディスクに保存されていたデータは失われる可能性があります。

重要なデータを保存する場合は、mergerfsを利用する場合でも、必ず別途バックアップを取得するなどのデータ保護策を講じてください。

詳細情報:

mergerfsにはこの記事で紹介したもの以外にも多くのオプションや書き込みポリシーが存在します。より詳細な設定やトラブルシューティングについては、公式のドキュメントを参照してください。