เป็นไปได้ที่จะใช้ SSD TRIM (ทิ้ง) ทำงานบน ext4 + LVM + ซอฟต์แวร์ RAID ใน Linux หรือไม่


18

เราใช้ RAID1 + 0 กับ md บน Linux (ปัจจุบัน 2.6.37) เพื่อสร้างอุปกรณ์ md จากนั้นใช้ LVM เพื่อจัดการปริมาณที่ด้านบนของอุปกรณ์แล้วใช้ ext4 เป็นระบบไฟล์ของเราในกลุ่มวอลุ่ม LVM

ด้วย SSD ในฐานะไดรฟ์เราต้องการเห็นคำสั่ง TRIM เผยแพร่ผ่านเลเยอร์ (ext4 -> LVM -> md -> SSD) ไปยังอุปกรณ์ต่างๆ

ดูเหมือนว่าเมล็ด 2.6.3x เมื่อเร็ว ๆ นี้ได้เพิ่มการรองรับ TRIM ที่เกี่ยวข้องกับ SSD จำนวนมากรวมถึงความครอบคลุมของสถานการณ์ Device Mapper มากขึ้น แต่เราก็ยังดูเหมือนจะไม่สามารถทำให้ล้มลงได้อย่างถูกต้อง

เป็นไปได้หรือยัง ถ้าเป็นเช่นนั้นได้อย่างไร ถ้าไม่ความคืบหน้าใด ๆ ที่ถูกทำ?


ดูserverfault.com/a/229486/67675 ที่อัปเดตล่าสุด:)
poige

คำตอบ:


7

เป็นไปไม่ได้เพราะ Linux Soft RAID ไม่รองรับสิ่งนี้ (ยัง?)

UPD : ขอบคุณที่ Wodin ที่แจ้งให้เราทราบ - ตามlkml.org/lkml/2012/3/11/261ทำงานนี้ได้รับการเพิ่มเสนอเมื่อเร็ว ๆ นี้ เสนอแล้ว ! = ยอมรับแล้ว


คุณยังสามารถลบคำตอบนี้ แต่จะไม่ทำให้ขี้สนับสนุน TRIM :)
poige

3
มันทำตอนนี้ lkml.org/lkml/2012/3/11/261
Wodin

@Wodin ฉันไม่พบการเปลี่ยนแปลงที่เสนอแม้แต่ใน 3.5 ดูเหมือนว่าพวกเขาจะไม่ได้รับการยอมรับ
poige

14

ในฐานะของ 2.6.37 ก็ควรจะนำเสนอ ( แหล่งที่มา ) เคอร์เนลไม่ได้ทำในเบื้องหลังกระบวนการบล็อกทิ้งถูกออกแบบมาเพื่อให้ทำงานตามคำขอ (สคริปต์ cron!) ยังไม่มีการรองรับ Dm-crypt

เมื่อวันที่ 13 มกราคม 2011 มีการรวมแพตช์เข้ากับ 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/13/2011 จะมีการเพิ่มการสนับสนุนปรากฏขึ้น มองหามันใน 2.6.38 หรืออาจ 2.6.39


เวลาผ่านไปและการสนับสนุน TRIM นั้นรวมอยู่ในเคอร์เนล 3.7แน่นอน คอมมิทสำหรับ RAID10 อ่าน :

ทำให้ md RAID 10 รองรับ TRIM หากดิสก์หนึ่งแผ่นรองรับการละทิ้งและอีกอันไม่ได้หรืออย่างใดอย่างหนึ่งมี discard_zero_data และอีกอันไม่ได้อาจมีความไม่สอดคล้องกันระหว่างข้อมูลจากดิสก์ดังกล่าว แต่สิ่งนี้ไม่สำคัญข้อมูลที่ถูกทิ้งจะไม่มีประโยชน์ สิ่งนี้จะเพิ่มสำเนาพิเศษในการสร้างใหม่


เห็นว่าด้ายและความมุ่งมั่นที่เกี่ยวข้อง แต่อย่างที่ฉันพูดในคำถาม - หมายความว่ามันจะผ่านอย่างถูกต้องไม่เพียง แต่ LVM (Device Mapper) แต่ยัง md (Software RAID)?
Don MacAskill

1
สิ่งนี้ฟังดูมีแนวโน้ม แต่ความเข้าใจของฉันคือ dmraid ใช้สำหรับตัวควบคุมฮาร์ดแวร์ RAID ที่ชื่อว่า 'fakeRAID' เป็นหลัก สิ่งที่ฉันกำลังพูดถึงนั้นคือ mdadm RAID-1 (+0) ซอฟต์แวร์เฉพาะทั่วไปที่มี LVM อยู่ด้านบน AFAIK การตั้งค่านั้นไม่ได้รับประโยชน์จากความสามารถที่ค้นพบใหม่ของ dmraid ในการจัดการกับทิ้ง ขวา?
อย่า MacAskill

1
@DonMacAskill ไฟล์ 'raid1.c' ไม่มีการคอมมิทใด ๆ ที่อ้างอิงถึง TRIM, FITRIM หรือ 'ทิ้ง' ดังนั้นดูเหมือนว่า mdadm - การสนับสนุน RAID ที่สร้างขึ้นจะยังไม่เกิดขึ้นเลย
sysadmin1138

@ sysadmin1138 ฉันคิดว่าคุณหมายถึงdiscardซึ่งเป็นสิ่งที่เรียกว่าภายในเคอร์เนลลินุกซ์ และแพทช์นั้นดูเหมือนจะอ้างถึงทิ้ง
Michael Hampton

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/Cyberax/mdtrim/ ) กับ TRIM พื้นที่ว่างใน ext4 / 3 level-1 RAIDs เราเริ่มจาก cron เป็นระยะ ๆ และใช้งานได้ดีสำหรับเรา

เพิ่มการรองรับระดับ RAID อื่น ๆ เป็นไปได้ แต่ฉันไม่มีเวลา (หรือต้องการ) สำหรับสิ่งนั้น


0

ตามที่แนะนำที่นี่คุณสามารถใช้

lsblk -D

เพื่อตรวจสอบว่าอุปกรณ์ของคุณผ่านคำสั่งทิ้ง

นอกจากนี้โปรดทราบว่าอุปกรณ์ส่วนในlvm.confมีตัวเลือก Iss_discards ดู

man 5 lvm.conf

สำหรับข้อมูลเพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.