はじめに
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 printPartition 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 -30USB の切断や 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/huggingfacersync で 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 件のコメント:
コメントを投稿