Kemungkinan untuk mendapatkan SSD TRIM (buang) bekerja pada ext4 + LVM + RAID perangkat lunak di Linux?

18

Kami menggunakan RAID1 + 0 dengan md di Linux (saat ini 2.6.37) untuk membuat perangkat md, kemudian menggunakan LVM untuk menyediakan manajemen volume di atas perangkat, dan kemudian menggunakan ext4 sebagai sistem file kami pada grup volume LVM.

Dengan SSD sebagai drive, kami ingin melihat perintah TRIM merambat melalui lapisan (ext4 -> LVM -> md -> SSD) ke perangkat.

Tampaknya kernel 2.6.3x baru-baru ini telah menambahkan banyak dukungan TRIM terkait SSD baru, termasuk lebih banyak cakupan skenario Device Mapper, tetapi kami masih belum bisa membuatnya mengalir turun dengan benar.

Apakah ini mungkin? Jika ya, bagaimana caranya? Jika tidak, apakah ada kemajuan yang dicapai?

Don MacAskill
sumber

Jawaban:

7

Tidak mungkin, karena Linux Soft RAID tidak mendukung ini (belum?).

UPD. : Terima kasih kepada Wodin karena memberi tahu saya - menurut lkml.org/lkml/2012/3/11/261 , fungsionalitas ini telah ditambahkan diusulkan baru - baru ini. diusulkan ! = diterima .

poige
sumber
Anda masih dapat mengurangi jawaban ini, tetapi ini tidak akan membuat LSR mendukung TRIM :)
poige
3
Itu sekarang. lkml.org/lkml/2012/3/11/261
Wodin
@ Wodin, saya tidak dapat menemukan perubahan yang diajukan bahkan dalam 3.5. Mereka sepertinya tidak diterima.
poige
14

Pada 2.6.37, harus ada ( sumber ) . Kernel tidak melakukannya di latar belakang, proses pemblokiran blok saat ini dirancang untuk dijalankan sesuai permintaan (skrip cron!). Dukungan Dm-crypt belum ada.

Pada 13 Januari 2011 sebuah patch digabung menjadi dm-raid1.c yang bertuliskan:

dm raid1: support discard

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

Saya tidak 100%, tapi saya pikir itu adalah jendela gabungan untuk 2.6.38.

EXT4 menambahkan dukungan beberapa waktu lalu, seperti yang dilakukan LVM. RAID adalah satu kunci yang tidak memiliki dukungan. Pada 1/13/2011, tampaknya dukungan telah ditambahkan. Cari di 2.6.38 atau mungkin 2.6.39.


Waktu telah berlalu dan dukungan TRIM sudah termasuk dalam kernel 3.7 . The berkomitmen untuk RAID10 berbunyi :

Ini membuat md raid 10 mendukung TRIM. Jika satu disk mendukung discard dan yang lainnya tidak, atau satu memiliki discard_zero_data dan yang lainnya tidak, mungkin ada ketidakkonsistenan antara data dari disk tersebut. Tapi ini seharusnya tidak masalah, data yang dibuang tidak berguna. Ini akan menambah salinan tambahan dalam pembangunan kembali.

sysadmin1138
sumber
Melihat utas itu, dan komitmen terkait, tetapi seperti yang saya katakan dalam pertanyaan - apakah ini berarti ia akan benar-benar melewati tidak hanya LVM (Device Mapper) tetapi juga md (Software RAID)?
Don MacAskill
1
Ini kedengarannya menjanjikan, tetapi pemahaman saya adalah bahwa dmraid terutama digunakan untuk apa yang disebut pengendali RAID perangkat keras 'fakeRAID'. Yang saya bicarakan adalah larik mdadm RAID-1 (+0) khusus perangkat lunak yang lebih tipikal dengan LVM di atasnya. AFAIK, setup itu tidak mendapat manfaat dari kemampuan baru ditemukan dmraid untuk menangani discards. Baik?
Don MacAskill
1
@DonMacAskill File 'raid1.c' tidak memiliki komit yang merujuk TRIM, FITRIM, atau 'buang'. Jadi, sepertinya dukungan mdadm --create RAID belum ada.
sysadmin1138
@ sysadmin1138 Saya pikir maksud Anda discard, itulah yang disebut dalam kernel Linux. Dan tambalan itu tampaknya merujuk pada membuang.
Michael Hampton
1

Mdtrim mungkin perlu lebih banyak bekerja:

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
ERos
sumber
0

Anda dapat menggunakan skrip MDTRIM saya ( https://github.com/Cyberax/mdtrim/ ) untuk ruang kosong TRIM pada RAID ext4 / 3 level-1. Kami memulainya secara berkala dari cron dan bekerja sangat bagus untuk kami.

Menambahkan dukungan untuk level RAID lainnya dimungkinkan, tetapi saya tidak punya waktu (atau kebutuhan) untuk itu.

Cyberax
sumber
0

Seperti yang disarankan di sini, Anda dapat menggunakan

lsblk -D

untuk memeriksa apakah perangkat blok Anda melewati perintah buang.

Juga perhatikan bahwa perangkat bagian di lvm.conf berisi opsi issue_discards. Lihat

man 5 lvm.conf

untuk info lebih lanjut.

sebastianwagner
sumber