by shigemk2

当面は技術的なことしか書かない

ネットワークファイルシステム2 NFSの構造と動作の仕組み #readDaemon

P431

NFSはクライアント・サーバ型のアプリケーション

RPCとXDRのライブラリはオープンソースでライセンスの制限はない

RPC - Wikipedia

XDR - Wikipedia

TDP UDP両方のプロトコルが使える

Transmission Control Protocol - Wikipedia

User Datagram Protocol - Wikipedia

冪等 - Wikipedia (idempotence ラテン語)

inodeを再利用 vnodeはより大きな情報を取得している (inodeと世代番号で一意)

ファイルを削除してすぐ作ったらinodeは再利用される可能性はある

ファイル識別子、inode、世代番号でファイルを識別する

全ページの添付ファイル一覧 - SIGOS

ファイルシステム識別子(ファイルシステムが違うとinodeがかぶる)

識別子はid番号

永続的識別子(ファイルハンドルに永続性が保証される)

ファイルハンドル(inodeと識別子があるから当分かぶることはないよねって話)

NFSはステートレス

ステートレスなので情報は持たない

サーバが受け取るすべてのRPC要求は、それ自体で完結してる。なので、起動したサーバは到着する要求を単純に処理すればいい

サーバは要求の中身だけを見ていればいいので、どのクライアントが要求を出したかを知る必要がない

しかし、状態がわからない

unlink ファイルシステムからは消滅するが、データとしてはディスクの中に残っている

協調ロック プロセスからの明示的な実行要求があったときのみ実行されるロック機構(職質)

あと、スループットが低下する(クライアントからの書き込みを複数回行う必要があるときがある)

字句解析 - Wikipedia

ファイルの末尾に拡大するのではなければ、inodeの確保とかは必要ない

NFS実装は8Kバイトブロックのバッファを使用している

クッキーは、サーバが起動しているあいだ変化せず、サーバの再起動のたびに新しくなることが保証されている

処理するひとつの単位が8キロバイト(上限ではなく、区切り)

UGU: Unix Guru Universe - Rick Macklem

NFC バージョン3

  • アクセスコール
  • リース技術
  • sosend soreceive カーネルの中の関数
  • 接続指向型(TCPのことだろうか
  • デーモンが複数存在する

Client → Server (/etc/exports)

ネットワーク・インフォメーション・サービス - Wikipedia

ポートマップ - Wikipedia

tcp 接続したらつながっている(ストリーム) udp 送りっぱなし(データグラム)

ポート番号の待ち受けとしてのソケット

マウントしたら繋ぎっぱなしにする

ずっとサーバへの要求を繰り返すのがハードマウントで、一定数繰り返したあとにシステムコールを終了させるのがソフトマウント、この2つの他に割り込み可能マウントがある(これは中間解)

輻輳 - Wikipedia

輻輳ウィンドウ - Security Akademeia

フラグメント - Wikipedia

フラグメンテーション - Wikipedia

セキュリティ

セキュリティへの配慮が欠けている

ファイルのデータはネットワーク上で平文で送られる(傍受されたら丸見え)

ケルベロス認証 - Wikipedia