Jetson AGX Orin で64GB モデルを使っていても、次のような操作をすると、たちまちディスクが枯渇する。
ディスク使用量が大きくなる処理の例
-
git clone
をしまくること。 -
apt-get install
をしまくること。 - dockerの仮想環境を作りまくること
- リポジトリごとに
python3 -m venv venv
でvenv環境を作りまくること
この記事の目的
- Jetson AGX Orin のユーザーが、microSDカードを使って、その領域をfstabを使った固定のファイルシステムとしてマウントさせることができるようにすること。
- 固定のファイルシステムとして認識させたい理由は、root 権限でアクセスできるディスク領域も確保したいためである。
- 抜き差しが簡単な
/media/ユーザー名/UUID
のタイプを使用しないのは、そのためである。 - Jetson ユーザー向けに書いていますが、Ubuntu20.04 であれば共通のはずの内容です
注意
- ディスク関係の処理は、データを失いやすい危険な操作です。
- この記事だけではなく、別の記事も参照して、十分に納得してから、自己責任で実行してください。
動作させた環境
- Jetson AGX Orin
- JetPack5.1
- Ubuntu 20.04
手順
- microSDカードをパーティションを分割する必要はないと思うので、パーティショニングはスキップする。
- microSD を ext4でファイルシステムを作る。
- mircoSD は購入時点ではWmkfs.ext4 コマンドindowsやMacで扱いやすい形式になっている。
- mkfs.ext4 コマンド
- 対象のデバイスを間違えないこと
- システムの'/'があるファイルシステムを指定してしまうと、システムが壊れてしまう。
- まずは、自動マウントさせる。
- /media/ユーザー名/UUID文字列
-
df -h
での表示の確認
- マウントポイントのディレクトリの作成
- 例
cd /mnt; sudo mkdir microsd
- 例
- microSD を固定のファイルシステムとしてマウントさせた。
-
/etc/fstab
への記入- いまどきのfstabへのデバイスの指定にはUUID=UUID文字列を使うといいんだ。
- 必ず、追記のこと。元々のファイルシステムを消さないこと。
-
sudo mount -a
での動作の確認 -
df -h
で実際にマウントされていることを確認 -
ls マウントポイント
でディレクトリの内容を表示できていることを確認する。
確認作業
- Jetson を再起動して、該当の領域がdfで表示されているか
- 該当のディレクトリにcd できるか
注意:やっちゃいけないこと-
- ホームディレクトリ自体を他のディスク上のフォルダへのシンボリックリンクにすること。
- 起こりうること:
- 何かのタイミングで、シンボリックリンク先を見つけられなくなった時に、loginができなくなる。
- loginできないので、その状況を修正できなくなる。
- 万が一、その状況に陥ってしまったら、bootable なUbuntu のUSBメモリを使う。BIOSの設定の起動順序の冒頭にUSBメモリとする。その後BootしてUbutnuが立ち上がったら、PCの既存のディスクをマウントできていることを確認する。
- その状況で、loginできなくなった原因を取り除く。
注意その2
- microSD カードが壊れることがある。
- 壊れたら困るデータは置かないほうがいい。
- githubなどでソースコードを管理してあれば、local のリポジトリが失われても、被害は最小化できる。
- 別のディスクシステムへデータを置いて、本体のファイルシステムにはリンクをおくというやり方でも、複雑さを持ち込んでいる。
- シンボリックリンクの数は増やさないほうが懸命だろう。