Ubuntu で mhddfs を使う

Ubuntu 環境で、複数のディスクを仮想的に1つにまとめ、大きな容量として扱えるようにする`mhddfs`の設定手順を解説します。

設定項目

この手順で使用する項目を以下に定義します。ご自身の環境に合わせて読み替えてください。

前準備

Ubuntu のシステム更新

作業前に、パッケージの依存関係の問題を防ぎ、システムを最新の状態にするため、以下のコマンドでシステム更新を実行します。 Ubuntu で OS のシステム更新を行うときは, 次のコマンドを実行.

sudo apt -y update
sudo apt -yV upgrade
sudo /sbin/shutdown -r now

操作手順

mhddfs のインストール

標準リポジトリの`mhddfs` (バージョン 0.1.39等) には、特定の条件下で動作が不安定になる既知のバグ(セグメンテーションフォルト等)が報告されています。ここでは、有志により修正されたバージョンを導入します。

* 代替案 (推奨): `mhddfs`は長期間更新されておらず、既知の問題も存在します。現在も活発に開発・保守されている`mergerfs`は、`mhddfs`と同様の機能を提供し、より安定性やセキュリティに優れているため、新規に導入する場合は`mergerfs`を強く推奨します

次のコマンドを実行して、バグ修正版の`mhddfs`をインストールします。

sudo apt install libfuse-dev libattr1-dev
cd /tmp
git clone https://github.com/vdudouyt/mhddfs-nosegfault
cd mhddfs-nosegfault
sudo cp mhddfs /usr/bin
ls -la /usr/bin/mhddfs

使用するハードディスクのフォーマット (警告:データ消失)

警告: 以下の mkfs.ext4 コマンドは、指定したドライブ上の すべてのデータを完全に消去します。対象ドライブ(この例では /dev/sdb, /dev/sdc)に重要なデータがないか、必ず事前に確認してください。操作は自己責任でお願いします。

以下のコマンドで、対象のハードディスク(ここでは/dev/sdb/dev/sdc)を`ext4`ファイルシステムでフォーマットします。

mkfs.ext4 -j -O extent -L "" /dev/sdb
mkfs.ext4 -j -O extent -L "" /dev/sdc

マウント

まず、各物理ドライブをマウントするための一時的なディレクトリを作成し、システム起動時に自動マウントされるよう`/etc/fstab`に追記します。

sudo mkdir /mnt1
sudo mkdir /mnt2
echo "/dev/sdb /mnt1 ext4 defaults 0 1" | sudo tee -a /etc/fstab
echo "/dev/sdc /mnt2 ext4 defaults 0 1" | sudo tee -a /etc/fstab
sudo mount /mnt1
sudo mount /mnt2
ls /mnt1
ls /mnt2

次に、作成した一時マウントポイント(/mnt1, /mnt2)を束ねて/mntにマウントするための`mhddfs`設定を`/etc/fstab`に追記します。

echo "mhddfs#/mnt1,/mnt2 /mnt fuse defaults,allow_other 0 2" | sudo tee -a /etc/fstab

注記: `/etc/fstab`内の`allow_other`オプションについて: このオプションは、マウント操作を行ったユーザー以外も/mntディレクトリにアクセスできるように許可します。複数ユーザーでの利用には便利ですが、セキュリティリスクも伴います。不要な場合は削除を検討してください(その場合、マウントしたユーザーのみアクセス可能になります)。

`/etc/fstab`の変更をシステムに反映させるため、以下のコマンドを実行します(再起動でも反映されます)。

sudo mount -a

最後に、`mhddfs`のマウントポイント(/mnt)が正しくマウントされ、アクセス可能か確認します(通常、最初は空です)。

ls /mnt