Home

技術系のメモと日々の雑感

Ext4 を試してみる

Fedora 9 では Ext4(ext4dev) がサポートされていると聞いたので試してみることにした。
【お約束】 Ext4 は現在も開発中のファイルシステムなので、ここに書かれていることを試してデータが飛んでも私は一切責任は負えません。

環境は Fedora 9 Live CD。(Kernel 2.6.25-14.fc9.i686)
ブートオプションで ext4 を指定しないといけないという情報もあるけど今回の操作では特に必要なかった。
Ext4 は後方互換性があるので、まずは何も考えずに Ext3 でフォーマットされたパーティションをマウントしてみる。

# mkdir /mnt/sda4
# mount -t ext4dev /dev/sda4 /mnt/sda4
mount: wrong fs type, bad option, bad superblock on /dev/sda4, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so

やはりすんなりとはいかないね。
dmesg が参考になるかもしれないと言っているので素直に従うと

EXT4-fs: sda4: not marked OK to use with test code.

というメッセージが出ていた。
どうやらまるっきりダメということではなさそう。
で、tune2fs の man ページの「-E extended-options」のセクションに

test_fs
    Set a flag in the filesystem superblock indicating
    that it may be mounted using experimental kernel
    code, such as the ext4dev filesystem.

と書かれていたのを思い出したので、このフラグを有効にしてみる。

# tune2fs -E test_fs /dev/sda4
tune2fs 1.40.8 (13-Mar-2008)
Setting test filesystem flag

再度マウントしてみると

# mount -t ext4dev /dev/sda4 /mnt/sda4
# mount ※抜粋
/dev/sda4 on /mnt/sda4 type ext4dev (rw)

今度はバッチリ!
(参考)tune2fs を以下のように実行すればフラグを解除できる

# tune2fs -E ^test_fs /dev/sda4
tune2fs 1.40.8 (13-Mar-2008)
Clearing test filesystem flag


これだけでは何なので、ついでに簡単なベンチマークを取ってみた。
Ext4 を使ういちばんのメリットは大容量のファイルを扱えることらしいけど、自分は利用する予定がないのでそっちは置いといて、小さいファイルを大量に扱うときのパフォーマンスも上がっているという情報があったのでこっちを試してみることにする。
次のような perl のスクリプトでファイルを10万個作ってみた。

#!/usr/bin/perl
use Time::Local;
$start = time;
$cnt=0;
while($cnt<100000){
    open (OUT, ">work$cnt") || die "Open error¥n";
    print OUT "dummytext";
    close (OUT);
    $cnt++;
}
$end = time - $start;
print "time: $end secondsn";
exit;

先に比較対象の Ext3 でやってみる。

# umount /mnt/sda4
# mount -t ext3 /dev/sda4 /mnt/sda4
# cd /mnt/sda4
# /root/filemake.pl
time: 188 seconds

結構時間がかかった。
続いて Ext4。

# cd; umount /mnt/sda4
# mount -t ext4dev /dev/sda4 /mnt/sda4
# cd /mnt/sda4
# rm -f work*
# /root/filemake.pl
time: 192 seconds

あれ?
ほとんど変わってない。
というかむしろ遅くなってるし。
何度かやって平均を取っても大きな変化はなし。
で、ひょっとしたら Ext4 の目玉の「エクステント」が有効になってないからじゃないのかという声がどこかから聞こえてきたけど。
「エクステント」を有効にして Ext3 のパーティションをマウントしてしまうと、もう Ext4 でしかマウントできなくなるらしいんだよねぇ。
迷った挙句、/dev/sda4 は Ubuntu のテスト環境なので壊れてもいいと自分を納得させることにした。

# mount -t ext4dev -o extents,remount /dev/sda4 /mnt/sda4
# mount ※抜粋
/dev/sda4 on /mnt/sda4 type ext4dev (rw,extents)

あ〜、もう後戻りできないよ。
気を取り直して続けよう。

# rm -f work*
# /root/filemake.pl
time: 189 seconds

う〜ん・・・。
変わらないか。
この後も何度かやってみたけどやはり結果は同じだった。
危険を冒してまでトライしたのに、ちょっと残念。
ということで、テスト方法がマズいのかもしれないけど、ベンチマークと言いながら何の情報もないまま終了〜。
ちゃんと Ext4 でフォーマットしたパーティションなら違った結果になるのかなぁ。
ちなみに、この後 /dev/sda4 を Ext3 でマウントしてみたら最初にマウントしたときと同じ「wrong fs type, bad option, bad superblock」というエラーが表示されて、dmesg にも

EXT3-fs: sda4: couldn't mount because of unsupported optional features (40).

と出力されていて、やはり予想通りの結果となってしまった(泣)
今回の Fedora 9 Live CD は別として、e2fsprogs をソースからコンパイルした場合など、エクステントがデフォルトで有効になっていることがあるらしいので、試す人はくれぐれもご注意を。

この記事に対するトラックバック

この記事のトラックバックURL

-

管理人の承認後に表示されます

  • From: |
  • 2013/12/05(木) 18:58:44

-

管理人の承認後に表示されます

  • From: |
  • 2013/12/05(木) 04:56:13

-

管理人の承認後に表示されます

  • From: |
  • 2013/12/04(水) 21:47:34

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/07(木) 08:45:07

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/06(水) 18:56:01

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/06(水) 16:26:02

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/06(水) 09:36:58

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/05(火) 10:50:22

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/04(月) 18:09:51

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/03(日) 02:05:09

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/02(土) 21:56:07

-

管理人の承認後に表示されます

  • From: |
  • 2013/10/18(金) 18:29:37

-

管理人の承認後に表示されます

  • From: |
  • 2013/10/17(木) 20:17:20

この記事に対するコメント

この記事にコメントする

管理者にだけ表示を許可する