Có thể để SSD TRIM (loại bỏ) hoạt động trên RAID phần mềm ext4 + LVM + trong Linux không?


18

Chúng tôi sử dụng RAID1 + 0 với md trên Linux (hiện là 2.6.37) để tạo một thiết bị md, sau đó sử dụng LVM để cung cấp quản lý âm lượng trên đầu thiết bị, sau đó sử dụng ext4 làm hệ thống tệp của chúng tôi trên các nhóm âm lượng LVM.

Với SSD là ổ đĩa, chúng tôi muốn thấy các lệnh TRIM lan truyền qua các lớp (ext4 -> LVM -> md -> SSD) cho các thiết bị.

Có vẻ như các hạt nhân 2.6.3x gần đây đã có rất nhiều hỗ trợ TRIM liên quan đến SSD mới được thêm vào, bao gồm nhiều trường hợp bao quát hơn về các tình huống của Map Mapper, nhưng chúng ta dường như vẫn không thể đưa nó xuống tầng chính xác.

Điều này có thể chưa? Nếu vậy thì thế nào? Nếu không, có bất kỳ tiến bộ đang được thực hiện?


Xem cập nhật serverfault.com/a/229486/67675 :)
poige

Câu trả lời:


7

Không thể, vì Linux Soft RAID không hỗ trợ điều này (chưa?).

CẬP NHẬT. : Cảm ơn Wodin đã cho tôi biết - theo lkml.org/lkml/2012/3/11/261 chức năng này đã được thêm đề xuất gần đây. đề xuất ! = chấp nhận , mặc dù.


Bạn vẫn có thể trừ câu trả lời này, nhưng điều này sẽ không khiến LSR hỗ trợ TRIM :)
poige

3
Nó làm ngay bây giờ. lkml.org/lkml/2012/3/11/261
Wodin

@Wodin, tôi không thể tìm thấy các thay đổi được đề xuất ngay cả trong 3.5. Họ dường như không được chấp nhận.
poige

14

Kể từ 2.6.37, nó phải có mặt ( nguồn ) . Hạt nhân không làm điều đó trong nền, quá trình loại bỏ khối hiện được thiết kế để chạy theo yêu cầu (tập lệnh cron!). Hỗ trợ Dm-crypt chưa tồn tại.

Vào ngày 13 tháng 1 năm 2011, một bản vá đã được sáp nhập vào dm-raid1.c có nội dung:

dm raid1: support discard

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

Tôi không phải là 100%, nhưng tôi nghĩ đó là cửa sổ hợp nhất cho 2.6,38.

EXT4 đã thêm hỗ trợ cách đây một thời gian, cũng như LVM. RAID là một khóa không hỗ trợ. Kể từ ngày 1/13/2011, có vẻ như hỗ trợ đã được thêm vào. Hãy tìm nó trong 2.6,38 hoặc có thể 2,6,39.


Thời gian đã trôi qua và hỗ trợ TRIM chắc chắn được bao gồm trong kernel 3.7 . Các cam kết cho RAID10 đọc :

Điều này làm cho md đột kích 10 hỗ trợ TRIM. Nếu một đĩa hỗ trợ loại bỏ và một đĩa khác thì không, hoặc một đĩa có disard_zero_data và một đĩa khác thì không, có thể có sự không nhất quán giữa dữ liệu từ các đĩa đó. Nhưng điều này không quan trọng, dữ liệu bị loại bỏ là vô ích. Điều này sẽ thêm bản sao bổ sung trong xây dựng lại mặc dù.


Nhìn thấy luồng đó và các cam kết liên quan, nhưng như tôi đã nói trong câu hỏi - điều này có nghĩa là nó sẽ vượt qua đúng không chỉ LVM (Trình ánh xạ thiết bị) mà còn cả md (RAID phần mềm)?
Don MacAskill

1
Điều này nghe có vẻ hứa hẹn, nhưng sự hiểu biết của tôi là sợ hãi chủ yếu được sử dụng cho cái gọi là bộ điều khiển RAID phần cứng 'fakeRAID'. Điều tôi đang nói đến là một mảng mdadm RAID-1 (+0) chỉ có phần mềm điển hình hơn với LVM trên đầu. AFAIK, thiết lập đó không được hưởng lợi từ khả năng xử lý mới được tìm thấy của dmared. Đúng?
Don MacAskill

1
@DonMacAskill Tệp 'raid1.c' không có bất kỳ cam kết nào tham chiếu TRIM, FITRIM hoặc 'xử lý'. Vì vậy, có vẻ như mdadm - hỗ trợ RAID vẫn chưa có.
sysadmin1138

@ sysadmin1138 Tôi nghĩ ý bạn là discard, đó là cái mà nó được gọi trong nhân Linux. Và bản vá đó dường như đề cập đến việc loại bỏ.
Michael Hampton

1

Mdtrim có thể cần làm việc nhiều hơn:

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

Bạn có thể sử dụng tập lệnh MDTRIM của tôi ( https://github.com/Cyberax/mdtrim/ ) để TRIM không gian trống trên các RAID ext4 / 3 cấp 1. Chúng tôi bắt đầu nó định kỳ từ cron và nó hoạt động rất tốt cho chúng tôi.

Có thể thêm hỗ trợ cho các cấp RAID khác, nhưng tôi không có thời gian (hoặc cần) cho việc đó.


0

Theo đề xuất ở đây Bạn có thể sử dụng

lsblk -D

để kiểm tra xem blockdevices của bạn có vượt qua các lệnh loại bỏ không.

Cũng lưu ý rằng các thiết bị phần trong lvm.conf chứa tùy chọn vấn đề. Xem

man 5 lvm.conf

để biết thêm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.