web-dev-qa-db-ja.com

SSD用にOSを最適化するにはどうすればよいですか?

パフォーマンスを最適化し、ドライブの最大の耐久性を確保するために、ソリッドステートドライブにUbuntuをインストールする前/実行中/実行後に行うべき手順は何ですか?

146
Lars Haugseth

ソリッドステートであろうと従来のドライブであろうと、Ubuntuがストレージデバイスを使用する方法を改善するために、いくつかの異なる技術をうまく使用しました。

SSDの場合は、読み取りによってドライブが摩耗することはないため、ドライブへの書き込み回数も最小限に抑えたいと考えています。

1)スワップファイルの管理

コンピュータを休止状態にせず、すべてのアプリケーションを実行するのに十分なRAMメモリがある場合、理論上はスワップパーティションは必要ありません。

SSDとハードドライブが混在している場合は、スワップパーティションをハードドライブのみに配置してください。

2)読み取​​りタイムスタンプの書き込みなし(SSDおよびハードドライブに適しています)

オプションnoatimeおよびnodiratimeでパーティションをマウントすると、タイムスタンプの書き込みが停止します。あなたはファイルとフォルダを読みます。 muttなどのローカルメールサーバークライアントを使用しない限り、これらのタイムスタンプの書き込みは通常必要ありません。これが一般に悪い考えである理由は、タイムスタンプを更新するときにすべての読み取りが書き込みを生成するためです。これにより、SSDの寿命が短くなります。

/ etc/fstab構成ファイルを編集します(慎重に-fstab構成を壊すとシステムが動作しなくなる可能性があるため、必ずバックアップを取ってください):

cp /etc/fstab ~/fstab-backup
gksudo gedit /etc/fstab

ルート(/)および他のパーティションがある場合は、それらを定義する行にテキストnoatimeおよびnodiratimeを追加して、パーティションのマウントオプションを編集します(/ home)-注:/ homeがある場合パーティション、何かを壊すのが心配な場合は、そのパーティションを変更するだけで始めます

# / was on /dev/sda2 during installation
UUID=587e0dc5-2db1-4cd9-9792-a5459a7bcfd2 /               ext4    noatime,nodiratime,errors=remount-ro 0       1

# /home was on /dev/sda3 during installation
UUID=2c919dc4-24de-474f-8da0-14c7e1240ab8 /home           ext4    noatime,nodiratime,defaults        0       2

これらの変更を有効にするには、マシンを再起動する必要があります

3)OSおよびアプリケーションからの書き込みの最小化

ミッションクリティカルな製品サーバーを実行していないと仮定すると、ほとんどの人は何か問題が発生した場合にログを見ません(特に、ほとんどのUbuntuユーザーにとって深刻なエラーはまれです)。したがって、すべてのログがSSDではなくRAMメモリに書き込まれるようにUbuntuを構成できます。

注:使用するすべてのソフトウェア(特にApache Webサーバーなど)をインストールした場合にのみ、以下の変更を行ってください。そうしないと、/ var/logにディレクトリが見つからないという問題が発生する可能性があります

このアプローチの背景については、 buntu-eee.comのフラッシュドライブの寿命を延ばす をご覧ください。

エディターで/ etc/fstabを開きます(/ etc/fstabファイルをバックアップしたと仮定)

gksudo gedit /etc/fstab

Fstabファイルの最後に次の行を追加して保存します。

# Uncomment these after all server based applications installed - eg. Apache
#tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
#tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
#tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0 
#tmpfs /var/log/apt tmpfs defaults,noatime 0 0
# none /var/cache unionfs dirs=/tmp:/var/cache=ro 0 0

これらの変更を有効にするには、マシンを再起動する必要があります

こちらもご覧ください:

108
jr0cket

SSDの寿命

一般的に私は気にしません-SSDの寿命についての心配は誇張されています。これを読むことができます 本当に心配する必要のない理由に関する詳細な記事 。要するに、最新のSSD内の回路はウェアレベリングを管理し、あなたよりもはるかに優れた方法を知っています。

この記事では、80M/sの連続速度で書き込みを受信して​​いるSSDの寿命を計算しています。寿命は51年です。これは2007年のテクノロジーに基づいています-SSDの寿命は現在より長くなります。また、ほぼ確実に1日24時間80M/sでSSDに書き込むことはありません。

SSDパフォーマンス

ただし、時間の経過に伴うパフォーマンスの低下が問題になる可能性があり、 TRIM が解決策です。 2つのオプションがあります

  • 自動/オンラインTRIM、別名廃棄
  • 手動トリム

自動TRIMを有効にする にする必要があります。 (基本的に、ext4を使用している場合は、discardオプションをマウントオプションに追加します。) ファイルを削除するときに破棄オプションによりシステムの速度が低下する を報告するブログ投稿を見つけました。

fstrim を使用して、手動で(またはcronジョブで)ときどき実行できます。パーティションが1つだけの場合、必要なことは次のとおりです。

Sudo fstrim /

Fstrimは11.10以降でのみ利用可能です。古いシステムでは、wiper.shスクリプトが必要です。システムの/usr/share/doc/hdparm/contrib/wiper.sh.gzでスクリプトを見つけました。

疑問に思っている場合、TRIMが解決する問題は、 Wikipediaによる記述 のように:

SSDはデータをページにグループ化されたフラッシュメモリセルに保存し、ページ(通常は各4 kB)がブロック(通常はブロックあたり128ページ、合計512 kB)にグループ化されます。 NANDフラッシュメモリセルは、空の場合にのみ直接書き込むことができます。データが含まれていると見なされる場合、書き込み操作を確実に実行する前に、まずコンテンツを消去する必要があります。 SSDでは、書き込み操作はページレベルで実行できますが、ハードウェアの制限により、消去コマンドは常にブロック全体に影響します。その結果、SSDメディアへのデータの書き込みは空のページが使用できる限り非常に高速ですが、以前に書き込まれたページを上書きする必要があるとかなり遅くなります。再度書き込む前にページ内のセルを消去する必要がありますが、ブロック全体のみを消去できるため、上書きによって読み取り-消去-変更-書き込みサイクルが開始されます:theブロック全体のコンテンツは、フラッシュメディアで効果的に消去される前にキャッシュに保存する必要があります。その後、キャッシュ内の上書きされたページが変更されるため、キャッシュされたブロックは最新になり、ブロック全体が更新されます)フラッシュメディアに書き込まれます。この現象は書き込み増幅として知られています。

92
Hamish Downer

いくつかのポイントがあります:

アライメント:

しばしば指摘されるのは、パーティションの正しい alignment です。これはSSDのブロックサイズと等しくなければなりません。安全にプレイし、パーティションをMiBの境界に揃えてください。 Ubuntuインストーラーのパーティションツール(MiBではなくMBを使用)でこれを行うことはできませんが、ライブCDを起動し、Gparted(MiBを使用)を使用してから、インストールをクリックして設定したパーティションを使用できます。

正しいスケジューラー:

重要なポイントは、 scheduler wich is should be noopです。このスケジューラーは、カーネルパラメーターelevator=noopまたはrc.localのエントリecho noop > /sys/block/sda/queue/schedulerを介して設定できます。

マウントフラグ:

noatimediscardをお勧めします

Tmpfs

Tmpをramdiskに置くと、ssdの寿命を延ばすことができます。これを使用するには、fstabに次の行を追加します。none /tmp tmpfs defaults 0 0

一般的に、このトピックをより深く掘り下げたい場合は、 this 優れたwiki-articleをお勧めします。

20
Sebastian Rühl

UbuntuでのSSDの高速チューニングコース:

filesystem

Arch wiki mentions SSDファイルシステムに適したオプションはほとんどありません。そのうちの1つは不安定で、他はext*のものです。 ext4が最良の選択の1つだと思います。
注:ext4の場合、discardマウントオプションを使用できます。

fstab

# <file system> <mount point> <type> <options>                                  <dump>  <pass>
proc            /proc         proc   nodev,noexec,nosuid                        0       0
tmpfs           /tmp          tmpfs  nodev,nosuid,noatime,mode=1777             0       0
/dev/sda1       /             ext4   defaults,noatime,discard,errors=remount-ro 0       1
/dev/sda2       /home         ext4   defaults,noatime,discard,user_xattr        0       2
/dev/sda3       /windows      ntfs   defaults,noatime,discard,umask=007,gid=46  0       0

ここで重要なことはほとんどありません:

  • メモリが2以上のシステムでは、RAMに/ tmpを配置することが望ましいです。
  • swapパーティションなし。現代のマシンにはかなりの量のRAMがあるため、今日では休止状態にのみ必要です。
  • noatimeおよびdiscardオプション。情報は こちら です。

スケジューラー

ほとんどのLinuxディストリビューションではcfq(完全に公平なキューイング)であるデフォルトのスケジューラーから、SSDのnoopまたはdeadlineスケジューラーへの切り替えを検討してください。たとえば、noopスケジューラを使用すると、データが物理的にディスク上のどこに存在するかを考慮せずに、要求が受信された順に単純に処理されます。このオプションは、SSDのすべてのセクターでシーク時間が同じであるため、SSDにとって有利であると考えられています。

以下を/ etc/rc.localに追加します。

# SSD performance tuning
echo noop > /sys/block/sda/queue/scheduler

info

12

16

4)自動TRIMを有効にする

SSDがサポートしている場合は、自動TRIMも有効にする必要があります( here で説明)

8
Uli

TRIMを使用すると、オペレーティングシステムはSSDに、使用中と見なされなくなったデータブロックと内部で消去できるデータブロックを通知できます。トリミングにより、SSDはガベージコレクションのオーバーヘッドを処理できるようになります。そうしないと、関連するブロックへの将来の書き込み操作が大幅に遅くなります。1

Ubuntu 14.04では、SSDを定期的に自動トリミングするutil-linuxパッケージに新しい機能が追加されましたが、デフォルトでTRIMが有効になっているのはIntelおよびSamsung SSDのみですなぜなら、いくつかの安価なSSDはTRIMを実行するときに自分自身をブロックすることさえできるからです。2 Ubuntu 14.04の/etc/cron.weekly/fstrimの内容:

#!/bin/sh
# call fstrim-all to trim all mounted file systems which support it
set -e

# This only runs on Intel and Samsung SSDs by default, as some SSDs with faulty
# firmware may encounter data loss problems when running fstrim under high I/O
# load (e. g.  https://launchpad.net/bugs/1259829). You can append the
# --no-model-check option here to disable the vendor check and run fstrim on
# all SSD drives.
exec fstrim-all

1https://en.wikipedia.org/wiki/Trim_%28computing%29
2トリムはどのように有効化されますか?

3
karel

この行をfstabに追加しません。var/ tmpフォルダーは再起動後も存続するためのものであり、問​​題を引き起こす可能性があります。

tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0

新しいシステムを構成するとき、何かが起こった場合、すべてのtmpフォルダーをこの方法でコメント化したままにしておきます。ログなどを確認できます。次に、メインシステムのセットアップが完了したら、コメントを解除しますが、上記の行を追加することはありません。使用するものは次のとおりです。

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0 
tmpfs /var/log/apt tmpfs defaults,noatime 0 0

また、システムに問題がある場合は、それらをコメントアウトして、再起動後またはロックアップ後の強制再起動後でもすべてをチェックできるようにします。

また、nodiratimeは必要ありません。noatimeオプションは両方を自動的に処理します。

TRIMに関しては、もしあなたのhw/swがそれをサポートしていれば、それは必須です、私はfstabでdiscardを使いません。私のPCは常にオンになっているので、次のようにして毎日cronを作成します。

gksu gedit /etc/cron.daily/trim

次に、これをファイルに追加して保存します(ssdに別の/ homeパーティションがない場合、またはssdに他のパーツがある場合は、これを変更する方法を理解する必要があります。

#!/bin/sh
LOG=/var/log/trim.log
echo "*** $(date -R) ***" >> $LOG
fstrim -v / >> $LOG
fstrim -v /home >> $LOG

次に、ファイルを実行可能にします:

Sudo chmod +x /etc/cron.daily/trim

Rc.localも次のように編集します。

gksu gedit /etc/rc.local

これを「出口0」の上と最後の#の下に追加します。

# Modification for SSD
# you may want to add more folders to be checked/created to this list
for dir in apparmor apt ConsoleKit cups dist-upgrade fsck gdm installer news ntpstats samba speech-dispatcher unattended-upgrades; do
  if [ ! -e /var/log/$dir ] ; then
    mkdir /var/log/$dir
  fi
done

ここからコピーして貼り付けることができますので、エラーはありません。

また、ssdドライブの10%を未フォーマットのままにしておくと、寿命を延ばすのに役立つこともあります。私はこれをあまり読みませんでしたので、そうすることが理にかなっているなら保証できません。

これはすべての周りの最高のガイドです、彼は1日間Googleをざっと読んでからガイドを思いついたので、チェックアウトする必要があります HERE

3
JohnRB

Ubuntu、Linux MintのSSDを微調整して最適化する方法については、いくつかの良い情報があります http://namhuy.net/1563/how-to-Tweak-and-optimize-ssd-for-ubuntu-linux-mint .html 興味があるかもしれません

プリロードを使用

Ubuntu、Linux Mint、またはDebianベースのディストリビューションにプリロードをインストールするには

# apt-get update && apt-get install preload

スワップをオフにします

Swappiness設定を変更するには:

$ su -
# nano /etc/sysctl.conf

そして、この行をsysctl.confファイルに追加します。

vm.swappiness = 10
2
Sue Russell

/var/tmpがtmpfsに含まれてはならないことは明らかです。定義により、コンテンツは再起動後も保持する必要があるためです。

2
user95602

わかりました「短い話」:

  1. はい。通常のhddのようなものです。 ここ は概要です。
  2. 私がカバーするいくつかの特別なエキストラ。
  3. 結構いい。サーバーで使用します。

インストール時にext4としてフォーマットし、1 GBまでの小さなスワップを作成します。インストール後、Sudo gedit /etc/fstabを使用してfstabを編集し、次の行を追加します

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0

これにより、一時ファイル用のRAMドライブが作成され、エージングが低下します。また、デフォルトの後にnoatime,nodiratime,discardをext4行に追加します。これにより摩耗も減少し、TRIM機能が有効になります。保存して再起動します。

2
gajdipajti

UPSが必要です。/etc/sysctl.confファイル内

vm.dirty_writeback_centisecs = 15000
vm.swappiness = 10

通常は/etc/syslog.confили/etc/rsyslog.d/の構成ファイルデーモンを見つけ、方法の前にマイナス記号( "-")を書くことで/var/log/形式のすべてのパスを変更します。mail.errの前に

/var/log/mail.err


mail.err -/var/log/mail.err

FS btrfsを使用し、-o ssdオプションを使用します

詳細 http://vasilisc.com/speedup_ubuntu_eng#speedup_fs

buntu、Linux Mint用にSSDを調整および最適化する方法

TRIMを有効にする

TRIM(Trimコマンドは、使用されていないSSDブロックをOSに通知し、クリアできます)

何か問題が発生した場合に備えて、まずfstabをバックアップします。

# cp /etc/fstab ~/fstab.bk

Fstabファイルを編集

# nano /etc/fstab

Ext4の後、ssdドライブまたはパーティションに廃棄を追加します

UUID=bef10b86-494d-41c6-aa46-af72cfba90fd / ext4 discard,errors=remount-ro 0 1
Adding noatime and nodiratime

noatimeとnodiratimeは、Linuxファイルシステム用のLinuxのマウントオプションです。 noatimeはファイルシステムのatime更新を無効にし、nodiratimeはディレクトリシステムのatime更新を無効にします。 noatimeとnodiratimeを追加すると、ssdの負荷が大幅に削減され、パフォーマンスが向上します。

Fstabファイルを編集

# nano /etc/fstab

Ext4の後に、sadドライブまたはパーティションにnoatime、nodiratimeを追加します

UUID=bef10b86-494d-41c6-aa46-af72cfba90fd / ext4 discard,noatime,nodiratime,errors=remount-ro 0 1
1
user223973

起動時に読み込まれるものだけをSSDに配置することをお勧めします。ロードに多くの時間を要するアプリケーションや、通常のHDDにあるデータやログなどの重要ではないもの。ブート時にSSDからの大きなinitramfsであり、ssdへの変更を書き戻しません。これには、このパーティションへの変更が永続的ではないという利点があります。これは、ブートシステムの保護のようなものです。したがって、RAMもちろん。

私は例えばsthのようにSSDにパーティション/、/ etc、/ usr、/ boot、/ lib 32/64を配置します

/ opt、/ bin、/ sbin、/ root、/ home、さらにHDDのスワップ(RAMを増やす!!!)

ウィキペディア 言う:

Linuxカーネルは、バージョン2.6.33以降のTRIM機能をサポートしています。 「discard」パラメーターを使用してマウントされた場合、ext4ファイルシステムがサポートされます。最新のディスクユーティリティ(およびそれらを使用するインストールソフトウェア)も適切なパーティションアライメントを適用します。

バックアップには多くの方法がありますが、最も簡単なのは(r)syncとcronジョブです。

0
Michael K