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をインストールするためのリンクです
それが役に立つことを願っています
0 Daddy Su 2012-08-29