Linuxでext4 + LVM +ソフトウェアRAIDでSSD TRIM(破棄)を動作させることは可能ですか?


18

Linux(現在2.6.37)上のmdでRAID1 + 0を使用してmdデバイスを作成し、LVMを使用してデバイス上でボリューム管理を提供し、次にext4をLVMボリュームグループのファイルシステムとして使用します。

SSDをドライブとして、TRIMコマンドがレイヤー(ext4-> LVM-> md-> SSD)を介してデバイスに伝播することを確認したいと思います。

最近の2.6.3xカーネルには、Device Mapperシナリオのより多くのカバレッジを含む、多くの新しいSSD関連のTRIMサポートが追加されたように見えますが、それを適切にカスケードダウンさせることはまだできないようです。

これはまだ可能ですか?もしそうなら、どのように?そうでない場合、何か進展がありますか?


更新を参照してくださいserverfault.com/a/229486/67675 :)
poige

回答:


7

Linux Soft RAIDはこれをサポートしていません(まだ?)

UPD。:教えてくれたWodinに感謝します— lkml.org/lkml/2012/3/11/261によると、この機能が最近追加されました。提案!= 受け入れられましたが。


それでもこの回答を
差し引く

3
今はそうです。 lkml.org/lkml/2012/3/11/261
Wodin

@Wodin、提案された変更は3.5でも見つかりません。彼らは受け入れられていないようです。
poige

14

2.6.37の時点で、それは存在しているはずです(ソース。カーネルはバックグラウンドでそれを行いません。ブロック破棄プロセスは現在オンデマンドで実行されるように設計されています(cronスクリプト!)。Dm-cryptサポートはまだ存在しません。

2011年1月13日、dm-raid1.cにパッチがマージされました。

dm raid1: support discard

Enable discard support in the DM mirror target.
Also change an existing use of 'bvec' to 'addr' in the union.

私は100%ではありませんが、2.6.38のマージウィンドウだと思います。

EXT4は、LVMと同様、少し前にサポートを追加しました。RAIDは、サポートされていない1つのキーです。2011年1月13日の時点で、サポートが追加されたようです。2.6.38または2.6.39で探してください。


時間が経ち、TRIMサポートは3.7カーネルに確実に含まれていますRAID10コミットは次のとおりです。

これにより、md raid 10はTRIMをサポートします。あるディスクが破棄をサポートし、別のディスクが破棄をサポートしていない場合、またはあるディスクがdiscard_zero_dataを持ち、別のディスクがそうでない場合、そのようなディスクのデータ間で矛盾が生じる可能性があります。しかし、これは問題ではありません。破棄されたデータは無意味です。ただし、これにより再構築時に余分なコピーが追加されます。


そのスレッドと関連するコミットを見ましたが、質問で言ったように-これはLVM(デバイスマッパー)だけでなくmd(ソフトウェアRAID)も適切に通過することを意味しますか?
ドンMacAskill

1
これは有望に思えますが、私の理解では、dmraidは主にいわゆる「fakeRAID」ハードウェアRAIDコントローラーに使用されます。私が話しているのは、より一般的なソフトウェアのみのmdadm RAID-1(+0)アレイで、その上にLVMがあります。私の知る限り、そのセットアップは、廃棄を処理するdmraidの新しい機能の恩恵を受けません。正しい?
ドンマカスキル

1
@DonMacAskill「raid1.c」ファイルには、TRIM、FITRIM、または「dispose」を参照するコミットがありません。したがって、mdadm --create RAIDサポートはまだありません。
sysadmin1138

@ sysadmin1138あなたが言うのはdiscard、それがLinuxカーネル内で呼ばれていることだと思います。そして、そのパッチは破棄を参照しているようです。
マイケルハンプトン

1

Mdtrimにはさらに作業が必要な場合があります。

Cyberax-mdtrim-0a40e8d# ./mdtrim.py -m /dev/md4 -s /home
Scratch directory is /home, trimmer file size is 0 GB 790 MB
Found slave sdc2 on /dev/sdc with MD offset 0 and partition offset 249856
Creating trimmer file
252,2: device not found in /dev
Traceback (most recent call last):
  File "./mdtrim.py", line 120, in <module>
    if lines[2].find("assuming %d byte sectors" % sector_size) == -1:
IndexError: list index out of range

0

MDTRIMスクリプト(https://github.com/Cyber​​ax/mdtrim/)を使用して、ext4 / 3レベル1 RAIDの空きスペースをトリムできます。cronから定期的に起動します。

他のRAIDレベルのサポートを追加することは可能ですが、そのための時間(または必要性)がありません。


0

ここで提案されているように使用できます

lsblk -D

ブロックデバイスが廃棄コマンドを通過するかどうかを確認するため。

また、lvm.confのセクションデバイスにはissue_discardsオプションが含まれていることに注意してください。見る

man 5 lvm.conf

詳細については。

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