• 締切済み

空き領域の管理の仕組み

linuxのファイルシステム(ext2/3)がどのようにHDDの開き領域を管理しているかに興味があります。 ファイルの削除によってできた断片的なパーティション上の空き空間をどのように管理し、そして新しいファイルのために割り当てているのでしょうか? XFSはB+木を用いているとのことですが、具体的な実装について書かれている記事を見つけられません。例えば何をkeyとして・何をdataとして空き領域を探索しているのでしょうか? ext2/3, xfs, fat等ファイルシステムは問いません。 具体的な仕組みをご存知の方、またそのような解説サイトをご存知の方、アドバイスをお願いします。

みんなの回答

回答No.3

ext2はビットマップで管理していると思っていいんじゃないでしょうか。

参考URL:
http://www.atmarkit.co.jp/flinux/rensai/fs02/fs02b.html
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

使っているかどうかを, ビットマップで持つというファイルシステムはあるはずです. つまり, あるクラスタを使っていれば 1, 使っていなければ 0 とすることで, 「そのクラスタを今使っているかどうか」が簡単にわかる, ってしくみです.

unchikun
質問者

お礼

ビットマップとなると、ある程度の大きさを1つのブロックとして扱い、容量分のビットマップ領域をあらかじめ用意しておくというイメージでしょうか。 こちらの方法であれば断片的な空き空間がつながった場合に認識しやすそうですね(隣り合うビットが連続して00となるだけなので) ご回答ありがとうございます。

回答No.1

Unix全般としては、 「Unixシステムプログラミング」羽山博著(オーム社) の第3章ファイルシステムに、わかりやすく解説されております。 Unixファイルシステム理解のためのキーワードは 「iノード」ですな。 ext2/3も上記方式をモディファイしたものでしょう。 この書物は、今後Unixとつきあうなら、 所有しておいても損はないと思います。 (ひょっとして、改訂版が出ているかも) fatについては 「実用マクロアセンブラ」河西朝雄著(技術評論社) 第7章テクニカル情報にあります。

unchikun
質問者

お礼

ご回答ありがとうございます。 紹介して頂いた著書をさっそく調べてみようと思います。 ところで、質問の投稿後にメモリの空き領域について検索していたら, http://www.ylw.mmtr.or.jp/~trustno1/legos/legos_4.html という記事を見つけました。 空き領域自体をリスト構造でつなげるといったアイデアのようです。 (次の空き領域の位置情報を、その空き領域自体に持たせる) ファイルシステムも同じ方法を取っているかどうかはわかりませんが、思いもしない方法で思わず感心してしまいました。

関連するQ&A

  • USBパーティション分割 EXT3にフォルダ作成

    Linuxがブート可能なUSBを作りたいと試行錯誤しています。 16GのUSBを、FAT32で4Gの領域を設定し、EXT3で12Gの領域を設定しました。 パーティションは、Minitool Partition Wizard Professional や Gparted を使用しています。 FAT32には、システム関係のファイルをコピーしました。 問題は、データ保存用のEXT3にフォルダを作成したいのですが、windows上では、EXT3の領域をドライブとして認識しないため、作成できません。 Linuxのコマンド画面で作成するしかないと思うのですが、この考え方で正しいでしょうか? もしLinux上でEXT3のある場所を探したのですが、分かりませんでした。 どこにあるのかご教示頂けると大変助かります。 どうぞよろしくお願い致します。

  • Linuxファイルシステム用のイメージバックアップ

    Linux OSのシステムイメージバックアップを取りたいと思っております。 ddコマンドを試してみたのですが、空き領域もバックアップされるため、イメージサイズが相対的に大きくなり、圧縮しながらバックアップできないのが難点でした。 以前Windows用ではAcronis True Imageを使っていたのですが、同等のLinux用のツールはありますでしょうか。 具体的には、 - ext2, ext3, ext4, JFS, XFS, ReiserFSなど、Linuxのファイルシステムに対応していること - 圧縮しながらイメージバックアップができること - 空き領域をバックアップに含めるか選択できること - (Live CDなどで)オフラインバックアップができること 可能であればフリーのものがよろしいのですが、ノンフリーでももしご存知でしたらご教示ください。 宜しくお願いいたします。

  • パーティションを切るため空き領域を作りたい

    現在、windows2000が入っているノートパソコを使用しており、HDはCとDの2つに分かれています。今回Dの領域をさらに2つに分けたいのですが「ディスクの管理」画面ではドライブに空き領域がなくパーティションを分けられません。  他のご質問を参照すると  ・パーティションを管理するソフトを使用する。  ・リカバリーの途中でパーティションを作成する。 という方法がありましたが。現在手元にソフトはなくできればwindows上で行いたいと考えています。どのようにすれば空き領域を作成できパーティションを切れるか教えていただきたいのでよろしくお願いします。 パソコン型番:SONY VAIO PCG-XR9F/K HDD: C:\(プライマリパーティション 9.34GB FAT32) D:\(理論ドライブ 9.29GB FAT32)

  • マウントポイントとデバイスのファイルシステムが異なる場合の対処

    ディレクトリAのファイルシステムがext3 フロッピーのファイルシステムがxfs このときfd0をディレクトリAにマウントするにはxfsが適しているのでしょうか?それともext3でしょうか? それともマウント自体が不可能でしょうか?

  • ファイルシステムが「ext4」または「xfs」など

    会社でCGI/perlの会員管理システムをレンタルサーバーに設置することになりました。 使用するCGIは、会員の数だけディレクトリが作成されます。 したがって、1つのディレクトリ内に 32,000個のディレクトリしか配置できないext3ファイルシステムでは会員数は3万2千人でが上限となり非常に困ります。(「.」や「..」が含まれるので実質的には、31,998個が上限) 調べたところ、ほとんどのLinux系のレンタルサーバーは「ext3」というファイルシステムでした。 ファイルシステムの種類を公表していないところがほとんどなので調べるのに苦労します。 当社はサーバー管理者が不在で、root権限付きの専用サーバーを借りてもサーバー構築ができません。 共有サーバーのように手軽に利用できて、ファイルシステムが「ext4」または「xfs」などを採用している専用サーバーはないでしょうか? ・今分かっていること CentOS 5.5からは、ファイルシステムとしてext4が利用できる 「ext4」は64,000個まで可能 「xfs」は2,147,483,647(21億強) 個まで可能

  • リカバリ領域のCD化

    LB-G1000 のリカバリ領域のCD化をしたいのですが、どなたかお教えください。 機種 LB-G1000 現在の状況 内臓HD 160G そのうち、144Gをシステム領域(NTFS)ドライブレター C              そのうち、5.35Gをリカバリ領域(FAT32)             不明なパーティション これは、コントロールパネル>管理ツール>記憶域>ディスクの管理で確認しました。 これを、マイコンピューターで見ると、C ドライブが見えるだけで、リカバリ領域が何も見えません。 ファイルは、拡張子、隠しファイルすべて表示にしてあります。 以上の状況で、このリカバリ領域をCD(DVD)化をして、外付けUSBドライブより、そのCDを使いリカバリできないものかと考えております。 何かいい方法があれば、ご教示願います。 一応、ゴーストは考えてはいるのですが.....

  • Postgresのデータ領域の拡張について

    RHEL4.6にPostgres8.1.11をインストールしています。 データ領域のファイルシステムはext3です。 データ領域の拡張が必要になった場合は、新しくext3の領域を用意しデータ領域を丸ごと移動しなければいけないでしょうか? 以上、よろしくお願いします。

  • 予約済みシステム領域(?)・・デフラグについて

    デフラグがうまく行きません。 「予約済みシステム領域」をなくすことはできないでしょうか? (1)以前、100GBのハードディスクを使っていました。 (2)使用領域が95GBくらいになり、ファイルの断片化がひどくなってきました。空き領域が少ないためか、デフラグもいまいち効きにくくなりました。 (3)そこで、150GBのハードディスクに換装しました(システムもデータもすべて移行)。空き領域は55GBになりました。 (4)その後、Diskeeperでデフラグしたのですが、断片化したファイルがやはり結構残ってしまいます。困った! (5)なんでだろうと思って、ドライブマップを見ると、「予約済みシステム領域」というのが30GBくらい出来て、これが空き領域を圧迫しています。 (6)ヘルプを見ると予約済みシステム領域=「Master File Table の拡張時に使用される領域」と書いてあります。 「予約済みシステム領域」をなくすことはできないでしょうか?

  • 各ファイルシステムの上限ファイルサイズ

    色々調べたのですがわかりませんでした。 以下、各ファイルシステムのファイルサイズ上限をご存知の方、 アドバイスをお願いいたします。 ・NTFS ・FAT32 ・FAT16 ・HFS ・HFS+ ・ext2 ・ext3 ・reiserfs

  • デュアルブート 共通領域の作り方

    Windows(7 Home Premium)とLinux(Fedora 11)のデュアルブートさせ、 両方から見える(使える)、FAT32フォーマットの共通領域を作りたいのですが、パーティションが一杯一杯で作れません。 現在、Winの入っているCドライブと 「SYSTEM」という名の隠しパーティションの二つがあります。 リカバリー領域とメーカー独自の領域はすでに削除しました。 (削除しても大丈夫という確証があったので) Fedora11をインストールさせると 「SYSTEM」「C」「200MBの領域(ブートローダ?)」「Fedora領域」の四つになってしまい、共通領域が作れません。 拡張パーティションにLinuxを入れても大丈夫と聞いたのですが、 実際やってみるとFedoraだけ起動しませんでした。 いい方法とそのやり方を教えてください。