Linuxカーネルはバージョン2.6.33の時点でTRIMをサポートしているため、ubuntuでTRIMをサポートする必要があります。
TRIMはデフォルトで有効になっていますか、それを機能させるためにいくつかの設定を変更したり、追加のソフトウェアをインストールする必要がありますか?もしそうなら、どのように?
Ubuntu 14.10および15.04では、fstrim
でサポートされるすべてのSSDでTRIMmingが毎週自動的に発生します。
$ tail -n1 /etc/cron.weekly/fstrim
/sbin/fstrim --all || true
15.04以降、Ubuntuはsystemdとそのタイマーを使用します(man systemd.timer
、 Arch wiki )
systemctl list-timers
systemctl status fstrim.timer
Ubuntu 14.04の時点では、Intel、SAMSUNG、OCZ、Patriot、Sandisk SSDの場合、スケジュールされたTRIMはデフォルトで有効になっています。別のブランドがある場合は、無効にすることができます次のコマンドを実行してベンダーチェックを実行します。
sed -i 's/exec fstrim-all/exec fstrim-all --no-model-check/g' /etc/cron.weekly/fstrim
(またはファイル/etc/cron.weekly/fstrim
を編集して--no-model-check
を追加するだけです)
TRIMを実行するには、手動、スケジュール、自動の3つの方法があります。
Ubuntuでは、これは fstrim
で実行できます。
Sudo fstrim /
ただし、以下のセクションで詳述するように、スケジュールされたTRIMまたは自動TRIMが有効になっている場合は必要ありません。
注:Ubuntu 11.04およびそれ以前のシステムでは、fstrimは使用できないため、wiper.sh
は/usr/share/doc/hdparm/contrib/wiper.sh.gz
のhdparm
で提供されます
これは現在推奨されている方法であり、 buntu 14.04のデフォルトごとにアクティブ化されるプレーン です。古いバージョンのubuntu(11.10から13.10)で手動でアクティベートする方法は次のとおりです。
毎週CRONジョブスクリプトファイルを作成します。
gksudo gedit /etc/cron.weekly/fstrim
次のコードをファイルに貼り付けてから、ファイルを保存して閉じます。
#! /bin/sh
# By default we assume only / is on an SSD.
# You can add more SSD mount points, separated by spaces.
# Make sure all mount points are within the quotes. For example:
# SSD_MOUNT_POINTS='/ /boot /home /media/my_other_ssd'
SSD_MOUNT_POINTS='/'
for mount_point in $SSD_MOUNT_POINTS
do
fstrim $mount_point
done
上記では、ルートファイルシステム/
のみがSSDにあると想定しています。 1つ以上のSSDに複数のマウントポイントがある場合は、コードで説明されているように、それらをSSD_MOUNT_POINTS
に追加します。
スクリプトを実行可能にします。
Sudo chmod +x /etc/cron.weekly/fstrim
そして最後にテストします:
Sudo /etc/cron.weekly/fstrim
エラーが表示されない場合、cronジョブは正常に機能しているはずです。
自動TRIMは、Ubuntu 10.10(カーネル2.6.33)以降、EXT4ファイルシステムでサポートされています。ただし、一部のドライブでは、削除のたびにTRIMコマンドをリアルタイムでSSDに送信することで、削除が通常よりもはるかに遅くなることが認識されています。したがって、cronジョブ(上記)を介して毎週スケジュールされたTRIMが推奨されます。
ドライブまたはパーティションで自動TRIMを有効にするには、discard
のfstab
オプションを使用してマウントする必要があります。最初にfstabをバックアップしてから、編集用に開きます。
Sudo cp /etc/fstab ~/fstab-backup
gksudo gedit /etc/fstab
discard
をSSDドライブまたは各パーティションのfstabオプションエントリ(カンマ区切り)に追加します。
UUID=00000000-0000-0000-0000-000000000000 / ext4 discard,errors=remount-ro 0 1
Fstabを閉じて保存し、再起動すると自動TRIMが機能するようになります。
TRIMが機能しているかどうかをテストするには、次のコマンドを発行します( source ):
cd / # Replace with SSD file system
Sudo dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=direct
Sudo hdparm --fibmap tempfile
出力からbegin_LBA
の下の番号をコピーし、SSDのデバイス名を確認します:System->Administration->Disk Utility
sda、sdb、sdc...
以下を実行しますが、[ADDRESS]
(begin_LBA)とsdX
(SSDデバイス名)を上記で取得した詳細に置き換えます。
Sudo hdparm --read-sector [ADDRESS] /dev/sdX
出力は、それらのセクターの長い文字列でなければなりません
Sudo rm tempfile
sync
上記のhdparm
コマンドを繰り返します。
Sudo hdparm --read-sector [ADDRESS] /dev/sdX
ゼロしか得られない場合は、自動TRIMが機能しています。ただし、ファイルを削除した後もセクターが空でない場合は、しばらく待ってからコマンドを再実行してください。
暗号化を使用している場合、ここに投稿されているソリューションは役に立たないことに注意してください。これは、暗号化レイヤーでもTRIMサポートを有効にする必要があるためです。これは、カーネルバージョン3.1以降およびcryptsetupバージョン1.4以降で実行できます。どちらもUbuntu 12.04に含まれています。
LUKS暗号化パーティション用にTRIMを設定するためのガイドを見つけてください here
UbuntuおよびDebianでLUKS暗号化パーティションでTRIMをアクティブにする方法
このステップバイステップのウォークスルーでは、cryptsetup 1.4以上およびカーネル3.1以上の暗号化されたSSDパーティションにTRIMテクノロジーを活用できます。これにより、手間のかからないSSDエクスペリエンスが実現します。
「TRIMを使用すると、SSDがガベージコレクションのオーバーヘッドを処理できるようになります。そうしないと、関連するブロックへの将来の書き込み操作が大幅に遅くなります。」
設定例
SSDを単一ドライブとして使用するノートブック、LinuxはLVMスワップパーティションを持つ単一のext4 LVMルートパーティションにインストールされ、どちらもLUKS暗号化論理パーティション上にあります。
SSD:/ dev/sda
Sudo fdisk -l /dev/sda
/dev/sda1 # boot partition (83) (unencrypted, ext4)
/dev/sda2 # extended partition
/dev/sda5 # logical partition (83) with LUKS encryption
ls /dev/mapper
/dev/mapper/sda5_crypt # encrypted LUKS device in physical /dev/sda5 partition
/dev/mapper/volumegroup-root # rootpartition sda5_crypt
/dev/mapper/volumegroup-swap # swap partition sda5_crypt
HowTo
/ etc/fstabファイル内の暗号化されたLVMボリュームのファイルシステムオプションにdiscardパラメーターを追加します。これにより、LVMパーティションのファイルシステムがTRIMを使用することを認識します。
/dev/mapper/volumegroup-root / ext4 discard,noatime,nodiratime,errors=remount-ro 0 1
ただし、最後の手順では十分ではありません。 LUKSは、TRIMの使用を認識していない限り、セキュリティ上の理由から、LVMパーティションのファイルシステムからのすべてのTRIM操作を効果的にブロックします。/etc/crypttabのcryptdeviceオプションにdiscardパラメーターを追加して、LUKSがLVMパーティションの破棄動作を受け入れるようにします。
sda5_crypt UUID=e364d03f-[...]6cd7e none luks,discard
Initramfsを再構築します。 crypttabオプションはそこに保存され、起動時に使用されます。
Sudo update-initramfs -c -k all
リブート。
TRIMが現在アクティブかどうかを確認します。
Sudo dmsetup table /dev/mapper/sda5_crypt --showkeys
最後のコマンドでこのような結果が表示された場合(最後に1つのallow_discards)、すべて設定されています。
0 77656056 crypt aes-cbc-essiv:sha256 abc[...]c7a0c 0 8:5 2056 1 allow_discards
結果
TRIMがアクティブになります。手間のかからないSSDをお楽しみください!