連載
» 2004年03月30日 00時00分 公開

Linuxファイルシステム技術解説(6):JFSのファイル管理とジャーナリングの実装 (3/3)

[菅谷みどり, 木村浩章, 杵渕雄樹,@IT]
前のページへ 1|2|3       

JFS関連コマンド

 最後に、JFS関連のコマンドを紹介する。

■ファイルシステムの作成

 jfs_mkfsは、パーティションをJFSでフォーマットするコマンドである。

# jfs_mkfs [オプション] <デバイス>

オプション
-c ファイルシステムの作成前にデバイスの不良ブロックを検査
-L <ボリュームラベル> ファイルシステムのボリュームラベルを指定
-s <ログサイズ> ログサイズをMbytes単位で指定。-sオプションを省略した場合、ログサイズは総サイズの0.4%となる。最大32Mbytesまで
-j <ジャーナルデバイス> 外部ジャーナルデバイス()を指定する

デバイス

JFSデバイスファイルへのパス(例:/dev/hdb1)


# jfs_mkfs -L JFS_HDA3 /dev/hda3 ←ボリュームラベルJFS_HDA3で/dev/hda3をフォーマット
jfs_mkfs version 1.1.3、 05-Sep-2003
Warning!  All data on device /dev/hda3 will be lost!
Continue? (Y/N) Y
   |
Format completed successfully.
7166880 kilobytes total disk space.

注:外部ジャーナルデバイスに関しては実験的(Experimental)実装となっている(2004年2月28日現在。JFS for Linux、JFS Utilities Version 1.1.4)。


■ファイルシステムの修復

 jfs_fsckは、JFSフォーマットデバイスを修復する。

# jfs_fsck [オプション] <デバイス>

オプション
-f ファイルシステムが正常でもトランザクションログを再生し、強制的にチェックを実行する。すべての問題を自動的に修復する
-n 読み込みのみでファイルファイシステムを開く。エラーを報告するが、修復は行わない
-v 詳細を出力
-j <ジャーナルデバイス> 外部ジャーナルデバイス()を指定する

デバイス

JFSデバイスファイルへのパス(例:/dev/hdb1)


 /dev/hda3で以下のような問題が検出されたとする。

# jfs_fsck -n /dev/hda3
jfs_fsck version 1.1.1、 17-Dec-2002
The current device is:  /dev/hda3
Block size in bytes:  4096
File system size in blocks:  1791720
Phase 1 - Check Blocks、 Files/Directories、 and Directory Entries.
Phase 2 - Count Links.
Phase 3 - Rescan for Duplicate Blocks and Verify Directory Tree.
Phase 4 - Report Problems.
Phase 5 - Check Connectivity.
Phase 6 - Perform Approved Corrections.
Phase 7 - Verify File/Directory Allocation Maps.
Errors detected in the Fileset File/Directory Allocation Map control
 information.
Errors detected in the Fileset File/Directory Allocation Map. ←エラーの検出
Phase 8 - Verify Disk Allocation Maps.
Incorrect data detected in disk allocation control structures. ←不正なデータ
File system checked READ ONLY.
File system is dirty.
File system is dirty but is marked clean.  In its present state、 the
results of accessing /dev/hda3 (except by this utility) are undefined.

 問題があったディスクをいったんumountして、jfs_fsckで修復する()。

注:修復を行うには、対象となるパーティションがアンマウントされている必要がある。


# umount /dev/hda3
# jfs_fsck -v -f /dev/hda3
jfs_fsck version 1.1.1、 17-Dec-2002
The current device is:  /dev/hda3
(chklog) FSCK  Open(...READ/WRITE EXCLUSIVE...) returned rc = 0

(chklog) FSCK  Primary superblock is valid.

(chklog) FSCK  The type of file system for the device is JFS.

 終了後、再度/dev/hda3を検査する。

# jfs_fsck -n /dev/hda3
jfs_fsck version 1.1.1、 17-Dec-2002
The current device is:  /dev/hda3
Block size in bytes:  4096
File system size in blocks:  1791720
Phase 1 - Check Blocks、 Files/Directories、 and Directory Entries.
Phase 2 - Count Links.
Phase 3 - Rescan for Duplicate Blocks and Verify Directory Tree.
Phase 4 - Report Problems.
Phase 5 - Check Connectivity.
Phase 6 - Perform Approved Corrections.
Phase 7 - Verify File/Directory Allocation Maps.
Phase 8 - Verify Disk Allocation Maps.
File system checked READ ONLY.
File system is clean. ←正常であることが報告される

■ジャーナルログのダンプ

 jfs_logdumpは、JFSフォーマットデバイスのジャーナルログをダンプする。ログは./jfslog.dmpに出力される。

# jfs_logdump [オプション] <デバイス>

オプション

-a すべてのジャーナルログを出力する

デバイス

JFSデバイスファイルへのパス(例:/dev/hdb1)


#jfs_logdump /dev/hda3 ←/dev/hda3のログをダンプ
jfs_logdump version 1.1.3、 05-Sep-2003
Device Name: /dev/hda3
JFS_LOGDUMP: The current JFS log has been dumped into ./jfslog.dmp
# ls -l jfslog.dmp
-rw-r--r--    1 root     root       229363  2月 28 14:41 jfslog.dmp ←jfslog.dmpが生成されている

# head jfslog.dmp ←jfslog.dmpの先頭を表示
JOURNAL SUPERBLOCK:
------------------------------------------------------
   magic number: x 87654321
   version     : x 1
   serial      : x 7
   size        : t 7168 pages (4096 bytes/page)
   bsize       : t 4096 bytes/block
   l2bsize     : t 12
   flag        : x 10200900
   state       : x 0

fsckログの展開

 jfs_fscklogは、指定したデバイスのfsckサービスログを展開・出力する。

# jfs_fscklog [-d] [-e <デバイス>] [-f <ファイル名>] [-p]

オプション
-e <デバイス> <デバイス>のfsckサービスログを展開する
-p 1つ前のログを展開する
-f <ファイル名> 出力ファイル名を指定
-d 最後に展開されたfsckサービスログを表示

# jfs_fscklog -e /dev/hda3 ←/dev/hda3の最新のfsckログを展開
jfs_fscklog version 1.1.3、 05-Sep-2003
XCHKLOG  P superblock is valid. [extract.c:979]
XCHKLOG  Most recent fsck service log extracted into:  fscklog.new
 [extract.c:552]
XCHKLOG  fsck service log selected:  MOST RECENT [extract.c:468]
# ls -l fscklog.new
-rw-r--r--    1 root     root         8192  2月 28 14:37 fscklog.new

JFSのパラメータ設定

 JFSのパラメータは、jfs_tuneで設定する。

# jfs_tune [オプション] <デバイス>

オプション
-l <デバイス> <デバイス>のジャーナルのスーパーブロックコンテンツを列挙する
-L <ボリュームラベル> ボリュームラベルを設定
-J device=<ジャーナルデバイス> 外部ジャーナルデバイスをJFSデバイスに接続
-d 最後に展開されたfsckサービスログを表示

デバイス

JFSデバイスファイルへのパス(例:/dev/hdb1)


# jfs_tune -l /dev/hda3
jfs_tune version 1.1.3、 05-Sep-2003

JFS filesystem superblock:
JFS magic number:       'JFS1'
JFS version:            1
JFS state:              mounted
JFS flags:              JFS_LINUX  JFS_COMMIT  JFS_GROUPCOMMIT
  JFS_INLINELOG
Aggregate block size:   4096 bytes
Aggregate size:         14275568 blocks
Physical block size:    512 bytes
Allocation group size:  16384 aggregate blocks
Log device number:      0x303
Filesystem creation:    Fri Feb 27 16:35:27 2004
Volume label:           'JFS_HDA3'

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。