Chienomi

USBメモリーとF2fs

ソフトウェア

USBメモリーが600MB以上かけない、という症状が生じていた。結局はWindowsで書いてみたところ不安定ながら動作したが、その後Ext3でフォーマット、F2fsでフォーマットとした。

F2fsは実装はLinux kernel内にあるため、操作するためのツールがあれば利用できる。ツールが用意されているものはあまり多くないようだ。ツールが用意されていないディストリビューションの場合、

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git

あとは

$ autoreconf --install $ ./configure $ make $ sudo make install

これで利用可能。ファイルシステムの作成は単純にmkfs.f2fsで行える。また、パーティションIDの設定も兼ねてGpartedで操作すればf2fsの作成も可能になる。

F2fsの性能についてはまだ不明だ。だが、先日のLinuxConでは「フラッシュストレージ用ファイルシステム」が話題になっていた。フラッシュメモリは一種のデータベースで管理する必要があり、それは既存のHDD向けファイルシステムとは全く異なる要件である、という話だったと思う。そのため、既存のファイルシステムの拡張ではなく、新しいファイルシステムが必要なのだと。

フラッシュストレージ用ファイルシステムというのは既にいくつかある。Btrfsがフラッシュストレージ向けだというような話だったが、実際はもっと汎用設計になっている。ある意味、中途半端になってしまったともいえる。それに対して、続々出てきている新しいフラッ社ストレージ用ファイルシステムは完全にフラッシュメモリ専用で、フラッシュメモリの特性に合わせてI/Oを行う。これらはカーネルのI/O機構を利用したくないという話だし、実際に利用していないのかもしれない。フラッシュストレージ用ファイルシステムの動作は複雑で、従来のファイルシステムほど簡単には説明できない。ただし、基本的な部分ではウェアレベリングと配置をバラバラのままにするというのがフラッシュストレージ用ファイルシステムというのだろう。

そのようなフラッシュストレージ用ファイルシステムは今後さらに増え、また成熟してくるだろう。現在のところWindowsで一般的なフラッシュストレージ用ファイルシステムというのはなく、FAT32, exFAT, NTFSでこなしているが、将来的にはやはりWindowsもなんらかフラッシュストレージ用ファイルシステムを採用せざるをえないだろう。その時、現在はF2fsをWindowsで使うことは非常に難しいが、今後AndroidがF2fsを採用する可能性が高く、F2fsはかなり普及しそうなのでWindowsとしてもOSでF2fsをサポートせざるをえないのではないかという気がする。

本当は個人的にはF2fsよりもLogFSが気になっていたのだが、情報が少なく、なかなか茨の道と感じた。実装はカーネルにあるが、logfs-toolsが見つからない。ドキュメントも大体が2007年のものであまり現状がわからないので、やはり普及せずに終わったのだろうか、という感じがする。明らかに成功しているのはF2fsであるようにも思える。