Возможно ли получить 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, связанной с твердотельными накопителями, включая гораздо больший охват сценариев Device Mapper, но мы все еще не можем заставить его работать должным образом.

Возможно ли это еще? Если так, то как? Если нет, достигнут ли какой-либо прогресс?


Смотрите обновленный serverfault.com/a/229486/67675 :)
poige

Ответы:


7

Невозможно, потому что Linux Soft RAID не поддерживает это (пока?).

UPD. : Благодаря Водин за давая мне знать , - в соответствии с lkml.org/lkml/2012/3/11/261 этого функционала было добавлено предложено недавно. предложено ! = принято , хотя.


Вы можете по-прежнему минус этот ответ, но это не заставит ЛСР поддерживать TRIM :)
poige

3
Это сейчас. lkml.org/lkml/2012/3/11/261
Водин

@ Водин, я не могу найти предлагаемые изменения даже в 3.5. Кажется, они не приняты.
Пой

14

По состоянию на 2.6.37 он должен присутствовать ( источник ) . Ядро не делает этого в фоновом режиме, процесс сброса блока в настоящее время предназначен для запуска по требованию (скрипт cron!). Поддержка Dm-crypt еще не существует.

С 13 января 2011 патч был слит в дм-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 - это единственный ключ, который не имеет поддержки. По состоянию на 13.01.2011, кажется, поддержка была добавлена. Ищите это в 2.6.38 или, может быть, 2.6.39.


Время прошло, и поддержка TRIM определенно включена в ядро ​​3.7 . Коммитами RAID10 гласит :

Это заставляет md raid 10 поддерживать TRIM. Если один диск поддерживает сброс, а другой нет, или один имеет discard_zero_data, а другой нет, между данными с таких дисков могут быть несоответствия. Но это не должно иметь значения, отброшенные данные бесполезны. Это добавит дополнительную копию в пересборке все же.


Видел этот поток и связанные с ним коммиты, но, как я уже сказал в вопросе, означает ли это, что он будет правильно проходить не только через LVM (Device Mapper), но и через md (Software RAID)?
Дон Макаскилл

1
Это звучит многообещающе, но я понимаю, что dmraid в основном используется для так называемых аппаратных RAID-контроллеров 'fakeRAID'. Я говорю о более типичном программном массиве mdadm RAID-1 (+0) с LVM сверху. AFAIK, эта установка не извлекает выгоду из недавно найденной способности dmraid обрабатывать сбросы. Правильно?
Дон Макаскилл

1
@DonMacAskill В файле 'raid1.c' нет коммитов, ссылающихся на TRIM, FITRIM или 'dispose'. Итак, похоже, что поддержка RAID mdadm --create еще не реализована.
sysadmin1138

@ sysadmin1138 Я думаю, вы имеете в виду discard, как это называется в ядре Linux. И этот патч, похоже, относится к сбросу.
Майкл Хэмптон

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-пространства на RAID- массивах уровня 1 ext4 / 3. Мы периодически запускаем его из cron, и он отлично работает для нас.

Добавление поддержки для других уровней RAID возможно, но у меня нет времени (или необходимости) для этого.


0

Как предложено здесь, вы можете использовать

lsblk -D

чтобы проверить, проходят ли ваши блочные устройства команды сброса.

Также обратите внимание, что раздел devices в lvm.conf содержит опцию issue_discards. Видеть

man 5 lvm.conf

для получения дополнительной информации.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.