2022年6月13日月曜日

ZYNQ Linuxでautofsを使う

ZYNQ Linux環境でNASを利用していたところ、マウントしたNASへ非アクセス時でもLANケーブルが抜ける・その他ネットワークトラブルが発生した後、そのトラブルが解消され復帰したのに、そのNAS内のファイルにアクセスしようとするとフリーズ?ハングアップ?してしまうような状態が発生した。
根本解決にはならないもののNASアクセス中以外はアンマウントするようにしておけばこのようなトラブルはグッと減るのではないかと考えautofsを利用することにした。

autofsはマウントポイントにアクセスがあった時だけ自動でマウントし、一定時間アクセスがないと自動でアンマウントしてくれる。
これによって、NASにアクセスしていないときにネットワークトラブル等が発生しても、アクセス時にトラブル解消していればエラーにならないのではないかと考えた。

通常であればautofsをapt等でインストールするだけで良いが、カーネルのビルドを自分で行うような組み込み系Linuxの場合はカーネルコンフィグで一部選択が必要となる。
Xilinx/linux-xlnxのv5.10ではカーネルコンフィギュレーションのFile systems > Kernel automounter support (supports v3, v4 and v5)にチェックを入れる必要があった。
上記対応をしないとautofsのデーモンのステータスには「test mount forbidden or incorrect kernel protocol version, kernel protocol version 5.00 or above required.」というメッセージが残されうまくautofsが動いていないようだった。

autofsの使い方

apt等でインストール
sudo apt install autofs

インストール後/etc/autofs.confでタイムアウトなどの設定をする。
timeoutに設定した時間アクセスがなくないと自動アンマウントされる。(秒単位)
マウントに失敗したときnegative_timeoutに設定した時間のあいだにアクセスしようとしてもマウントしようとしない。(秒単位)

/etc/auto.masterに
/- 設定ファイルのパス

設定ファイルはマウントポイントやデバイスの情報等を下記ルールで記載し作成する。
マウントポイント mountコマンドのオプション マウントデバイス

/etc/auto.masterの記載例:
/- /etc/auto.direct

/etc/auto.directの記載例:
/mnt/NAS -fstype=cifs,rw,file_mode=0777,dir_mode=0777,username=dora,password=kuma1234 ://192.168.0.123/share

上記例は192.168.0.123のNASのshareというディレクトリを/mnt/NASにマウントする

設定後、「sudo systemcrl enable autofs」でautofsデーモンを有効化する。その後再起動かデーモンをrestartさせる。

0 件のコメント:

コメントを投稿