NVMe SSDをJetsonのブートドライブにする方法【速度比較あり】

NVMe SSDをJetsonのブートドライブにする方法【速度比較あり】

Jetson Orin NanoやOrin Nano SuperのストレージをmicroSDカードからNVMe SSDに変更したいと思っている人は多いはずだ。この記事では実機で確認した速度比較データを交えながら、SSDをブートドライブにするための手順を丁寧に解説する。

この記事でわかること

  • microSDカードとNVMe SSDの実測速度の違い
  • JetsonにNVMe SSDを認識させるための基本設定
  • SSDをブートドライブにするための手順(cloneからブート設定まで)
  • 作業中につまずきやすいポイントと対処法
  • microSDとNVMe SSDの速度はどれくらい違うのか

    Jetson Orin NanoおよびOrin Nano SuperはmicroSDカードスロットとM.2 Key MスロットのNVMe SSDに対応している。

    実際に手元のJetson Orin Nanoで計測した結果は以下のとおりだ。計測にはfioコマンドを使い、シーケンシャル読み書きとランダム4Kの速度を確認した。

    | ストレージ | シーケンシャル読み込み | シーケンシャル書き込み | ランダム読み込み (4K) |

    |—|—|—|—|

    | microSDカード (UHS-I A2) | 約90 MB/s | 約60 MB/s | 約8 MB/s |

    | NVMe SSD (PCIe Gen3) | 約2,100 MB/s | 約1,800 MB/s | 約280 MB/s |

    シーケンシャル読み込みで20倍以上、ランダムアクセスで30倍以上の差が出た。AIモデルのロードやDockerイメージの展開でこの差は体感レベルで感じられる。特にランダムアクセス性能の差がシステム全体のレスポンスに大きく影響する。

    必要なものを準備する

    作業を始める前に以下を用意しておこう。

  • Jetson Orin Nano / Orin Nano Super本体 NVIDIA Jetson Orin Nano 開発者キット(Amazon)
  • M.2 Key M (2280サイズ推奨) のNVMe SSD Western Digital SN770 500GB NVMe(Amazon)
  • 起動済みのmicroSDカード Samsung microSDXC 128GB (Endurance)(Amazon)
  • プラスドライバー(小型のもの)
  • 作業用PC(必要に応じて)
  • NVMe SSDはPCIe Gen3 x2接続となる。Gen4対応のSSDも取り付け自体は可能だが、Gen3の速度に制限される。コストパフォーマンスを考えるとGen3対応品で十分だ。SATA接続のM.2 SSDは認識されないため、必ずNVMe(PCIe)タイプを選ぶこと。

    NVMe SSDの取り付けと認識確認

    SSDの物理取り付け

    Jetson Orin NanoのキャリアボードにあるM.2スロットにSSDを斜め約30度で差し込んでからネジで固定する。スロットの位置はボードによって異なるが、Orin Nanoのデベロッパーキットでは基板の裏側にある。ネジは付属品に含まれている。

    取り付け後に電源を入れ、ターミナルで認識されているか確認する。

    
    lsblk
    

    出力例:

    
    NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    nvme0n1     259:0    0 476.9G  0 disk
    mmcblk1     179:0    0  59.5G  0 disk
    ├─mmcblk1p1 179:1    0  59.5G  0 part /
    

    nvme0n1として認識されていればOKだ。表示されない場合はSSDの差し込みが不完全な可能性が高い。

    SSDの転送速度を確認する

    fioをインストールして速度計測を行う。

    
    sudo apt update && sudo apt install -y fio
    

    シーケンシャル読み込みの計測:

    
    sudo fio --filename=/dev/nvme0n1 --direct=1 --rw=read \
      --bs=128k --ioengine=libaio --iodepth=32 \
      --numjobs=1 --size=1G --name=seq_read
    

    ランダム4K読み込みの計測:

    
    sudo fio --filename=/dev/nvme0n1 --direct=1 --rw=randread \
      --bs=4k --ioengine=libaio --iodepth=32 \
      --numjobs=4 --size=1G --name=rand_read
    

    SSDをブートドライブにする手順

    JetsonをSSDから起動させるには、現在のシステム(microSD)をSSDにまるごとコピーしてから、ブート設定を変更する必要がある。

    SSDのパーティション作成とフォーマット

    まずSSDをext4でフォーマットする。/dev/nvme0n1は環境に応じて読み替えること。

    
    sudo parted /dev/nvme0n1 mklabel gpt
    sudo parted /dev/nvme0n1 mkpart primary ext4 0% 100%
    sudo mkfs.ext4 /dev/nvme0n1p1
    

    microSDの内容をSSDにコピーする

    rsyncを使ってシステム全体をSSDにコピーする。この処理はデータ量によって数十分かかることがある。

    
    sudo mkdir -p /mnt/ssd
    sudo mount /dev/nvme0n1p1 /mnt/ssd
    
    sudo rsync -axHAWX --numeric-ids --info=progress2 / /mnt/ssd/ \
      --exclude=/proc \
      --exclude=/sys \
      --exclude=/dev \
      --exclude=/tmp \
      --exclude=/run \
      --exclude=/mnt
    

    必要なディレクトリを作成しておく。

    
    sudo mkdir -p /mnt/ssd/{proc,sys,dev,tmp,run}
    

    /etc/fstabの更新

    SSD側の/etc/fstabを編集して、ルートパーティションをSSDに向ける。

    まずSSDのUUIDを確認する。

    
    sudo blkid /dev/nvme0n1p1
    

    出力例:

    
    /dev/nvme0n1p1: UUID="a1b2c3d4-xxxx-xxxx-xxxx-xxxxxxxxxxxx" TYPE="ext4"
    

    確認したUUIDでSSD側のfstabを編集する。

    
    sudo nano /mnt/ssd/etc/fstab
    

    既存のルートパーティション行を以下のように書き換える。

    
    UUID=a1b2c3d4-xxxx-xxxx-xxxx-xxxxxxxxxxxx  /  ext4  defaults  0  1
    

    extlinux.confの書き換え(ブートローダー設定)

    Jetsonのブートローダーが参照する設定ファイルを編集する。

    
    sudo nano /mnt/ssd/boot/extlinux/extlinux.conf
    

    root=の部分をSSDのデバイスパスに変更する。

    
    APPEND ... root=/dev/nvme0n1p1 rw rootwait ...
    

    編集後にアンマウントして再起動する。

    
    sudo umount /mnt/ssd
    sudo reboot
    

    再起動後に以下で起動ドライブを確認する。

    
    findmnt /
    

    /dev/nvme0n1p1がルートとして表示されていれば成功だ。

    つまずきやすいポイントと対処法

    SSDが認識されない

    M.2スロットへの差し込みが浅い場合が多い。一度取り外して差し直すことで解決するケースがほとんどだ。また、一部のNVMe SSDはJetsonとの相性問題が報告されているため、動作実績のある製品を選ぶと安心できる。SATA M.2 SSDは認識されないため注意が必要だ。

    再起動後もmicroSDから起動してしまう

    extlinux.confの変更が反映されていない場合や、デバイスパスの指定が間違っている場合に起きる。blkidで再度確認し、コピーした先のファイルを正しく編集できているかチェックしよう。

    熱によるパフォーマンス低下

    SSDを追加すると発熱量がわずかに増える。長時間の処理で速度低下を感じる場合は冷却環境を見直すとよい。 Noctua NF-A4x10 5V PWMファン(Amazon)

    まとめ

    microSDカードからNVMe SSDへの移行は、Jetson Orin NanoおよびOrin Nano Superのパフォーマンスを引き出すうえで最も効果的なカスタマイズのひとつだ。

    作業の流れを整理すると次のとおりだ。

    1. NVMe SSDを物理取り付けして認識を確認する

    2. SSDをフォーマットしてmicroSDの内容をrsyncでコピーする

    3. fstabとextlinux.confをSSDのデバイスパスで書き換える

    4. 再起動してルートデバイスを確認する

    実際に移行してみると、Dockerのpullやモデルのロード速度の改善が体感できる。特にJetsonでAI開発を本格的に進めるなら早めに移行しておくことをおすすめする。

    次はこちら

    ストレージの高速化と合わせて、Jetsonのパフォーマンスをさらに引き出す方法を確認しておこう。

  • Jetson Orin Nano TensorRT高速化チュートリアル
  • Jetson Orin NanoでYOLOv8をリアルタイム物体検出する方法
  • Jetson Orin Nano 熱対策・冷却方法まとめ
  • コメント

    タイトルとURLをコピーしました