Linux(現在は2.6.37)上のmdでRAID1 + 0を使用してmdデバイスを作成し、LVMを使用してデバイスの上部にボリューム管理を提供し、LVMボリュームグループのファイルシステムとしてext4を使用します。
ドライブとしてSSDを使用して、TRIMコマンドがレイヤー(ext4-> LVM-> md-> SSD)を介してデバイスに伝播するのを確認します。
最近の2.6.3xカーネルには、SSD関連の新しいTRIMサポートが多数追加されているようです。これには、Device Mapperシナリオのカバレッジがさらに含まれていますが、適切にカスケードダウンすることはできません。
これはまだ可能ですか?もしそうなら、どうですか?そうでない場合、何か進展がありましたか?
Linux Soft RAIDはこれをサポートしていません(まだ?)。
UPD。: lkml.org/lkml/2012/3/11/261によると、教えてくれたWodinに感謝します =この機能は 追加された提案された 最近。 提案された != 受け入れたけれども。
2.6.37以降、存在する必要があります( source )。カーネルはバックグラウンドでそれを行いません、ブロック破棄プロセスは現在オンデマンドで実行されるように設計されています(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のマージウィンドウだと思います。
LVMと同様に、EXT4は少し前にサポートを追加しました。 RAIDは、サポートされていない1つのキーです。 2011年1月13日の時点で、サポートが追加されたようです。 2.6.38または2.6.39を探してください。
時間が経過し、TRIMサポートは 間違いなく3.7カーネルに含まれています です。 RAID10読み取りのコミット :
これにより、md raid 10はTRIMをサポートします。 1つのディスクが破棄をサポートし、もう1つがサポートしない場合、または1つがdiscard_zero_dataをサポートし、もう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
提案通り here 使用できます
lsblk -D
ブロックデバイスが破棄コマンドを通過するかどうかを確認するため。
また、lvm.confのセクションdevicesにオプションissue_discardsが含まれていることにも注意してください。見る
man 5 lvm.conf
詳細については。
MDTRIMスクリプト( https://github.com/Cyberax/mdtrim/ )を使用して、ext4/3レベル1 RAIDの空のスペースをトリムできます。私たちは定期的にcronから起動しますが、私たちにとってはとてもうまくいきます。
他のRAIDレベルのサポートを追加することは可能ですが、そのための時間(または必要)がありません。