2026年10月21日水曜日

DGX Spark に USB SSD を接続し、ext4 で初期化して永続マウントする

はじめに

DGX Spark に USB SSD を接続し、Hugging Face のモデルバックアップ用ストレージとして利用できるようにする。

本記事では、USB SSD の認識確認から、GPT パーティションの作成、ext4 でのフォーマット、マウント、再起動後の自動マウント設定までを紹介する。

今回の環境では、マウントポイントを /mnt/hf_model_backup とする。

環境

項目 内容
マシン NVIDIA DGX Spark
OS Ubuntu 24.04 系
USB SSD 約480GB(447.1GiB)
デバイス /dev/sda
パーティション形式 GPT
ファイルシステム ext4
マウントポイント /mnt/hf_model_backup

今回の構成では、DGX Spark の内蔵 SSD が /dev/nvme0n1、外付け USB SSD が /dev/sda として認識されている。

注意:以下の初期化操作では、対象ディスクに保存されているデータがすべて失われる。

実行前に、対象デバイスが正しいことを必ず確認すること。

USB SSD の認識を確認する

USB SSD を DGX Spark に接続し、lsblk で認識状態を確認する。

lsblk

今回の環境では、次のように認識された。

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    0 447.1G  0 disk
├─sda1        8:1    0    16M  0 part
└─sda2        8:2    0 447.1G  0 part
nvme0n1     259:0    0 931.5G  0 disk
├─nvme0n1p1 259:1    0   512M  0 part /boot/efi
└─nvme0n1p2 259:2    0   931G  0 part /

/dev/sda が USB SSD、/dev/nvme0n1 が OS のインストールされている内蔵 SSD となっている。

念のため、モデル名や接続方式も確認する。

lsblk -o NAME,PATH,SIZE,MODEL,TRAN,FSTYPE,MOUNTPOINTS

/dev/sda の TRAN が usb であること、容量とモデル名が接続した SSD と一致していることを確認する。

以降は /dev/sda を対象として操作する。

なお、デバイス名は接続状況によって変化する場合があるので、別の環境で作業する場合は適宜読み替えること。

GPT パーティションを作成する

既存のパーティション構成を削除し、GPT 形式のパーティションテーブルを作成する。

既存のパーティションがマウントされている場合は、先にアンマウントしておく。

まず、GPT パーティションテーブルを作成する。

sudo parted /dev/sda --script mklabel gpt

続いて、ディスク全体を使用するパーティションを1つ作成する。

sudo parted /dev/sda --script mkpart primary ext4 1MiB 100%

1MiB から開始することで、パーティションのアライメントを適切に確保する。

作成結果を確認する。

lsblk /dev/sda

期待する構成は以下のとおり。

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 447.1G  0 disk
└─sda1   8:1    0 447.1G  0 part

さらに、パーティションテーブルの詳細を確認する。

sudo parted /dev/sda print

Partition Table: gpt と表示されていればよい。

ext4 でフォーマットする

作成したパーティション /dev/sda1 を ext4 でフォーマットする。

sudo mkfs.ext4 -L hf_model_backup /dev/sda1

-L オプションではファイルシステムのラベルを指定している。

フォーマット結果を確認する。

lsblk -f /dev/sda

/dev/sda1 の FSTYPE が ext4 になっていれば完了。

USB SSD をマウントする

マウントポイントとなるディレクトリを作成する。

sudo mkdir -p /mnt/hf_model_backup

作成したパーティションをマウントする。

sudo mount /dev/sda1 /mnt/hf_model_backup

マウント状態を確認する。

df -hT /mnt/hf_model_backup

/dev/sda1 が ext4 として /mnt/hf_model_backup にマウントされていれば成功。

一般ユーザーに書き込み権限を付与する

ext4 でフォーマットした直後は、ファイルシステムのルートディレクトリが root 所有になっている。

通常ユーザーからバックアップを保存できるように、所有者を変更する。

sudo chown "$USER:$(id -gn)" /mnt/hf_model_backup

これで、現在ログインしているユーザーがマウント先へ書き込めるようになる。

読み書きを確認する

テストファイルを作成し、読み書きできることを確認する。

echo "DGX Spark USB SSD test" > /mnt/hf_model_backup/test.txt
sync
cat /mnt/hf_model_backup/test.txt

次のように表示されれば、基本的な読み書きは成功している。

DGX Spark USB SSD test

カーネルログも確認しておく。

sudo dmesg -T | tail -30

USB の切断や I/O error が発生していないことを確認する。

問題なければテストファイルを削除する。

rm /mnt/hf_model_backup/test.txt

再起動後も自動マウントする

手動の mount コマンドによるマウントは、再起動後には維持されない。

再起動後も USB SSD を自動マウントするため、/etc/fstab に設定を追加する。

UUID を確認する

Linux の /dev/sda などのデバイス名は、接続順序によって変化する可能性がある。

そのため、/etc/fstab にはデバイス名ではなく UUID を指定する。

sudo blkid /dev/sda1

出力例:

/dev/sda1: LABEL="hf_model_backup" UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="..."

表示された UUID を控えておく。

/etc/fstab を編集する

まず、設定ファイルをバックアップする。

sudo cp /etc/fstab /etc/fstab.bak

エディターで開く。

sudo nano /etc/fstab

ファイルの末尾に次の行を追加する。

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/hf_model_backup ext4 defaults,nofail,x-systemd.device-timeout=10s 0 2

UUID の部分は、先ほど確認した実際の値に置き換える。

指定したオプションの意味は次のとおり。

オプション 説明
defaults 標準的なマウントオプションを使用する
nofail デバイスが存在しなくても OS の起動を継続する
x-systemd.device-timeout=10s デバイスの出現を待つ時間を10秒にする
0 dump によるバックアップ対象から除外する
2 ファイルシステムチェックの順序を指定する

USB SSD は取り外される可能性があるため、nofail を付けている。

自動マウント設定を確認する

/etc/fstab を変更したら、systemd に設定変更を反映する。

sudo systemctl daemon-reload

いったんアンマウントする。

sudo umount /mnt/hf_model_backup

/etc/fstab の設定を使って再マウントする。

sudo mount /mnt/hf_model_backup

マウント状態を確認する。

findmnt /mnt/hf_model_backup

/dev/sda1 が /mnt/hf_model_backup にマウントされていれば、設定は正常に動作している。

必要であれば、再起動後にも同じコマンドを実行し、自動マウントされていることを確認する。

最終確認

最後に、ファイルシステムとマウント状態を確認する。

lsblk -f
df -hT /mnt/hf_model_backup

期待する構成は以下のとおり。

/dev/sda
└─/dev/sda1  ext4  /mnt/hf_model_backup

これで USB SSD の初期化から永続マウントまで完了。

Hugging Face のモデルバックアップに利用する

今回作成した /mnt/hf_model_backup は、Hugging Face のモデルキャッシュをバックアップするために利用する。

例えば、保存先のディレクトリを作成する。

mkdir -p /mnt/hf_model_backup/huggingface

rsync で Hugging Face のキャッシュをコピーする場合は、次のように実行できる。

rsync -aH --info=progress2 \
  ~/.cache/huggingface/hub/ \
  /mnt/hf_model_backup/huggingface/

キャッシュ内のシンボリックリンクとハードリンクの構造をできるだけ維持するため、-aH を指定している。

なお、バックアップ中はモデルのダウンロードや削除を行わず、キャッシュの更新が発生しない状態で実行するのが望ましい。

また、今回の USB SSD は約447GiBなので、それ以上のサイズの Hugging Face キャッシュを丸ごと保存することはできない。容量が足りない場合は、必要なモデルのみを選択してバックアップする。

おわりに

DGX Spark に USB SSD を接続し、ext4 で初期化して /mnt/hf_model_backup へ永続マウントする手順を紹介した。

今回の作業のポイントは以下のとおり。

  • lsblk で初期化対象のデバイスを正確に特定する
  • GPT パーティションテーブルを作成する
  • ext4 でフォーマットする
  • マウント先の所有者を変更して一般ユーザーから書き込めるようにする
  • /etc/fstab に UUID を指定して永続マウントする
  • 外付けデバイスなので nofail を設定する
  • 書き込みテストとカーネルログでエラーがないことを確認する

これで、DGX Spark の内蔵 SSD とは別に、Hugging Face のモデルバックアップ用ストレージを用意できた。

0 件のコメント:

コメントを投稿