Linux'ta ext4 + LVM + yazılımı RAID'inde SSD TRIM (silme) yapabiliyor musunuz?


18

Bir md cihazı oluşturmak için Linux'ta md ile RAID1 + 0 kullanıyoruz (şu anda 2.6.37), daha sonra cihazın üzerine hacim yönetimi sağlamak için LVM kullanıyoruz ve sonra LVM birim gruplarında dosya sistemimiz olarak ext4 kullanıyoruz.

Sürücüler olarak SSD'lerle, TRIM komutlarının katmanlardan (ext4 -> LVM -> md -> SSD) cihazlara yayıldığını görmek istiyoruz.

Son zamanlarda 2.6.3x çekirdeğe, çok daha fazla Aygıt Eşleyici senaryoları da dahil olmak üzere SSD ile ilgili çok sayıda yeni TRIM desteği eklenmiş gibi görünüyor, ancak yine de düzgün bir şekilde artmasını sağlayamıyoruz.

Bu henüz mümkün mü? Öyleyse nasıl? Değilse, herhangi bir ilerleme kaydediliyor mu?



Yanıtlar:


7

Mümkün değil, çünkü Linux Soft RAID bunu desteklemiyor (henüz?).

UPD. : Beni bildirdiğiniz için Wodin sayesinde biliyoruz - göre lkml.org/lkml/2012/3/11/261 bu işlevsel olmuştur eklendi önerdi geçenlerde. önerilen ! = kabul edildi .


Bu cevabı hala eksi yapabilirsiniz, ancak bu LSR desteğini TRIM
yapmaz


@Wodin, 3.5'te bile önerilen değişiklikleri bulamıyorum. Kabul edilmiş gibi görünmüyorlar.
poige

14

2.6.37 itibariyle mevcut olmalıdır ( kaynak ) . Çekirdek arka planda yapmaz, blok silme işlemi şu anda isteğe bağlı olarak çalışacak şekilde tasarlanmıştır (cron betiği!). DM-Crypt desteği henüz mevcut değil.

13 Ocak 2011'de dm-raid1.c dosyasına bir yama eklendi:

dm raid1: support discard

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

Ben% 100 değilim, ama bence bu 2.6.38 için birleştirme penceresi.

EXT4, LVM gibi bir süre önce destek ekledi. RAID, desteği olmayan tek anahtardır. 13.01.2011 tarihi itibariyle destek eklenmiştir. 2.6.38 veya belki 2.6.39'da arayın.


Zaman geçti ve TRIM desteği kesinlikle 3.7 çekirdeğine dahil edildi . RAID10 okur için taahhüt :

Bu, md raid 10'un TRIM'i desteklemesini sağlar. Bir disk atmayı diğerini desteklemiyorsa veya diğerinde discard_zero_data ve diğeri desteklenmiyorsa, bu tür disklerdeki veriler arasında tutarsızlık olabilir. Ancak bu önemli değil, atılan veriler işe yaramaz. Bu, yeniden oluşturma işlemine ekstra kopya ekleyecektir.


Bu iş parçacığı ve ilgili taahhütleri gördüm, ancak soruda söylediğim gibi - bu sadece LVM'den (Cihaz Eşleyici) değil, aynı zamanda md'den (Yazılım RAID) de geçeceği anlamına mı geliyor?
Don MacAskill

1
Bu umut vericidir, ancak benim anlayışım dmraid'in öncelikle 'fakeRAID' donanım RAID denetleyicileri için kullanılmasıdır. Bahsettiğim, LVM'nin üstte olduğu daha tipik bir yazılım sadece mdadm RAID-1 (+0) dizisidir. AFAIK, bu kurulum dmraid'in yeni bulunan afetlerle başa çıkma yeteneğinden faydalanmıyor. Sağ?
Don MacAskill

1
@DonMacAskill 'raid1.c' dosyasında TRIM, FITRIM veya 'dispose' ile ilgili herhangi bir taahhüt yoktur. Bu yüzden, mdadm --create RAID desteği oluşturma sonuçta henüz yok.
sysadmin1138

@ sysadmin1138 Sanırım demek istediniz discard, Linux çekirdeğinde buna denir. Ve bu yama atmak anlamına geliyor.
Michael Hampton

1

Mdtrim'in daha fazla çalışmaya ihtiyacı olabilir:

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

Ext4 / 3 düzey-1 RAID'lerde boş alanı TRIM yapmak için MDTRIM komut dosyamı ( https://github.com/Cyberax/mdtrim/ ) kullanabilirsiniz. Periyodik olarak cron'dan başlıyoruz ve bizim için harika çalışıyor.

Diğer RAID seviyeleri için destek eklemek mümkündür, ancak bunun için zamanım (veya ihtiyacım yok).


0

Önerildiği gibi burada kullanabilirsiniz

lsblk -D

engelleyici cihazlarınızın silme komutlarından geçip geçmediğini kontrol etmek için.

Ayrıca bölüm unutmayın cihazlar içinde lvm.conf bir seçenek issue_discards içeriyor. Görmek

man 5 lvm.conf

daha fazla bilgi için.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.