DEBUGFS

Section: Maintenance Commands (8)
Updated: February 2012
Index Return to Main Contents
 

名前

debugfs - ext2/ext3/ext4 ファイルシステムデバッガ  

書式

debugfs [ -DVwci ] [ -b blocksize ] [ -s superblock ] [ -f cmd_file ] [ -R request ] [ -d data_source_device ] [ device ]  

説明

debugfs は対話的なファイルシステムのデバッガである。 ext2/ext3/ext4 ファイルシステムの状態の調査・変更に利用できる。
device は、ファイルシステムを含むデバイスに対応する スペシャルファイルである。(例: /dev/hdXX)  

オプション

-w
ファイルシステムを read/write モードでオープンする。 このオプションを指定しない場合は、 ファイルシステムは read-only モードでオープンされる。
-c
ファイルシステムを catastrophic (甚大な破損が起こった場合の) モードでオープンする。 このモードでは inode とグループビットを最初に読み込まない。 これは重度に破損したファイルシステムに対しては有効なことがあるが、 一方このため catastrophic モードではファイルシステムを read-only でしかオープンできない。
-i
devicee2image プログラムによって作成された ext2 イメージファイルであることを指定する。 ext2 イメージファイルは、スーパーブロック・ ブロックグループディスクリプタ・ブロックアロケーションビットマップ・ inode アローケションビットマップ・inode テーブルしか持たないので、 debugfs の多くのコマンドが正しく機能しない。 警告: 安全性のチェックは行わない。 また、 -d オプションによって data_source_device を指定せずに、 ls, dump などのコマンドを実行した場合には debugfs は変な風に失敗するかもしれない。 debugfs はデバッグ用のツールなので、洗練された部分のみであるとは限らない!
-d data_source_device
-i オプションと共に使用され、 読み込みブロックが ext2 イメージファイルに見つからない場合には、 指定された data_source_device が使用される。 このデバイスにはデータ・ディレクトリ・間接 (indirect) ブロックが含まれる。
-b blocksize
通常のように正しいブロックサイズを検出する動作を行わず、 指定したブロックサイズをそのファイルシステムに用いる。
-s superblock
ファイルシステムのスーパーブロックを、プライマリスーパーブロック (ファイルシステムの先頭からオフセット 1024 バイトの位置) ではなく、指定されたブロック数から読み込む。-s オプションを指定した場合、ファイルシステムのブロックサイズを -b オプションで指定する必要がある。
-f cmd_file
debugfs に、 cmd_file からコマンドを読み込ませ、実行させる。 コマンドの実行を終了すると、 debugfs は終了する。
-D
debugfs がデバイスをオープンする際に、バッファキャッシュをバイパスして、ダイレクト I/O を使う。これを書いている時点では、いくつかの Linux デバイス、特にデバイスマッパーはダイレクト I/O をサポートしていない。
-R request
request というひとつのコマンドを実行し、終了する。
-V
debugfs のバージョンを表示して終了する。
 

ファイル指定

debugfs のコマンドの多くは、 debugfs が現在オープンしているファイルシステムにおける inode (パス名ではない) を示す filespec という引数を取る。 filespec には 2 種類の表記法がある。ひとつは、inode 番号を <> で囲む方法である (例: <2>)。 もうひとつはパス名で指定する方法である。 パス名が「/ (スラッシュ)」ではじまる場合、 debugfs が現在オープンしているファイルシステムのルートからの相対パスを表す。 「/」で始まらない場合、カレントワーキングディレクトリからの相対パスを表す。 カレントワーキングディレクトリは debugfscd コマンドによって変更できる。  

コマンド

debugfs がサポートするコマンドの一覧を以下に示す。
blocks filespace
filespec で指定した inode のブロックを標準出力に出力する。
bmap filespec logical_block
filespec で指定した inode における論理ブロック番号 logical_block に対応する物理ブロック番号を表示する。
cat filespec
filespec で指定した inode の内容を標準出力へダンプする。
cd filespec
カレントワーキングディレクトリを filespec で指定したディレクトリに変更する。
chroot filespec
ルートディレクトリを filespec で指定したディレクトリに変更する。
close [-a]
現在オープンしているファイルシステムをクローズする。-a オプションを指定した場合、スーパーブロックとブロックグループディスクリプタに対する変更を、マスタースーパーブロックだけでなく、すべてのバックアップスーパーブロックに書き込む。
clri file
file で指定した inode の内容をクリアする。
dirsearch filespec filename
filename をディレクトリ filespec で検索する。
dump [-p] filespec out_file
filespec で指定した inode の内容を out_file で指定したファイルにダンプする。 -p オプションを与えると、 out_file の所有者 (owner)、所有グループ (group)、パーミッション (permission) を filespec と同じにする。
dump_mmp
複数マウント防止 (multiple-mount protection, mmp) フィールドの値を表示する。
dx_hash [-h hash_alg] [-s hash_seed] filename
filename のディレクトリハッシュを計算する。-h に指定できるハッシュアルゴリズムは "legacy" "half_md4" "tea" である。-s に指定するハッシュシードは UUID 形式でなければならない。
dump_extents [-n] [-l] filespec
filespec で指定した inode のエクステントツリーをダンプする。-n フラグを指定すると、dump_extents はエクステントツリーの内部ノードのみを表示する。-l フラグを指定すると、dump_extents はエクステントツリーのリーフノードのみを表示する。
(内部ノードの最終エクステントのブロックの長さと範囲は、エクステントのライブラリ関数で評価されるだけで、ファイルシステムのデータ構造には格納されていない点に注意してほしい。そのため、表示される値は、ファイルシステムの問題や破損を示すのに充分なほど正確ではない。)
expand_dir filespec
filespec で指定したディレクトリを展開する。
feature [fs_feature] [-fs_feature] ...
スーパーブロックの様々なファイルシステム属性をセット/クリアする。 要求のあった属性をセット/クリアした後は、 ファイルシステム属性の現在状態の一覧を表示する。
filefrag [-dvr] filespec
filespec に含まれる連続するエクステントの数を表示する。filespec がディレクトリで、-d オプションが指定されていない場合、filefrag はディレクトリ内のファイルの連続するエクステント数を表示する。-v オプションを指定すると、filefrag はファイル内の連続するエクステントを表形式で表示する。-r オプションをを指定すると、filefrag はディレクトリを再帰的にリスト表示する。
find_free_block [count [goal]]
goal から始まる最初の count 分の空きブロックを探し、その空きブロックをアロケート (allocate) する。
find_free_inode [dir [mode]]
空き inode を探し、その inode をアロケートする。 dir を指定すると、 これはその inode を置くべきディレクトリの inode と解釈される。 さらに mode を指定すると、 これは新しい inode のパーミッションと解釈される。 (mode にディレクトリであることを指定するビットが立っている場合、 アロケートルーチンの挙動は異なるものになる。)
freeb block [count]
ブロック番号 block をアロケートされていないものとしてマークする。 省略可能な引数 count を指定すると、ブロック番号 block から始まる count 分のブロックをアロケートされていないものとしてマークする。
freefrag [-c chunk_kb ]
現在オープンしているファイルシステムの空きスペースのフラグメンテーション (断片化状態) を表示する。-c が指定されると、filefrag コマンドはファイルシステムにサイズ chunk_kb の空きチャンクがいくつあるかを表示する。チャンクサイズは 2 の乗数で、かつファイルシステムブロックサイズより大きい必要がある。
freei filespec
filespec で指定した inode を解放する。
help
debugfs で利用できるコマンドのリストを表示する。
htree_dump filespec
ハッシュでインデックスづけされたディレクトリ filespec をダンプし、ツリー構造を表示する。
icheck block ...
コマンドラインに与えたブロック (複数指定可) を利用している inode のリストを表示する。
imap filespec
filespec で指定された inode の (inode テーブルにおける) inode データ構造の場所を表示する。
init_filesys device blocksize
device 上に、デバイスサイズ blocksize の ext2 ファイルシステムを作成する。 このコマンドは、すべてのデータ構造を完全に初期化するわけではない。 これをしたい場合は mke2fs(8) プログラムを用いること。 このコマンドは、単にスーパーブロックとブロックディスクリプタを設定する 低レベルライブラリを呼び出すだけである。
kill_file filespec
filespec で指定した inode と、 その inode が使用しているブロックをアロケートから外す (deallocate)。 なお、その inode に対応するディレクトリエントリは削除しないことに注意。 ファイルを unlink したい場合は rm コマンドを参照のこと。
lcd directory
debugfs プロセスのカレントワーキングディレクトリを ネイティブファイルシステム (訳註: 作業対象のものではなく、 debugfs が呼び出され、稼働しているファイルシステム) 上の directory に変更する。
ln filespec dest_file
filespec を指すリンク dest_file を作成する。 この際 inode の参照数 (reference counts) は変更しないことに注意。
logdump [-acs] [-b<block>] [-i<filespec>] [-f<journal_file>] [output_file]
ext3 ジャーナルの内容をダンプする。 デフォルトではジャーナル inode はスーパーブロックで指定される。 しかし -i オプションで上書きすることも可能である。 -i オプションは使用されるジャーナルを指定する inode 指定子を使う。 ジャーナルデータが書かれたファイルは、 -f オプションを使って指定することができる。 そして -s オプションはスーパーブロックにあるバックアップ情報を使って、 ジャーナルをアロケートする。
-a オプションを指定すると、 logdump プログラムは全てのディスクリプタブロックの内容を表示する。 -b オプションを指定すると、 logdump プログラムは指定されたブロックを参照する全てのジャーナルレコードを表示する。 -c オプションを指定すると、 -a-b オプションで選択された全てのデータブロックの内容を表示する。
ls [-l] [-d] [-p] filespec
ディレクトリ filespec 内のファイルのリストを表示する。-l フラグを指定すると、より詳細なフォーマットで表示する。-d フラグを指定すると、ディレクトリ内の削除されたエントリを表示する。-p フラグを指定すると、スクリプトで解析しやすいフォーマットで表示する。加えて、ファイル名の最後にスペースや非表示文字がある場合にも、わかりやすくマークづけする。
modify_inode filespec
filespec で指定した inode にある inode 構造体の内容を変更する。
mkdir filespec
ディレクトリを作成する。
mknod filespec [p|[[c|b] major minor]]
スペシャルデバイスファイル (名前付きパイプ、キャラクタデバイス、ブロックデバイス) を作成する。 キャラクタデバイスおよびブロックデバイスを作成する場合は、 デバイス番号として major および minor を指定しなければならない。
ncheck [-c] inode_num ...
inode 番号のリストを引数とし、inode に対応するパス名のリストを表示する。-c フラグを指定すると、ディレクトリエントリのファイルタイプのチェックを有効にして、inode タイプにマッチするかを確認する。
open [-w] [-e] [-f] [-i] [-c] [-D] [-b blocksize] [-s superblock] device
編集の対象とするファイルシステムをオープンする。 -f フラグをつけると、通 常ではオープンできないような、 不明なファイルシステムや非互換なファイルシス テムでも 強制的にオープンする。 -e フラグをつけるとファイルシステムを排他 モードでオープンする。 -b, -c, -i, -s, -w, -D オプションを 指定した場合の動作は、 debugfs に同名のコマンドラインオプションを指定した 場合と同じである。
punch filespec start_blk [end_blk]
start_blk から end_blk の範囲の inode のブロックを削除する。end_blk を省略すると、切り詰めるためのコマンドとなり、start_blk からファイルの最後までを解放する。
pwd
カレントワーキングディレクトリを表示する。
quit
debugfs を終了する。
rdump directory destination
directory と (通常のファイル・シンボリックリンク・ その他のディレクトリを含む) そのディレクトリの全ての内容を、 destination という名前のディレクトリに再帰的にダンプする。 destination はネイティブファイルシステム上に存在するディレクトリでなければならない。
rm pathname
pathname で指定したパス名を unlink する。 pathname の示す inode が何も参照しなくなった場合には、 ファイルのアロケートを外す。 このコマンドは unlink() システムコールのように動作する。
rmdir filespec
filespec で指定したディレクトリを消去する。
setb block [count]
ブロック番号 block をアロケートされているものとしてマークする。 省略可能な引数 count を指定すると、ブロック番号 block から始まる count 分のブロックをアロケートされているものとしてマークする。
set_block_group bgnum field value
bgnum で指定されたブロックグループディスクリプタを変更し、フィールド field が値 value を持つようにする。
seti filespec
inode ビットマップに、 filespec で指定した inode が使用中であるとマークする。
set_inode_field filespec field value
filespec で指定された inode を変更し、inode フィールド field が値 value を持つようにする。 このコマンドで設定が可能な、正しい inode フィールドのリストは、 set_inode_field -l コマンドによって表示できる。
set_mmp_value field value
複数マウント防止 (multiple-mount protection, mmp) データを変更し、mmp フィールド field が値 value を持つようにする。このコマンドで設定可能な、正しい mmp フィールドのリストは、set_mmp_value -l コマンドによって表示できる。
set_super_value field value
スーパーブロックフィールド fieldvalue にする。このコマンドで設定が可能な、 正しいスーパーブロックフィールドのリストは、 set_super_value -l コマンドによって表示できる。
show_super_stats [-h]
スーパーブロックとブロックグループディスクリプタの内容を表示する。 -h フラグが与えられると、 スーパーブロックの内容だけを表示する。
stat filespec
filespec で指定した inode の inode 構造体の内容を表示する。
testb block [count]
ブロック番号 block がブロックビットマップにおいてアロケートになっているかどうか調べる。 省略可能な引数 count を指定すると、ブロック番号 block から始まる count 分のブロックを検査する。
testi filespec
filespec で指定した inode が inode ビットマップにおいてアロケートになっているかどうか調べる。
undel <inode num> [pathname]
(アングルブラケットで囲って) 指定した inode 番号の削除を取り消す。inodeとそのブロックは、使用中の印がつけられ、オプションとして復旧させた inode を指定したパスにリンクさせることもできる。 削除したファイルを undel コマンドで復旧させた後で、e2fsck コマンドを常に実行すべきである。
多くの削除したファイルを復旧して、inode をディレクトリにリンクする場合、ディレクトリを拡張する必要があり、まだ削除を取り消していないファイルが使っていたブロックを確保してしまう可能性がある。 そのため、inode すべての削除の取り消しをする場合には、リンク先パスを指定せずに実行する方が安全である。そののち、別々のパスで debugfs link コマンドを使って inode をパス名にリンクさせるか、e2fsck を使ってファイルシステムをチェックし、復旧したすべての inode を lost+found ディレクトリにリンクさせるとよい。
unlink pathname
pathname で指定した、ある inode を指すリンクを削除する。 なおこの際、inode 参照数は変更しないことに注意。
write source_file out_file
ファイルシステム内に out_file で指定したファイルを作成し、 source_file の内容をそのファイルにコピーする。
 

環境変数

DEBUGFS_PAGER, PAGER
debugfs はいくつかのコマンドの出力を常にページャプログラムにパイプする。 そのようなコマンドとしては、 show_super_stats, list_directory, show_inode_info, list_deleted_inodes, htree_dump がある。 特定のページャを環境変数 DEBUGFS_PAGER で明示的に指定することができる。 この環境変数が設定されていない場合は、環境変数 PAGER で指定される。
1 つのページャが常に使われるので、 less(1) ページャは特に適さない点に注意すること。 less(1) はコマンドの表示を表示する前にスクリーンをクリアしたり、 ページャが終了するときにスクリーンへの出力をクリアしてしまうからである。 多くのユーザは less(1) ページャをいろいろな目的に使うのを好んでいる。 これが環境変数 DEBUGFS_PAGER で、より一般的な環境変数 PAGER を上書きできる理由である。
 

作者

debugfs は Theodore Ts'o <tytso@mit.edu> が作成した。  

関連項目

dumpe2fs(8), tune2fs(8), e2fsck(8), mke2fs(8)


 

Index

名前
書式
説明
オプション
ファイル指定
コマンド
環境変数
作者
関連項目

This document was created by man2html, using the manual pages.
Time: 18:50:56 GMT, March 26, 2020