技術情報
とよぢぃのねっとあっぷ四方山話 第11回
DISのとよぢぃと申します。
『ねっとあっぷ四方山話・ストレージの基礎技術紹介(2)』をお届けします。
基礎技術紹介ではネットアップに限らずストレージやサーバ製品で使われている非常に基本的・基礎的な技術についてご紹介していきます。第一弾として「RAID」についてご紹介させていただきましたが、実はご紹介したのは2025年7月のこと。なんと半年以上も間が空いてしまいました。
しゅ、しゅびばしぇん…
ということで、ものすごく間が空いてしまいましたが、第二弾は「ファイルシステム」ついてご紹介しようと思います。
さて、みなさんはコンピュータを使って仕事をする際に日常的にほぼ無意識に「ファイル」という言葉を使ってますよね。ExcelやWord、PowerPointなどで作ったものはみんな「ファイル」と呼ばれます。
サーバや皆さんが普段使ってるノートPCなんかにはものすごい数のファイルが存在します。
例えば、私が普段仕事で使っているノートPC(LIFEBOOK)はストレージとして256GBのSSDを搭載していて、OSはWindows 11です。
「C:\Windows」と言うフォルダにそのOSであるWindows 11の中心部分が格納されてるので、C:\Windowsフォルダのプロパティを見てみましょう。ストレージの使用量的には
50GB程度ですが、なんと80,000個以上のフォルダと220,000個以上のファイルがあることがわかります。
ちなみに、私の個人フォルダ「C:\Users\とよぢぃ」にはフォルダが約14,000個、ファイルは150,000個以上あって、ディスクの使用量はおおよそ53GBとなってます。自分しか使ってないPCですが、いつの間にこんなに溜めこんだんだっていう感じです。
で、私の個人フォルダにあるファイルとC:\Windowsにあるファイルだけでも合計すると
38万個近いファイルがこの小さいノートパソコン(256GBのSSD)に入ってることになるわけです。
大勢の人が共有して使用しているサーバやストレージだったら一体いくつのフォルダやファイルがあることやら想像つかないですね。
さて、コンピュータの中に格納されているファイルですが、ファイルの内容はもちろん参照できます。でも、その「形」というか「成り立ち」を見ることはできないですよね。そこで、ちょっとコンピュータから離れて「神」、いや「紙」の世界に戻ってみることにしましょう。
いろんな大きさの紙があると話しがややこしくなるので、ここでの紙はA4サイズで1枚の紙に4000文字が書き込めるとします。この紙を何枚かまとめて一つのファイルにするためにバインダーを用意します。一つのバインダーには100枚まで紙を挟むことができるとします。それからバインダーにはそのファイルの名前を書いて保管することにします。要するにバインダーに挟む紙にはそのファイルの内容だけを書いて、名前は紙を束ねるバインダーに付けるということです。それからたくさんのバインダーをしまっておくためのキャビネットもいくつか用意しておきましょう。そぉそぉ、キャビネットにも名前付けておきますか。お客様向けの提案書をしまっておくキャビネットには「提案書」、システムやソフトウェアの設計に使ったファイルをしまうキャビネットには「設計書」、見積りや請求書なんかをしまうのは「経理書類」とでもしておきましょうか。
…
いかがですか。もう、私の言いたいことはなんとなく想像ついてますよね。現実世界とPCって表面上は実は似たような形でファイル管理をしてるんだということです。この表面上の管理もファイルシステムの一部分なんですが、表面上ではないところでコンピュータ
(のOS)はいろいろなことをやってます。どんなことかって? 皆さん、紙が何からどうやって作られてるかなんて、まぁ普通は気にしないですよね。コンピュータでも普通は気にしないんですが、まぁ、ここはちょっと気にしていただいて軽い気持ちで読み進めて頂けるといいかなと思います。
この「紙」に相当するものをコンピュータでは「ブロック」と呼んだりします。
・「ブロック」と言うやつは何からどうやって作られているのか
・「ブロック」をどうやって管理しているのか
・「ブロック」から「ファイル」がどう作られているのか
・等々…
なんていうあたりを管理しているのがファイルシステムの表面上ではない部分になります。
さてと、これからちょいと細かい話しになっていきますよー
コンピュータには通常何らかのストレージが入ってます。ちょっと前だとハードディスク(HDD、Hard Disk Drive)が主流でしたが、今は比較的安価なノートPCとかでもSSD(Solid State Drive)が普通に使われてます。先にも書きましたが、私が普段使っているノートPC(そんなに安価なものではありません)にもサイズこそ256GBとそんなに大きくはありませんが、SSDが積まれてます。HDDやSSDの構造の話しはここではおいておくとして、ドライブ(HDDやSSD)にはデータをしまうための箱がたくさん用意されてます。この箱のことを「セクター」と呼びます。一つのセクターの大きさは512Byteが一般的ですが、4Kbyteなんていう大きいものものもあったりします。ここでは一般的な512Byteで進めることにしましょう。「紙」にあたる「ブロック」はこの「セクター」からできてます。「セクター」は物理的なものですが、「ブロック」は「セクター」いくつかまとめて作る論理的なものになります。なのでブロックの大きさはいろいろです。4KBとか8KBあたりが多いですが、もっと大きな32KBとか64KBなんてのもあります。ブロックの大きさが4KBだとするとそれを構成するセクターは8個(512Byteが8個で4096Byte=4KB)ということになります。一つのブロックがいくつのセクターでできているのか、どのセクターからできているかを管理するのもファイルシステムの役割の一つです。
で、この辺までをざっくりまとめて絵にするとこんな感じになります。ブロックアクセスとファイルアクセスのはざまにいてブロックとファイルの関係性の管理しているのがファイルシステムの一番キモの部分になります。
ちょっと余談ですが、上図でファイルシステムの右側部分の機能を提供しているストレージが俗に言うSAN(Storage Area Network)ストレージで、ファイルシステムまで含めた形のストレージがNAS(Network Attched Storage)と言うことになります。
さて、もっと細かい話し。ファイルシステムにはいろいろなものがありますが、その中身と言うか構造が公開されているUnixやLinuxで古くから使われているinodeベースのファイルシステムを例に説明することにします。
図ではHello.txtと言うファイルがあって、その内容が「こんにちは … バイバイ」であることを示しています。Inode情報の各項目の詳細は割愛するとして、一見するとすごく複雑そうに見えますが、ものすごい数のデータブロックがあって、それらから成る多くのファイルが存在する環境では実はこんな風に管理することで無駄なくストレージ領域を使用することができるんですね。
ちなみに「ディレクトリ(フォルダー)」は普通はファイル(ちょっと特殊な)として実装されていますが、「inodeリスト」や「データブロック群」はストレージ(ディスク)内の特定の領域にまとめて置かれていたりします。ディスクを初期化(フォーマットすると)上図のような感じで各領域がディスク上に配置されたりします。
実際にはもう少し多くの情報がディスク上に置かれますが、まぁ、おおむねこんなところです。で、「スーパーブロック」と言うのはどんなシステムでもディスク上のお決まりの場所に置かれます。ファイルシステムの入り口なので、これを見つけられないとそのファイルシステムをアクセスできないですからね。
さて、「ねっとあっぷ四方山話」なのでネットアップのOSであるONTAPに実装されているファイルシステムの「WAFL」について、少し触れておきましょう。まず、「WAFL」と言うファイルシステムの名前ですが、これは「Write Anywhere File Layout」の略で、日本語にするなら「どこにでも書込めるファイルの並びだよ」とでもなるのでしょうか。また、ONTAPはネットアップが開発した独自OSではありますが、ベースはUnix系のOSです。なので、ファイルシステムであるWAFLも広くUnix系のOSで使われているinodeベースのファイルシステムとなります。
上で、inodeベースのファイルシステムでは「いろいろな領域がディスクの特定の場所に置かれる」と書きましたが、実はWAFLでは
inodeリストなどは特定の場所に置かれるのではなく、WAFL上のファイルとして管理されています。他にも空きブロックの情報なんかも含めてファイルシステムの管理情報(「メタデータ」と呼ばれることが多い)は全部WAFL上のファイルに書込まれています。メタデータを特定の場所に配置するのではなくファイルとしてどこにでも置けるということから「File System」ではなく「File Layout」と呼んでいるのかも知れませんね。
なお、メタデータはシステムにとってきわめて重要なデータですから、WAFL上のファイルではありますが、ユーザがメタデータを格納しているファイルを直接アクセスすることはできません。
今回はストレージにまつわる基礎技術としてファイルシステムをご紹介させていただきました。
次の基礎技術編ではプロトコルについてご紹介しようかと考えてますが…
いつになることやら… ではでは。
