SSDで最もよく動作するlinuxファイルシステムは?

filesystems linux ssd

From wiki:

肝心の TRIM 機能は、2.6.33 カーネル (2010 年初頭に利用可能) から Linux OS でサポートされています。しかし、様々なファイルシステム間でのサポートはまだ一貫性がなかったり、存在しなかったりします。また、適切なパーティション調整もインストールソフトウェアでは行われていません

そこで、どのファイルシステムがSSDに最適に動作し、インストール時にtrim +パーティションアライメントをサポートし、Ubuntuで利用可能なのでしょうか?

  124  hbt  2011-01-03


ベストアンサー

Short answer

  • ext4 を選択し、TRIM サポートの discard オプションでマウントするか、FITRIM (下記参照) を使用します。また、”SSD の磨耗 “が心配な場合は、noatimeオプションを使用してください

  • 複数のアプリケーションサーバ上でデフォルトのI/Oスケジューラ(CFQ)を変更しないでください。しかし、デスクトップではDeadlineを使用して、負荷がかかったときの応答性を向上させてください

  • 適切なデータアライメントを簡単に保証するために、各パーティションの開始セクタは2048(=1MiB)の倍数でなければなりません。fdisk -cu /dev/sdXを使って作成することができます。最近のディストリビューションでは、自動的にこの処理を行ってくれます

  • SSDでスワップを使う前によく考えてみてください。HDD上でのスワップと比較すると、おそらくかなり高速になると思いますが、ディスクの消耗も早くなります(関係ないかもしれませんが、後述)

Long answer

  • Filesystems:

Ext4 は最も一般的な Linux ファイルシステムです (よくメンテナンスされています)。それはSSDとの良好なパフォーマンスを提供し、TRIM (およびFITRIM)機能をサポートしており、時間が経過しても良好なSSDのパフォーマンスを維持します (これは、後で素早く書き込みアクセスするために未使用のメモリブロックをクリアします)。NILFS は特にフラッシュメモリドライブ用に設計されていますが、ではありません 本当に ベンチマーク上では ext4 よりも性能が良いです。Btrfs はまだ実験的なものと考えられています(どちらでもいいというわけではありません

  • SSDの性能&TRIM

TRIM機能は、ファイルシステムで使用されなくなったSSDブロックをクリアします。これは長期的な書き込みパフォーマンスを最適化するもので、その設計上、SSDでは推奨されています。つまり、ファイルシステムがそれらのブロックについてドライブに伝えることができなければなりません。ext4のdiscardマウントオプションは、ファイルシステムのブロックが解放されると、そのようなtrimコマンドを発行します。これがオンライン破棄です

しかし、この動作は若干のパフォーマンスオーバーヘッドを意味します。Linux 2.6.37以降では、discardの使用を避け、代わりに(例えばcrontabから)FITRIMを使ってバッチ廃棄を行うことができます。fstrimユーティリティは、fsck.ext4-E discardオプションと同様に(オンラインで)これを行います。ただし、これらのツールの “最新版 “が必要です

  • SSD wear:

SSDはこの点では寿命が限られているので、ドライブへの書き込みを制限したいと思うかもしれません。しかし、あまり心配しないでください、今日の最悪の128GBのSSDは、5年以上(セルあたり1000回の書き込みサイクル)、1日あたり少なくとも20GBの書き込みデータをサポートすることができます。より良いもの(また、より大きなもの)は、はるかに長持ちすることができます:あなたは非常におそらくそれまでにそれを交換しているでしょう

SSD でスワップを使用したい場合、カーネルは回転しないディスクに気付き、スワップの使用をランダムにします (カーネルレベルの摩耗のレベリング): スワップを有効にすると、カーネルメッセージに SS (Solid State) が表示されます

dev/sda1に2097148kスワップを追加。優先度:-1 extents:1 across:2097148k SS

  • I/O Schedulers:

また、私は aliasgar の回答のほとんどに同意しますが(たとえそのほとんどが このウェブサイト から -違法にコピーされたものであっても)、スケジューラの部分については部分的に同意できません。デフォルトでは、エレベータアルゴリズムを実装しているため、デッドラインスケジューラは回転ディスクに最適化されています。そこで、この部分を明確にしておきましょう

スケジューラーに関する長文回答

カーネル2.6.29からSSDディスクが自動的に検出されるようになりました

cat /sys/block/sda/queue/rotational

ハードディスクは1を、SSDは0を用意した方がいい

これで、CFQスケジューラはこの情報に基づいて動作を適応させることができるようになりました。linux 3.1 以降、カーネルのドキュメント cfq-iosched.txt ファイル は次のように述べています

CFQは、SSDのためのいくつかの最適化を持っており、それはより高いキューの深さをサポートすることができます非回転メディアを検出した場合(一度に複数のリクエストを飛行中に)、[….]

また、Deadline スケジューラは、セクタ番号に基づいて、回転ディスク上の無秩序なヘッドの動きを制限しようとします。カーネルドキュメント deadline-iosched.txt, fifo_batch オプションの説明 を引用します

リクエストは、特定のデータ方向(読み取りまたは書き込み)のバッチにグループ化され、セクタ順に処理されます

しかし、SSDを使用する場合は、このパラメータを1にチューニングすると面白いかもしれません

このパラメータは、リクエストごとのレイテンシとアグリゲートスループットのバランスを調整します。低レイテンシが第一の関心事である場合、小さい方が良いでしょう (値が 1 の場合、先着順の動作になります)。fifo_batch を増加させると、一般的にスループットが向上しますが、レイテンシの変動を犠牲にします

いくつかの ベンチマーク suggest that 異なるスケジューラ間での性能差はほとんどありません。ならば、フェアネスを推奨してはどうだろうか? CFQがベンチで悪いことはほとんどないのに。しかし、デスクトップのセットアップでは、通常、その設計のために、負荷がかかっているデッドラインを使用して、より良い応答性を体験することができます(おそらく、より低いスループットコストではありますが)

つまり、より良いベンチマークは、fifo_batch=1でDeadlineを使ってみてください

SSDでDeadlineをデフォルトで使用するには、以下のように/etc/udev.d/99-ssd.rulesというファイルを作成します

# all non-rotational block devices use 'deadline' scheduler
# mostly useful for SSDs on desktops systems
SUBSYSTEM=="block", ATTR{queue/rotational}=="0", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="deadline"

74  Totor  2013-02-12


ファイルシステムEXT4 + TRIM

  • EXT4 with TRIMは、書き込み・書き換えサイクルを制限しているため、SSDドライブへの不要な書き込みサイクルを減らすことでパフォーマンスを向上させます
  • Ubuntuや他のいくつかのLinuxフレーバーは、ボックスの外にTRIMを使用してEXT 4をサポートしています

SWAP Partition:

  • SSD上にSWAPスペースがないことを確認し、書き込みサイクルを減らすために再度確認します
  • 機械式ドライブを持っているのであれば、機械式ドライブにSWAPスペースを作って、SSDに持たないようにした方が良いでしょう

Partition Alignment:

  • ファイルシステムのブロックサイズが SSD のブロックサイズと一致するように、パーティションはクリーンな 1MB の境界で開始してください

なので、機械式ハードディスクにSWAPを入れてEXT4+TRIMを使うか、SSDにSWAPを入れないか

上記はソースを参照することで実装できます。SSDのパフォーマンスを最大化する方法を参照してください

92  aliasgar  2012-08-30


archlinux の記事 ソリッドステートドライブ には、ファイルシステムの選択 のセクションで次のように書かれています

Ext2/3/4、Btrfsなどのファイルシステムには多くのオプションが存在します

Btrfs Btrfs のサポートは Linux カーネルのメインライン 2.6.29 リリースに含まれています。一部の人たちは、プロダクションでの使用には十分に成熟していないと感じていますが、一方で ext4 の後継となる可能性のあるこのサポートを早期に採用している人たちもいます。ユーザーは Btrfs の記事を読むことをお勧めします

Ext4 Ext4もSSDをサポートしているファイルシステムです。2.6.28 以降は安定していると考えられており、日常的な使用には十分に成熟しています。Btrfs とは異なり、ext4 はディスクの性質を自動的には検出しません。fstab の discard mount オプションを使って明示的に TRIM コマンドを有効にする必要があります (または tune2fs -o discard /dev/sdaX)

Btrfs と Ext4 の両方が、SSD を効率的に使用するための 2 つの主要な要件を満たしています

  • ファイルシステムは、基盤となるSSDに対してATA_TRIMコマンドを発行できる必要があります
  • ファイルシステムは、ディスクへの不要な書き込みを行ってはいけません

性能については、他に2つの要件があります

  • パーティションはSSDのブロックサイズに合わせる必要があります
  • TRIM は、Ext4 フォーマットされたパーティションごとに明示的に有効にする必要があります

最初のものは、最近ではほとんどの Linux インストーラで自動化されています。 fdisk は “-cu” フラグで起動した場合、1024KB の境界にパーティションを作成します

2 つ目は Btrfs の場合は自動的に行われますが、Ext4 の場合は手動で “/etc/fstab” ファイルの各 Ext4 パーティションのマウントオプションのリストに “discard” を追加することで行われます。詳細は howto を参照してください

私の意見では、これは、この成熟した優れたファイルシステムを使用しない理由ではないExt4のためのfstabを少しいじくり回す必要がありました

14  harrymc  2012-08-30


BTRFS IMO。Ubuntu 8.04以降では、GPTを意識したGRUBのバージョンが含まれています。GPTとGdiskを使えば、パーティションの位置合わせをしてくれます。私はfdiskがそれを行うと信じています

とにかく、ここでは、BTRFSファイルシステムにUbuntuをインストールするためのリンクです

301 Moved Permanently

それが役に立つことを願っています

0  Daddy Su  2012-08-29


タイトルとURLをコピーしました