NTFSの実装のさわり。
・ACLCacheの実装で、またもや行き詰まった。YB_ACL_UID, YB_LOGINED_UIDを追加しているのだけれど、それがどうAclCacheの、U2Aindexの構築処理、とくに権限リストの展開に関わってくるのかを考え出すと、ぱにくった。
で、ふと、「他の権限管理系の仕組みはどうなってるんだろう?たとえば・・・NTFSとか?(いえ、POSIX ACLでも良いんですけど。)」と思って、まぁ頭がゆであがってしまったのもあり、気分転換にGoogleでちらほら見てみました。
- http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/prork/prdf_fls_mbyy.mspx?mfr=true
- http://www.pcguide.com/ref/hdd/file/ntfs/index.htm
- http://www.ntfs.com/ntfs_basics.htm
- http://journal.mycom.co.jp/column/winxp/054/index.html
一番目はMSの公式サイト。2番目はよく分かんないんだけど、PCのテクノロジーについてまとめているサイトのようです。結構詳しそう。
で、どうも、MFT(Master File Table)というRDBテーブル風味の領域がNTFSフォーマットのボリューム(というのか?)の2番目くらいの領域に確保されてて(1番目はbootstrap)、ここに、ファイルの属性と内容が追記されていくそうです。その中にSecurityDescriptorも含まれるそうです。ファイルのデータすら属性の一部として扱われるみたい・・・。ちなみに、当然、レコードサイズは曖昧ですが1〜数KBまで(クラスタサイズ?)らしく、当然、入りきらないファイルデータの方が多いわけです。そうした場合はファイルの「内容」の属性の値は、実際の「内容」が書き込まれたMFTの外のクラスタを指すようになるそうです。(non-residentな属性、と言うそうです。)
MFTの1レコードに十分はいる大きさの場合はそのままMFTに書き込まれます。これは、residentな属性と言うそうです。
えーっと、つまり、なるほど。総合INDEXみたいなものになっているわけか・・・。
YakiBikiでこれをやる・・・となると、同時多数アクセスの時が危険だ。LOCK絡みでやばい状況になりそう。まぁ、結構細かくファイルが分かれているので、都度読みするしかないかな・・・。