アフィリエイト広告を利用しています

広告

posted by fanblog

外部journal (ジャーナル)の作成 (ext3, ext4)




ext4でjournal(ジャーナル)を外部デバイスに作成する方法を紹介します。
ext3でもやり方は同様です。 (kenrel: 2.6.39-rc1 e2fsprogs: 1.41.12)


ext3, ext4にはjoural機能があり、不意にシステムがクラッシュしても
データの整合性が保たれます。


特に指定しないかぎり、journalは1つのファイル(inode番号8番)として作成されます。
# 隠しファイルとしてFS上に作成されるため見ることはできません。


余談ですが、inodeは10番までは予約inode番号として確保されます。
また、FS作成時にlost+foundに11が割り振られるので、
実質12番から利用することになります。

10番まではスペシャルinode番号として下記のように定義されいます。



/fs/ext4/ext4.h
#define EXT4_BAD_INO 1 /* Bad blocks inode */
#define EXT4_ROOT_INO 2 /* Root inode */
#define EXT4_BOOT_LOADER_INO 5 /* Boot loader inode */
#define EXT4_UNDEL_DIR_INO 6 /* Undelete directory inode */
#define EXT4_RESIZE_INO 7 /* Reserved group descriptors inode */
#define EXT4_JOURNAL_INO 8 /* Journal inode */




journalは外部に作成する事も出来ます。
journalについてはまた別の機会に説明しますが、journal領域へのI/Oは非常に頻繁に行われます。
外部journalを作成するメリットは、journal領域への書き込み読み込みを
ファイルシステムと分離し、I/O性能の向上を図れるところです。
ストライピングのようなイメージです。


外部にjournalを作成する手順は以下の流れになります。



1. journal用にファイルシステムをフォーマットする
2. ext4 (ext3)をjournalなしで作成する 
3. 1で作成したjournal領域を2のFSに組み込む



1. journal用にファイルシステムをフォーマットする


mke2fsコマンドに-O joural_devオプションをつけて、
journal用にデバイスをフォーマットします。



[root@localhost mnt]# mkfs -O journal_dev /dev/sda5
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
0 inodes, 48828 blocks
0 blocks (0.00%) reserved for the super user
First data block=0
0 block group
32768 blocks per group, 32768 fragments per group
0 inodes per group
Superblock backups stored on blocks:

Zeroing journal device:



以上で、journal用のデバイスが作成されました。
試しにdebugfsでファイルシステムの情報を見ようとすると怒られます。


[root@localhost mnt]# debugfs /dev/sda5
debugfs 1.41.14 (22-Dec-2010)
/dev/sda5: Filesystem has unsupported feature(s) while opening filesystem
debugfs:




dumpfsで強引のファイルシステムの管理情報をみてみます。
journal_devのfeature flagが設定されており、journalデバイスとして作成されていることがわかります。


[root@localhost mnt]# dumpe2fs /dev/sda5
dumpe2fs 1.41.14 (22-Dec-2010)
Filesystem volume name:
Last mounted on:
Filesystem UUID: 3c74ccf4-350a-4009-bca5-bd801318d9d7
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: journal_dev
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 0
Block count: 48828
Reserved block count: 0
Free blocks: 0
Free inodes: 0
First block: 0
Block size: 4096
Fragment size: 4096
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 0
Inode blocks per group: 0
Filesystem created: Sat Apr 9 12:00:36 2011
Last mount time: n/a
Last write time: Sat Apr 9 12:00:38 2011
Mount count: 0
Maximum mount count: 0
Last checked: Sat Apr 9 12:00:36 2011
Check interval: 0 ()
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Default directory hash: half_md4
Directory Hash Seed: 321a2925-9ee4-4b39-8b2c-e0ffa4098ae8

Journal block size: 4096
Journal length: 48828
Journal first block: 2
Journal sequence: 0x00000001
Journal start: 0
Journal number of users: 0






2. ext4 (ext3)をjournalなしで作成する 


1で作成したjournalデバイスを利用するため、ext4(ext3)はjournal無しでmkfsします。
journalはhas_journal機能フラグで有効になるため、あえてhas_journalを無効にして、mkfsコマンドを実行します。



[root@localhost mnt]# mkfs -t ext4 -O ^has_journal /dev/sdb1
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
245760 inodes, 982015 blocks
49100 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1006632960
30 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 0 mounts or
0 days, whichever comes first. Use tune2fs -c or -i to override.







3. 1で作成したjournal領域を2のFSに組み込む

tune2fsコマンドで1で作成したjournalデバイスを2のext4 (ext3)ファイルシステムに組み込みます。


[root@localhost mnt]# tune2fs -o journal_data -j -J device=/dev/sda5 /dev/sdb1
tune2fs 1.41.14 (22-Dec-2010)
Creating journal on device /dev/sda5: done
This filesystem will be automatically checked every 0 mounts or
0 days, whichever comes first. Use tune2fs -c or -i to override.



以上の手順で外部デバイスにjournalを設定し、利用出来るようになりました。
debugfsでjournalのデバイスのUUIDが設定されていることがわかります。

[root@localhost mnt]# debugfs /dev/sdb1
debugfs 1.41.14 (22-Dec-2010)
debugfs: stats
Filesystem volume name:
Last mounted on:
Filesystem UUID: 6f44f603-f061-46da-9702-f6e4840440f1
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype e
xtent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: journal_data user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 245760
Block count: 982015
Reserved block count: 49100
Free blocks: 964661
Free inodes: 245749
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 239
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Flex block group size: 16
Filesystem created: Sat Apr 9 12:07:17 2011
Last mount time: n/a
Last write time: Sat Apr 9 12:08:14 2011
Mount count: 0
Maximum mount count: 0
Last checked: Sat Apr 9 12:07:17 2011
Check interval: 0 ()
Lifetime writes: 61 MB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Journal UUID: 3c74ccf4-350a-4009-bca5-bd801318d9d7
Journal device: 0x0805

Default directory hash: half_md4
Directory Hash Seed: 2d317557-adfa-4d0d-8984-599fdae445c5
Directories: 2
Group 0: block bitmap at 241, inode bitmap at 257, inode table at 273





この記事へのコメント

   

WWW を検索 Linux Blue を検索
プロフィール

uni
仙台でLinuxのエンジニアをしています。 忘備録もかねて主にLinuxについて載せています。 ここからの情報が何かの役に立てば幸いです。
リンク集
Links

<< 2013年01月 >>
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
カテゴリアーカイブ
月別アーカイブ
最新記事
×

この広告は30日以上新しい記事の更新がないブログに表示されております。