目標: microSD カードをフォーマットする...
- 最高の書き込みパフォーマンスを得るには
- 組み込みLinux専用
- 信頼性向上のため(ランダムな停電が発生する場合があります)
- 64kBのクラスタサイズを使用
私は組み込み Linux/ARM デバイス内のデータ ストレージに 8GB microSD カードを使用しています。SD カードは取り外しできません。書き込み中のランダムな電源障害にうまく対処できるよう、プリインストールされた FAT32 ではなく ext3 を使用しています。しかし、書き込みパフォーマンスは常に Kingston のプリインストールされた FAT32 で最高であることに気付きました。カードを FAT32 で再フォーマットすると、パフォーマンスは低下します。Wikipedia を閲覧した後、一部のカードは特定のクラスター サイズに最適化されているという次のコメントを見つけました。私の場合、Kingston は 64kB のクラスター サイズにプリフォーマットされています。
SDカードを別のファイルシステムで、あるいは同じファイルシステムで再フォーマットすると、カードの速度が低下したり、寿命が短くなったりすることがあります。一部のカードはウェアレベリングを使用しており、頻繁に変更されるブロックが異なる時間にメモリの異なる部分にマッピングされます。また、一部のウェアレベリングアルゴリズムは、FAT16またはFAT32デバイスのファイルアロケーションテーブルの一般的なアクセスパターンに合わせて設計されています。[60] さらに、フォーマット済みのファイルシステムでは、カード上の物理メモリの消去領域と一致するクラスターサイズが使用される場合があります。再フォーマットするとクラスターサイズが変更され、書き込み効率が低下する可能性があります。
答え1
市販されているほとんどの SD カード (および USB ドライブ) は、FAT32 での使用に最適化されています。他の FS で使用すると、パフォーマンスが低下します。
詳細はライトニング。
答え2
注:SDカードアソシエーションフォーマットツール次のことを行います。
すべてのデバイスについて完全な回答はまだありません。ただし、FAT32 を使用する 8GiB カードについては、次の回答があります。
カードをパーティション分割して、FAT32 パーティションがディスクの先頭から 4MiB のセクター 8,192 から始まるようにします。次に、FAT32 パーティションを 32kiB のクラスターでフォーマットし、FAT32 パーティションのデータ領域 (クラスター 2) が論理セクター 8,192 (またはディスクの先頭から 8MiB (パーティションの先頭から 4MiB)) から始まるように「予約済みセクター」の数を設定します。
Use 32kiB clusters
| 4MiB | 4MiB | remainder of disk |
| ------- | --------------------------------- | ------------------ |
| MBR | First Partition Header + FAT tables | First Partition Data |
要約すると、SD カード協会はこれらの 4MiB 境界を最適化されたゾーンとして推奨しており、これらのサイズのカードのファイル システムとして FAT32 を推奨しています。カード内のコントローラ チップは、2 番目の 4MiB 領域での小さな読み取り/書き込み用に最適化されています。
他にもいろいろありますが、簡単に答えるとすれば、このようになります。上記の方法は、32kiB クラスターの場合は 16GiB 未満のディスク、64kiB クラスターの場合は 32GiB 未満のディスクでのみ機能します。ディスク サイズが大きい場合、データ領域が論理 8MiB に押し出されるのではないかと考えていますが、8GiB を超えるディスクは使用していません。