GNU/Linux >> Linux の 問題 >  >> Linux

SSD で最適に動作する Linux ファイルシステムはどれですか

ファイルシステム EXT4 + TRIM:

  • TRIM を使用した EXT4 は、SSD ドライブへの不要な書き込みサイクルを削減することでパフォーマンスを向上させます。これは、書き込みと再書き込みのサイクルが制限されるためです。
  • Ubuntu およびその他の Linux フレーバーの一部は、追加設定なしで TRIM を使用して EXT 4 をサポートします。

スワップ パーティション:

  • 書き込みサイクルを減らすために、SSD に SWAP スペースがないことを確認してください。
  • 機械式ドライブを使用している場合は、機械式ドライブに SWAP スペースを作成し、SSD には配置しないでください。

パーティションの配置:

  • ファイル システムのブロック サイズが SSD のブロック サイズと一致するように、パーティションはクリーンな 1 MB 境界で開始する必要があります。

EXT4 + TRIM を使用してください 機械式ハード ドライブで SWAP を使用するか、SSD で SWAP を使用しないか。

上記は、出典:SSD のパフォーマンスを最大化する方法を参照することで実装できます。


短い答え

  • ext4 を選択 、そして discard でマウントします TRIM サポートのオプション、または FITRIM を使用 (下記参照)。 noatime も使用してください 「SSDの消耗」が心配な方はオプションを。

  • デフォルトの I/O スケジューラ (CFQ) を変更しないマルチ アプリケーション サーバー 、プロセス間の公平性を提供し、自動 SSD サポートを備えているためです。ただし、デスクトップでは Deadline を使用 負荷がかかった状態での応答性を向上させます。

  • 適切なデータ アライメントを簡単に保証するには、各パーティションの開始セクタを 2048 の倍数にする必要があります。 (=1 MiB)。 fdisk -cu /dev/sdX を使用できます それらを作成します。最近のディストリビューションでは、これが自動的に処理されます。

  • SSD でスワップを使用する前によく考えてください。 HDD でのスワップに比べておそらくはるかに高速ですが、ディスクの消耗も早くなります (これは関係ないかもしれません。以下を参照してください)。

長い答え

  • ファイルシステム:

Ext4 最も一般的な Linux ファイルシステムです (よく管理されています)。 SSD で優れたパフォーマンスを提供し、TRIM をサポートします (および FITRIM) 機能により、SSD の優れたパフォーマンスを長期にわたって維持できます (これにより、未使用のメモリ ブロックがクリアされ、後ですばやく書き込みアクセスできるようになります)。 NILFS 特にフラッシュ メモリ ドライブ用に設計されていますが、ext4 よりも優れたパフォーマンスを発揮するわけではありません ベンチマークについて。 Btrfs はまだ実験的であると考えられています (実際にはパフォーマンスが向上するわけでもありません)。

  • SSD のパフォーマンスと TRIM:

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

ただし、この動作は、パフォーマンスのオーバーヘッドが少しあることを意味します。 Linux 2.6.37 以降、 discard の使用を避けることができます ときどき 一括破棄 することを選択します 代わりに FITRIM を使用します (例:crontab から)。 fstrim -E discard と同様に、ユーティリティはこれ (オンライン) を行います。 fsck.ext4 のオプション .ただし、これらのツールの「最新」バージョンが必要になります。

  • SSD の摩耗:

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

スワップを使用する場合 SSD では、カーネルは非回転ディスクを認識し、スワップの使用をランダム化します。 (カーネル レベルのウェア レベリング):SS が表示されます。 (Solid State) スワップが有効な場合のカーネル メッセージ:

<ブロック引用>

/dev/sda1 に 2097148k スワップを追加します。優先度:-1 エクステント:1 アクロス:2097148k SS

  • I/O スケジューラ:

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

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

カーネル 2.6.29 から、SSD ディスクは自動的に検出されます。これは次の方法で確認できます:

cat /sys/block/sda/queue/rotational

1 を取得する必要があります ハードディスクと 0 の場合 SSDの場合。

現在、CFQ スケジューラは、この情報に基づいて動作を適応させることができます。 Linux 3.1 以降、カーネルのドキュメント cfq-iosched.txt ファイルの内容:

<ブロック引用>

CFQ には SSD に対するいくつかの最適化があり、より高いキュー深度 (一度に進行中の複数の要求) をサポートできる非回転メディアを検出した場合、[...].

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

<ブロック引用>

要求は特定のデータ方向 (読み取りまたは書き込み) の「バッチ」にグループ化され、セクターの昇順で処理されます。

ただし、SSD を使用する場合は、このパラメーターを 1 に調整すると興味深い場合があります:

<ブロック引用>

このパラメータは、リクエストごとのレイテンシと総スループットのバランスを調整します。低遅延が主な関心事である場合は、小さいほど良いです (値が 1 の場合、先着順に処理されます)。通常、fifo_batch を増やすとスループットが向上しますが、レイテンシーの変動が犠牲になります。

一部のベンチマークでは、異なるスケジューラ間でパフォーマンスにほとんど差がないことが示唆されています。では、公平性をお勧めしませんか ? ベンチでCFQが悪いことはめったにないとき .ただし、デスクトップ セットアップでは、通常、Deadline を使用すると応答性が向上します。 その設計により、負荷がかかっている場合 (おそらくスループット コストは低くなります)。

とはいえ、より良いベンチマークは 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"

archlinux の記事 Solid State Drives は、セクション Choice of Filesystem で述べています:

<ブロック引用>

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

Btrfs
Btrfs サポートは、Linux カーネルのメインライン 2.6.29 リリースに含まれています。 ext4 の後継となる可能性のあるこのバージョンをアーリー アダプターとして使用する人もいる一方で、本番環境で使用するには十分に成熟していないと感じる人もいます。詳細については、Btrfs の記事を読むことをお勧めします。

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

Btrfs と Ext4 はどちらも、SSD を効率的に使用するための 2 つの主要な要件を満たしています。

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

パフォーマンスに関しては、他に 2 つの要件があります:

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

1 つ目は、現在、ほとんどの Linux インストーラーで自動化されています。「-cu」フラグを指定して起動すると、fdisk も 1024KB 境界でパーティションを作成します。

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

私の意見では、Ext4 の fstab を少しいじる必要があったからといって、この成熟した優れたファイルシステムを使用しない理由にはなりません。


Linux
  1. Linux – USBドライブにLinuxをインストールする場合、最高のパフォーマンスを得るためにフォーマットするにはどのファイルシステムを使用する必要がありますか?

  2. Linuxのどのコマンド[例で説明]

  3. Swapon に失敗しました:Btrfs ファイルシステムを使用する Linux システムで引数が無効です

  1. 信頼できる5つの最高のLinuxビデオプレーヤー

  2. Linuxでのsudoの8つのベストプラクティス–sudoの推奨事項と禁止事項

  3. ディスクに決してスワップしない固定サイズの Linux ramdisk を作成するには?

  1. バックアップするファイルシステムはどれが最適ですか?

  2. Linux –ポート番号を指定してリモートファイルシステムをマウントする方法は?

  3. Linux でファイル圧縮を使用して ZFS ファイルシステムを作成する方法