ファイル/フォルダーのBtrfsデフラグ


9

BtrfsファイルシステムにUbuntu 11.10をインストールしたばかりですが、ファイルのデフラグについて質問したいと思います。

本当にファイルやシステム全体をデフラグする必要がありますか?

デフラグ#btrfsファイルシステムデフラグ/ pool1デフラグ

Btrfsデフラグ


いいえ、btrs、ext4、3、2、ETC ...ドライブをデフラグする必要はありません。他のファイルシステムと同じように、ドライブのデフラグが必要です。
ウリエレーラ

しかし、NTFSとほとんど同じです。
Uri Herrera

回答:


13

Btrfsファイルシステムを手動でデフラグする必要はありません。

はい、BtrfsはCOW(コピーオンライト)であり、Extよりもはるかにファイルを断片化することを意味しますが、これは、オンラインのときにファイルシステムを簡単にデフラグする機能など、設計のいくつかの側面で対処されています。この抜粋は、より詳細を提供します(私のものを強調):

自動デフラグ

COW(コピーオンライト)ファイルシステムには多くの利点がありますが、断片化などのいくつかの欠点もあります。Btrfsは、ファイルが初めてディスクに書き込まれるときにデータを順番にレイアウトしますが、COW設計では、ファイルへの後続の変更は古いデータの上に書き込むことはできず、空きブロックに配置する必要があることを意味します。断片化を引き起こします(RPMデータベースはこの問題の一般的なケースです)。さらに、すべてのファイルシステムに共通する断片化の問題があります。

Btrfsはすでにこの問題に対処するための代替手段を提供しています。まず、コマンドを使用してオンラインでの最適化をサポートしますbtrfs filesystem defragment。第2に、マウントオプションがあり-o nodatacow、データのCOWを無効にします。ここで、btrfsは3番目のオプションである-o autodefragマウントオプションを追加します。このメカニズムは、ファイルへの小さなランダムな書き込みを検出し、自動デフラグプロセスのためにそれらをキューに入れます。そのため、ファイルシステムは、使用中に自分自身をデフラグします。仮想化や大きなデータベースワークロードにはまだ適していませんが、rpm、SQLite、bdbデータベースなどの小さなファイルには適しています。

したがって、データベースのようなIO集中型のソフトウェアを大きな負荷の下で実行する予定がない限り、autodefragオプションでファイルシステムをマウントする限り、問題はありません。

ファイルの断片化をチェックするには、filefragユーティリティを使用できます。

$ find /path -type f -exec filefrag {} + >frag.list
# Now you can use your favourite tools to sort the data

Systemdシステムで/var/log/journal/は、おそらく最も断片化されます。また~/.mozilla、他のブラウザデータベースを確認することもできます。

最適化するには、次を使用します。

$ sudo btrfs fi defrag -r /path

どのようにしてデフラグを知るのか... ...デフラグのステータスを確認するコマンド
One Zero

2
BTRFS wiki:btrfs gotchasによると、この答えは間違っています。ファイルの断片化の問題は、btrfsボリュームでsystemd-journaldを実行することで簡単に再現できます。私はまだテストしていませんが、autodefragオプションはこの問題を解決します。
JonasSchäfer2013年

私はbtrfsを少なくとも18か月間フルタイムで使用していて、systemd、firefoxなどを使用しfilefragています。使用して簡単に確認すると、ジャーナルファイルが実際に非常に断片化されていることがわかります(それぞれ平均10kのエクステント)。パフォーマンスへの影響。私には電源が​​入っautodefragていません。有効にして、次回の再起動時に報告します。
フェリックスSaparelli

そのautodefragため、ファイルの断片化は発生しますが、日常のシステムではパフォーマンスへの影響はせいぜいわずかです。明らかに、負荷の高いサーバーでは測定と調整が必要になる可能性がありますが、これもアルファソフトウェアであるため、とにかくそれを回避する必要があります。
フェリックスSaparelli

find /path -type f -exec filefrag {} + >frag.listFIBMAP unsupportedディレクトリおよびその他の通常でないファイルからのすべてのエラーを回避し、奇妙なファイル名で中断しません。
Peter Cordes

0

このトピックのために、私はそれを明確にする方が良いと思います:

任意のファイルシステム!=リカバリ/管理ユーティリティ

ファイルシステムは物理的なハードウェアでデータがどのように整理されるかに関するものであり、他のすべてのアクティビティは、特にGNU / linuxでは、おそらく誰が作ったのかと厳密には関係のない人々によって行われる追加のソフトウェアとユーティリティで行われることに注意してくださいファイルシステム。

これはおそらくBtrfsの場合とは異なりますが、デスクトップ環境とエンタープライズ環境では、さまざまなグレードの実現可能性を備えたさまざまなソリューションを提供できるため、場合によってはそれに近いこともあります。

あなたの質問への答えは「いいえ」ですが、一般的なファイルシステムの通常の動作に関連する「いいえ」であり、これについて見つけることができるすべてのユーティリティは、単に別のプロジェクトです。

ファイルシステムをデフラグする必要がある場合は、ファイルシステム自体の寿命とはあまり関係のない外部ソフトウェアを使用することに注意してください。すべての長所と短所があります。


0

btrfsファイルシステムをデフラグするコマンドは

btrfs filesystem defragment sync -r -v -f [-czlib] / /home

0

この答えに基づいて私が思いついた:

sudo find / -xdev -type f -exec filefrag {} + | sed -En 's/(.+): (\w+) extent.*/\2 \1/p' | sort -nr

これは、次の形式で、最も断片化されたファイルを最初にリストします。

<num-fragments> <pathname>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.