Linux의 ext4 + LVM + 소프트웨어 RAID에서 SSD TRIM (discard)을 사용할 수 있습니까? 위에 볼륨 관리를 제공 한 다음

Linux에서 md와 함께 RAID1 + 0 (현재 2.6.37)을 사용하여 md 장치를 만든 다음 LVM을 사용하여 장치 위에 볼륨 관리를 제공 한 다음 ext4를 LVM 볼륨 그룹의 파일 시스템으로 사용합니다.

SSD를 드라이브로 사용하면 TRIM 명령이 계층 (ext4-> LVM-> md-> SSD)을 통해 장치로 전파되는 것을 볼 수 있습니다.

최근 2.6.3x 커널에 더 많은 장치 매퍼 시나리오에 대한 더 많은 적용 범위를 포함하여 새로운 SSD 관련 TRIM 지원이 추가 된 것처럼 보이지만 여전히 제대로 계단식으로 놓일 수는 없습니다.

아직 가능합니까? 그렇다면 어떻게? 그렇지 않다면 어떤 진전이 있습니까?



답변

불가능합니다. Linux Soft RAID가이를 지원하지 않습니다 (아직?).

UPD. : lkml.org/lkml/2012/3/11/261에 따르면 Wodin 에게 알려 주셔서 감사합니다. 이 기능은 최근 제안 되었습니다. 그러나 제안 된 ! = 수락되었습니다 .


답변

2.6.37 기준으로 존재해야합니다 ( 소스 ) . 커널은 백그라운드에서이를 수행하지 않으며, 블록 삭제 프로세스는 현재 요청시 실행되도록 설계되었습니다 (크론 스크립트!). DM 암호화 지원은 아직 존재하지 않습니다.

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의 병합 창이라고 생각합니다.

EXT4는 LVM과 마찬가지로 얼마 전에 지원을 추가했습니다. RAID는 지원되지 않는 키입니다. 2011 년 1 월 3 일부로 지원이 추가 된 것으로 보입니다. 2.6.38 또는 2.6.39에서 찾으십시오.


시간이 지났고 TRIM 지원은 3.7 커널에 확실히 포함되어 있습니다. 은 RAID10 읽기 커밋 :

이것은 md raid 10이 TRIM을 지원하게합니다. 한 디스크가 폐기를 지원하고 다른 디스크가 폐기를 지원하거나 다른 디스크가 폐기 _ 제로 _ 데이터를 갖고 있고 다른 디스크가 폐기하지 않은 경우, 해당 디스크의 데이터간에 일치하지 않을 수 있습니다. 그러나 이것은 중요하지 않습니다. 폐기 된 데이터는 쓸모가 없습니다. 그래도 재 구축에 추가 사본이 추가됩니다.


답변

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


답변

내 MDTRIM 스크립트 ( https://github.com/Cyberax/mdtrim/ )를 사용하여 ext4 / 3 레벨 -1 RAID의 빈 공간을 트리밍 할 수 있습니다 . 우리는 cron에서 주기적으로 시작하며 우리에게 효과적입니다.

다른 RAID 레벨에 대한 지원을 추가 할 수도 있지만 시간이 필요하지 않습니다.


답변

여기에 제안 된대로 사용할 수 있습니다

lsblk -D

블록 장치가 폐기 명령을 통과하는지 확인하십시오.

또한 섹션 참고 장치있어 스캔이 옵션 issue_discards이 포함되어 있습니다. 보다

man 5 lvm.conf

더 많은 정보를 위해서.


답변