SDカード上のGNU / Linuxのファイルシステムの選択


31

SDカードで実行されているARMベースのシステムが組み込まれています。現在、ext3をファイルシステムとして使用しているDebian GNU / Linuxです。私はシステムを再インストールしようとしているので、私はよりフラッシュに優しいファイルシステムへの変更について疑問に思い始めました。JFFS2、YAFFS2、LogFSについて聞いたことがありますが、これらはすべて仕事に適しているようです。どちらをお勧めしますか?また、SSDディスクにより適したext4の改善点がたくさんあると聞いています。ext4を実行しても問題ないと解釈できますか?その場合、特に何を考える必要がありますか?

システムの使用法が重要だと思います。しかし、一般性のために、それが標準のデスクトップのものを実行することを想像してください(実際には小さなARMベースのシステムですが)。

返信いただきありがとうございます。

編集:ウィキペディアリムーバブルフラッシュメモリカードとUSBフラッシュドライブにウェアレベリングとエラー修正を実行するためのコントローラーが組み込まれているため、特定のフラッシュファイルシステムを使用してもメリットがないことを(「要出典」文で)教えてくれます。したがって、私はextファイルシステムに固執することに傾いています。

回答:


18

フラッシュファイルシステムに関するすばらしい記事。

フラッシュファイルシステムについて話すときの重要な質問は次のとおりです。ウェアレベリングとは何ですか。ウィキペディアの記事。基本的に、フラッシュディスクでは、ブロックが悪化するまで、限られた回数だけ書き込むことができます。その後、ファイルシステム(SSDの場合のようにハードウェアに組み込みのウ​​ェアレベリング管理がない場合)は、そのブロックを無効としてマークし、それを使用しないようにする必要があります。

典型的なファイルシステム(ReiserFS、NTFS、ext3など)は、そのような制限がないハードディスク用に設計されています。

JFFS2

圧縮とエレガントなウェアレベリング保護が含まれています。

YAFFS2

  • 違いを生むのは、マウントが成功した後のマウント時間の短縮です。
  • write onceプロパティを実装します。データが1つのブロックに書き込まれると、それを書き換える必要はありません。これは摩耗を減らすので重要です。

LogFS

  • あまり成熟していませんが、すでにLinuxカーネルツリーに含まれています。
  • JFFS2 / YAFFS2よりも大きなファイルシステムを問題なくサポートします。

UBIFS

  • LogFSよりも成熟している
  • 書き込みキャッシュのサポート
  • スケーラビリティについて:記事。大容量ディスクでは、JFFS2よりもパフォーマンスが向上

ext4

ドライバーまたはカード(たとえば、通常は少なくとも通常は内部ウェアレベリングを備えている)がウェアレベリングを処理しない場合、ext4は未加工のフラッシュの使用を目的としていないため、最適なアイデアではありません。

どれが最高ですか?

もちろん、使用法とサポートに依存します。インターネットで読んだものから、UBIFSをお勧めします。大規模ファイルシステムのサポート、成熟した開発フェーズ、適切なパフォーマンス、大きな欠点はありません。


6
おかげで、これは非常に有益です!しかし、UBIFS Webサイトの「大きな赤いメモ」には、「UBIFSを扱う際に理解しなければならないことの1つは、UBIFSは従来のファイルシステムとは大きく異なることです。ブロックデバイス(ハードドライブなど) 、MMC / SDカード、USBフラッシュドライブ、SSDなど)UBIFSは、ブロックデバイスとは無関係のrawフラッシュ上で動作するように設計されています。これがUBIFSがMMCカードなどで動作しない理由です。ハードウェアでFTL(Flash Translation Layer)サポートを実装しているため、外の世界ではブロックデバイスのように見えます。」
gspr

3
いい答えです。さらに、サムスンのF2FSもあります。これも非常に有望なシステムで、まったく新しいものです。
lzap

16
@gsprは正しい:SDにはフラッシュ変換レイヤーがあり、JFFS2、YAFFS2、LOGFS、およびUBIFSはすべて非管理フラッシュ用に設計されています。SDのオプションは、ext2 / ext3 / ext4などの従来のブロックデバイスファイルシステムです。
ロバートカルホーン14年

@Olli NILFS2はSSDドライブに適していますか?
-SebMa

12

私は同じ問題に直面しており、いくつかの研究も行いました。最終的に私はext2で行くことにしました。

一部のSDHCカードは、ハードウェアレイヤーで独自のウェアレベリングを実装しているようです。ウェアレベリング機能を備えたSDHCカードを手に入れることができる場合。

ウェアレベリングを提供するファイルシステムは、フラッシュレベルのウェアレベリングに干渉する可能性があるため、フラッシュがそれらを使用するのは実際には悪い場合があります(上記のIBMの記事では、JFFSがそれを行う方法について説明しているため、それが機能しないことは明らかです)フラッシュレベルWLを使用)。重要なデータを保存していないので、ext3のジャーナリングは必要ないと判断し、通常はとにかく定期的にバックアップします(cron)。

また、/ tmpと/ varをtmpfsとしてマウントして、速度を上げました。十分なRAMがある場合は、それを行う必要があります(ただし、ログを定期的にローテーションまたは削除してください)

ヒント:「noatime」オプションを使用してext SDカードをマウントします


代わりにXFSに切り替えると消えた古いSDカードとext2(データ破損)に問題がありました。
アレクサンダー

1

これがシステムのプロファイルに適合するかどうかはわかりませんが、読み取り専用ファイルシステムと読み取り/書き込みパーティション(または簡単に交換できるusbスティック)を使用するのはどうですか?そうすれば、OS用の高速ディスクを使用でき、rwストレージが使い果たされたときに簡単に交換できます。

そして、ユニオンフがあります。私が理解したように、それはさまざまなファイルシステムを「スタック」します(すなわち、RW fsの上にro fs)。読み取りアクセスがある場合、unionfsは検索するファイルを含むFSにヒットするまでスタックをシークします。unionfsを記述するとき、スタック上の最初の書き込み可能なFSを検索し、それを使用します。

興味深いかもしれないこれらの記事も見つけました:http : //www.linux-mag.com/id/7357/ http://www.linux-mag.com/id/7345/

また、SSDの使用に関するヒントを含む2つの記事:http : //danweinreb.org/blog/using-solid-state-disks-on-linux http://www.zdnet.com/blog/perlow/geek-sheet-a- tweakers-guide-to-solid-state-drives-ssds-and-linux / 9190


1
この答えを否定したのは私ではないことに注意してください。一般的に有用な情報が含まれていますが、必要なものとは関係ありません。とにかくありがとう:)
gspr

0

正しいファイルシステムを選択(およびサイジング)することは、セキュリティだけでなく、人々が通常認識しない他の多くの理由のために、何よりも重要です。ファイルシステムがなければ、すべての処理はnullになります。

Olliの非常に良い反応があり、OPはかなり古くなっていますが、ファイルシステムは、私が留まることができなかった私の最大の問題です。superuser.comは以前にアクセスしたものではなく、管理者ではありませんが、サインアップしてさらにアクセスする予定です。

2011年以降、状況は大きく変わりましたが、当時もUSBカードをFATでフォーマットし、USBドライブを使用して4Gb +ファイルを持ち運びました。もちろん理由はセキュリティではなく互換性でした(SDのSに対しては非常に多く、7zでパスワードを使用します)。CDISOよりも大きなものを実際に実行したことはありませんでした。暗号化されたデータベーススナップショットは、7-Zipによってほぼ死に絶えました。

最近では、私が知っている誰よりも速くSDを使い果たしています。私の雇用主の一部のプロダクションマシンには、1時間ごとに自動化されたフォーマット済みFAT用のUSBスティックがあります。しかし、私は毎日彼らに目を光らせ、そしてあなたが推測したように、それらを手で宗教的にバックアップします(彼らはオフラインで安全なITARのものを構築しています)。SSDは競技場の一部を平準化しましたが、私はまだ通常のHDほどそれらを信頼していません。SDは光学的よりも悪いです。彼らはすぐに悪くなり、損失は合計です。

ホストOSにランダムに書き込みを促すファイルシステム(NTFS、ごみ箱)は、SDにとって悪いニュースです。また、アンマウントは非常に役立ちます.OSはアンマウントされたストレージにアクセスしようとしませんので、SDに自分自身をアンマウントするスクリプトが含まれている限り、どのファイルシステムでも実行されます(私のすべてのSD上の標準ファイルの1つ)。

今日、SDの読み取りはまだ遅いので、ファイルごとではなくミラーリング時にイメージ全体を取得するために、ディスクダンプ(dd)などをお勧めします。ddはまた、何か問題がある場合に通知するので、ファイルマネージャーはkaboomになりません。

もちろん、あなたの主な目的がペニーストックの寿命を延ばすことであるなら、あなたはあなたのビジネスについて間違った方法で行っています。私はSDの寿命を延ばすためではなく、視聴していないときにSDが悪くならないようにするために、違いがあります。

SDでext4やジャーナリングFSを使用するのは避けます。なぜなら、彼らが書き込みを悪くしても気にしないからです。


2
申し訳ありませんが、これは本当に質問に答えません。リムーバブルメディアの使用に関する興味深いエッセイですが、ファイルシステムの選択に関するものではありません。
容疑者

コメントしたかったのですが、できませんでした。投稿は少し冗長です。私が推奨したのは、OPが検討していなかったことで、代わりにFATを推奨しました。私は確かにもっと焦点を合わせて明快に作曲すべきだった。
arch-abit

なぜAny file system which invites the host OS to write randomly to it (NTFS, Recycle Bin) is bad news for an SD.ですか?回転ディスクで構成されていないため、読み取り/書き込みの場所はどこでもかまいません。ところで、NTFSは連続して書き込みを行います。これは断片化につながります。«ファイルのランダムストア»は、たとえばEXTαについてです。
ハイ天使

0

fat(32?)を使用することに対する推奨事項への応答として:いくつかのパフォーマンステストを行った結果、fat32がファイルを書き込むのに非常に予測可能な時間があることがわかりました(2 GBには1 GBの2倍+オフセットが必要で、3 GBには3時間のツリー時間が必要です) 1GB +オフセット)。ext4のパフォーマンスは、ext3よりわずかに優れています。ext3とext4はどちらも高速ですが、ジャーナルファイルをディスクに書き込むために余分な時間が必要な場合があります(線形書き込み時間の動作はありません)。すべてのテストはfsync()で行われ、ファイルが実際にディスクに書き込まれていることを確認しました。sync()でいくつかのテストを実行しました。その結果、書き込みパフォーマンスが非常に悪くなります。そこで、fsync()に戻りました。fsync()で十分かどうかを確認しました。したがって、システムをシャットダウンせずにデバイスの電源を入れるか、マウント解除せずにSDカードを取り外しました。書き込まれたファイルまたはディレクトリ構造が破損したことはありません。

よろしく、トーマス


1
比較は不公平です。非ジャーナリングFATとジャーナリングEXT3 / 4を比較しました。FATとEXT2を比較する必要があります。ちなみに、製造元によって事前にフォーマットされたファイルシステムには、通常、最適なブロックサイズ/オフセットがあります。つまり、ファイルシステムを再フォーマットした後、IOが元のシステムよりも時間がかかる可能性があります。
ハイ天使

0

損失のないSDカードが必要な場合は、次のBTRFS理由で使用することをお勧めします。

BTRFS 2007年にOracleによって最初に作成されたEXTと比較して、新しいファイルシステムです。

従来のファイルシステムに新しい機能をもたらします。

  • クローニング/スナップショット
  • 差分(送信/受信)
  • クォータ
  • 連合
  • 自己回復(デフォルトのコミット期間は30秒)

追加の説明と比較については、このpdfを参照しください

新しい比較については、このサイトを参照しください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.