ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

NTFSの実装のさわり。

・ACLCacheの実装で、またもや行き詰まった。YB_ACL_UID, YB_LOGINED_UIDを追加しているのだけれど、それがどうAclCacheの、U2Aindexの構築処理、とくに権限リストの展開に関わってくるのかを考え出すと、ぱにくった。

で、ふと、「他の権限管理系の仕組みはどうなってるんだろう?たとえば・・・NTFSとか?(いえ、POSIX ACLでも良いんですけど。)」と思って、まぁ頭がゆであがってしまったのもあり、気分転換にGoogleでちらほら見てみました。

一番目は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絡みでやばい状況になりそう。まぁ、結構細かくファイルが分かれているので、都度読みするしかないかな・・・。