QMAIL3のメールボックスとmicroSDのクラスタ(アロケーションユニット)サイズについて

Windows MobileでQMAIL3のメールボックスを外部メモリ(microSDなど)に置いた時、デフォルトのクラスタサイズが大きいmicroSDでは、メールボックスがやけに大きくなってしまいます。microSDのクラスタサイズを小さくしてみました。すると、クラスタサイズによる容量オーバーヘッドは解決したのですが、書き込み速度が遅くなってしまいました。そのことを書いておきます。

QMAIL3のメールボックスを外部メモリに置く方法は、ドキュメントに詳しく書かれています。外部メモリに置くことで、内蔵メモリを節約できます。

Windows CEで外部ストレージに実行ファイルやメールボックスを置くとハングアップします@QMAIL3

さて、willcom03でQMAIL3lを使い始めて1年くらい経ったのですが、最近メールボックスが妙にメモリを食っていることが分かりました。メールの実質的なデータは7.19MBなのに、100MB近く消費してしまっています。メールの数は3000通くらい。microSDは東芝の8GBのものです。

これは、microSDのクラスタ(アロケーションユニット)サイズが大きいことが原因です。QMAIL3では、外部メモリにメールボックスを置くためには、1メール1ファイルとしなくてはなりません。「今からかえるよー」みたいな一言メールなどは、500byte程度のテキストファイルなのにもかかわらず、クラスタサイズ分の領域を消費してしまいます。東芝の8GB microSDのデフォルトのクラスタサイズは32kBのでした。32kB×3000通≒100MBでおおよそつじつまがあります。

microSDをmicroSD-USB変換器でPCに接続してみました。変換器は100円で秋葉原の路上に売られています。そしてまずデータをPCに待避してから、SDFormatterでフォーマットしてみます。このプログラムではクラスタサイズは設定できないみたいです。

フォーマットをしてみると、

だめです。クラスタサイズが32kBにされてしまいます。仕方が無いので、コマンドプロンプトで、やってみました。

D:\>help format
Windows XP で使うディスクをフォーマットします。

FORMAT ボリューム [/FS:ファイルシステム] [/V:ラベル] [/Q] [/A:サイズ] [/C][/X]
FORMAT ボリューム [/V:ラベル] [/Q] [/F:サイズ]
FORMAT ボリューム [/V:ラベル] [/Q] [/T:トラック数 /N:セクタ数]
FORMAT ボリューム [/V:ラベル] [/Q]
FORMAT ボリューム [/Q]

  ボリューム      ドライブ文字 (文字の後にはコロンを付ける)、マウント
                  ポイント、ボリューム名を指定します。
  /FS:ファイルシステム
                  ファイルシステムにはファイルシステムの種類を指定します
                  (FAT、FAT32、または NTFS)。
  /V:ラベル       ボリューム ラベルを指定します。
  /Q              クイック フォーマットを実行します。
  /C              NTFS のみ: 新しいボリューム上に作成されたファイルは、
                  既定では、圧縮されます。
  /X              必要であれば、最初にボリュームを強制的にマウントを解除
                  します。ボリュームへ開かれているすべてのハンドルは、無効
                  になります。
  /A:サイズ       既定のアロケーション ユニット サイズを無効にします。
                  一般的には、既定の設定を使用してください。
                  NTFS は、512、1024、2048、4096、8192、16K、32K、64K を
                  サポートします。
                  FAT は、512、1024、2048、4096、8192、16K、32K、64K を
                  サポートします
                  (セクタ サイズが  512 バイトよりも大きい場合は 128K、 256K)。
                  FAT32 は、512、1024、2048、4096、8192、16K、32K、64K を
                  サポートします
                  (セクタ サイズが  512 バイトよりも大きい場合は 128K、 256K)。

                  FAT と FAT32 ファイル システムは、下記のボリュームの
                  クラスタ数の制限に従います:

                  FAT: クラスタ数 <= 65526
                  FAT32: 65526 < クラスタ数 < 4177918 
                  指定されたクラスタ サイズを使用して、上記の要件に一致しない
                  と判断した場合、フォーマットの処理を直ちに停止します。
                  NTFS 圧縮は、4096 より大きいアロケーション ユニット サイズ
                  に対してはサポートされません。
  /F:サイズ        フォーマットするフロッピー ディスクのサイズを指定します (1.44)
  /T:トラック数     ディスクの片面あたりのトラック数を指定します。
  /N:セクタ数      トラックあたりのセクタ数を指定します。
D:\>format E: /FS:FAT32 /A:1024
新しいディスクをドライブ E: に挿入してください
準備ができたら Enter キーを押してください...
ファイル システムの種類は FAT32 です。
検査しています  7589M バイト
指定されたクラスタ サイズは FAT32 には小さすぎます。

1024は駄目みたい。2048でやってみる。

D:\>format E: /FS:FAT32 /A:2048
新しいディスクをドライブ E: に挿入してください
準備ができたら Enter キーを押してください...
ファイル システムの種類は FAT32 です。
検査しています  7589M バイト
ファイル アロケーション テーブル (FAT) を初期化しています...
ボリューム ラベルを入力してください。
(半角で 11 文字、全角で 5 文字以内)
必要なければ、Enter キーを押してください:
フォーマットは完了しました。
    7,741,108 KB : 全ディスク領域
    7,741,106 KB : 使用可能ディスク領域

        2,048 バイト : アロケーション ユニット サイズ
    3,870,553 個     : 利用可能アロケーション ユニット

           32 ビット : FAT エントリ

ボリューム シリアル番号は 203A-4D4E です

OK。できました。

メールボックスを戻して見てみると、ディスク上のサイズが10.7MBになりました。これくらいならば問題ありません。当初は実使用量の10倍以上を食っていました。

ところがここで問題発生。書き込みが体感的に遅くなってしまいました。ただ、さすがに、実使用量の10倍以上の容量を消費するのは許しがたいので、しばらくこのまま使ってみます。今度詳しく測ってみようと思います。

QMAIL3は、Windows Mobile環境ではとっても快適です。ドキュメントもしっかりしていて、安心できます。これがフリーってすごいです。

コメント / トラックバック1件

コメントをどうぞ