この page は、デフラグがSSDにとって有益であることを示しています。このタイプのデフラグは、ディスクの寿命を延ばすために、トリムを意識する必要があると思います。 Linuxでそれを行うにはどうすればよいですか?
[〜#〜]編集[〜#〜]:コメントはこの記事の内容が疑わしいと指摘しました。
一般に、断片化は完全に無視できます。 HDDのようなシーク時間に悩まされないSSDの場合はさらにそうです。 SSDを最適化しても、書き込みサイクルが無駄になる以外は何も起こりません。
スパースファイルがランダムな順序で書き込まれるなど(一部のBitTorrentクライアントのように)、断片化が顕著な影響を与える極端な場合もありますが、ディスクの空き領域が不足すると、最後に書き込まれたファイルがニーズを満たすために利用できる他の連続したスペースがなかったので、何千ものフラグメントに分割されます。
しかし、それは例外です。通常は発生しません。ほとんどのファイルシステムは断片化を回避するのに非常に優れており、Linuxカーネルは断片化によって引き起こされる悪影響を回避するのに優れています。複数のプロセスが同時にファイルの読み取り/書き込みを行うと、とにかくディスクは一度にどこにでもある必要があります。
Linux用のデフラグソリューションはそれほど多くありません。 XFSにはxfs_fsr
これはうまく機能するので、絶対にデフラグを使用したい場合は、XFSが適しています。
filefrag
またはhdparm
を使用してファイルの断片化を確認できます。
# filefrag debian-6.0.6-AMD64-netinst.iso
debian-6.0.6-AMD64-netinst.iso: 4 extents found
# hdparm --fibmap debian-6.0.6-AMD64-netinst.iso
debian-6.0.6-AMD64-netinst.iso:
filesystem blocksize 4096, begins at LBA 0; assuming 512 byte sectors.
byte_offset begin_LBA end_LBA sectors
0 3003928 3072407 68480
35061760 2872856 2938391 65536
68616192 2171576 2302647 131072
135725056 56259072 56338047 78976
それでも数百または数千のエクステント(フラグメント)が得られない場合は、心配する必要はありません。
一般的な最適化方法は、ファイルのコピーを作成してから、次のように元のファイルを置き換えることです。
cp -a yourfile yourfile.defrag
mv yourfile.defrag yourfile
ファイルシステムには十分な空き領域があるはずです。そうしないと、新しいファイルが古いファイルと同じように断片化される可能性が高くなります。 (置き換える前に、新しいファイルが古いファイルよりも優れているかどうかを確認してください)。
しかし、私が言ったように、ファイルが何らかの形で断片化の本当に悪いケースを取得しない限り、通常これを行う必要はありません。
他の人は、デフレゲーションがSSDに影響を与えないかもしれないと述べています。 (これは古い質問だと思いますが、コンテキストを追加したいと思います。)
同じ議論のより強力なバージョンを進めたいと思います。デフラグの概念はSSDにはまったく意味がありません。 SSDは、フラッシュ内のシーケンシャルブロックにシーケンシャル論理ブロックを書き込みません。スループットを最大化するために、SSDコントローラーは複数のNANDチップ(ミニRAIDのようなもの)にブロックを分散します。
参照: http://www.anandtech.com/show/2829/5
SSDコントローラーは、最高の速度でブロックを書き込む場所と、各フラッシュセルを均等に装着する場所を決定します。したがって、(OSからは)順番に表示される論理ブロックでさえ、実際には完全に異なる順序でNANDに格納されます。これは良いことです。 想定される断片化されているものを最適化するという考えは意味がありません。
記事の著者はスネークオイルを販売しています。完全にランダムなスモールブロック(4k)IOを実行すると、SSDのパフォーマンスが低下することは事実ですが、それ自体がひどく断片化することで悪名高いWindowsファイルシステムでも、実際にはこれは発生しません。 SSDでの断片化の影響は、HDDの100〜1000分の1程度です。 64kごとに導入されたシークは、SSDのスループットにほとんど影響を与えません。 Linuxファイルシステムが実際にはHDD上でもデフラグを必要とするほどひどくフラグメント化されておらず、デフラグの試みによって導入された書き込みがディスクの寿命を縮めるという事実を考慮する場合、それは明らかに避けるべきです。
Ext [234]のデフラグを主張する場合は、古い e2defrag プログラムを使用して行うことができます。
ext4
の場合、デフラグはe4defrag
と呼ばれます。 (現在、公式のe2fsprogsの一部です)。
ext4
と(私が思うに)fstrim
の両方で機能するxfs
コマンドもあります。ファイルシステム上の未使用スペースの破棄要求を送信します。ファイルシステムが-o discard
でマウントされていない場合(つまり、削除されたファイルの破棄をすぐに送信する場合)に特に役立ちます。
これはどれも自動的に設定されません。非常に珍しい場合を除いて、e4defrag
は必要ありません。
TRIMのものはより関連性があります。当時のパフォーマンスストーリーが本当に不明確だったため、デフォルトでオフになりました(つまり、有効にすると大幅に遅くなることがありました)。申し訳ありませんが、これは新しいハードウェアを備えたLinuxです:)。インストール時にdiscard
マウントオプションを有効にする傾向があり、ファイルを削除するときにひどいハングが発生することはありません。 (重要なm500 SSD)。
SSDのレビューを読む場合、100%いっぱいにしないと、ほとんどのレビューが最適に機能します:)。必須ではありませんが、スペースを予約して(10%など)使用されないようにする1つの方法は、デバイスをパーティション分割するときにデバイス全体を割り当てないことです。
フラグメンテーションは書き込み増幅を引き起こすため、SSDには適していません(SSDは、はるかに小さい書き込みのために消去ブロック全体をコピーする必要があります。最近の低品質SSDは最大2MBの消去ブロックになる可能性があります)。デフラグは、セルをかき回して次の書き込みをわずかに速くするだけなので、それほど良い考えではありません(リンクはその点を示しています。フラグメンテーションが悪いからといって、デフラグが優れているとは限りません)。
代わりに、断片化を引き起こさないファイルシステムの使用に焦点を当てる必要があります。 XFS/ext4/Btrfsは、エクステント全体を事前に割り当てます。ログ構造化ファイルシステム(nilfs2、f2fs)も優れています。適切な消去ブロックサイズで設定すると、bcacheもログ構造化ファイルシステムのように動作します。
すべてのHDDメーカーからのユーザーガイドがあり、私はそのようなものを読みました。これは、SSDを最適化するのに良くないアイデアです。 SSDにはHDDのような機械部品はなく、DATAの構成は他のタイプです。 SSDでのデータの検索は異なり、デフラグする必要はありません。頻繁にデフラグを行うと、SSDの寿命が短くなります。例: http://download.intel.com/support/ssdc/hpssd/sb/intel_ssd_toolbox_30_user_guide.pdf リンクが機能しない場合は、Googleの「SSDユーザーガイド」で試す必要があります。ユーザーガイドは、デフラグの必要がないことは明らかです。オペレーティングシステムが何であるかは関係ありません。SSDドライブは同じように動作します。これがこのハードウェアの動作方法です。
あなたが探しているツールはfstrimです。ラップトップ/サーバーの電源をオフにしない場合は、毎日、毎週、または夜間にスケジュールできます。
cat /etc/cron.weekly/01-fstrim
#!/bin/sh
fstrim /
fstrim /home
chmod +x /etc/cron.weekly/01-fstrim
今すぐスクリプトを実行してみてください。エラーメッセージは表示されません。 LUKS構成を変更した場合は、それを行う前に再起動が必要になる場合があります。
http://lukas.zapletalovi.com/2013/11/how-to-trim-your-ssd-in-Fedora-19.html