5

Это уже упоминалось в других вопросах, которые Red Hat рекомендует не использовать mdadm RAID 1 на SSD.

Red Hat также предупреждает, что программные уровни RAID 1, 4, 5 и 6 не рекомендуются для использования на твердотельных накопителях. На этапе инициализации этих уровней RAID некоторые утилиты управления RAID (например, mdadm) выполняют запись во все блоки на устройстве хранения, чтобы обеспечить правильную работу контрольных сумм. Это приведет к быстрому снижению производительности SSD.

Я понимаю причины этого. Однако я подозреваю, что это было написано до появления mdtrim, который разработан специально для mdadm RAID 1. Это обходит проблему? Если мое понимание TRIM верно, то я верю, что оно верно, но я не уверен, поэтому я спрашиваю.

TRIM не может быть правильным для меня, хотя. Мне это нужно для производственной системы, и mdtrim в лучшем случае выглядит экспериментально. Что еще более важно, мне требуется надежное шифрование, и исследования показали, что TRIM показывает слишком много, выделяя, какие части диска на самом деле используются. Есть ли способ избежать проблемы с производительностью и при этом иметь надежное шифрование? Мне было интересно, можно ли сделать частичную TRIM, освобождая некоторые блоки для производительности, но не так много, чтобы отдавать слишком много.

Одно из предложений, которое я увидел, состояло в том, чтобы использовать только около 80% каждого диска, чтобы после первоначальной проверки mdadm оставалось еще несколько блоков, оставшихся неиспользованными. Но не будут ли эти блоки первыми использоваться при последующем использовании диска? Они все равно будут израсходованы довольно быстро, и тогда мне будет не лучше, верно?

1 ответ1

1

Конечно, вы можете выполнить частичную обрезку с помощью mdtrim (см. --reserve ), чтобы всегда оставлять некоторое свободное пространство свободным. Или вы можете просто создать большой файл с помощью dd (1) на своей зашифрованной FS, чтобы использовать некоторое пространство, которое затем никогда не будет обрезано (и не используется вами). Я предполагаю, что обрезка всего, кроме ~ 30% неиспользуемого пространства, даст вам много преимуществ в производительности без существенного снижения безопасности.

вы можете (как вы предлагаете) вместо того, чтобы обрезать (на свежем SSD или SSD-диске с безопасным удалением ATA) избыточное выделение ресурсов, создавая раздел с только 80% пространства, и использовать его вместо этого. Он не будет «использован довольно быстро, и тогда вам будет не лучше». Вот почему:

Предположим (для простоты) на вашем диске 10000 секторов (LBA). Когда вы разбиваете так, что используется только половина (опять же для простоты), вы будете использовать только LBA 0-4999, в то время как LBA 5000-9999 никогда не будет затронут. Теперь встроенное в накопитель встроенное программное обеспечение имеет два способа узнать, какие сектора не используются: те, на которые ваша ОС указывает TRIM, и те, на которые перезаписываются. Таким образом, если вы пишете в LBA 100 в первый раз, он будет использоваться (например, в физическом блоке 123). Когда вы записываете в LBA 100 второй раз, SSD запишет его в новое местоположение (например, физический блок 124), а затем пометит старую версию LBA 100 (которая является физическим блоком 123) как неиспользованную (TRIMed), так что в более позднее время когда SSD находится в режиме ожидания, он может выполнять сборку мусора и (если все другие физические блоки в этом блоке стирания также не используются) стирать весь блок стирания (который намного больше, чем физический блок записи - например, 512 КБ против 4 КБ)

Таким образом, сократив диапазон используемых LBA до половины, вы увеличили количество физических ресурсов с избыточным выделением, которые может использовать накопитель. Они не "израсходованы", но их должно быть достаточно, чтобы фрагментация на них (частично использованные и частично неиспользованные физические блоки в одном и том же блоке стирания) исчезла до того, как у вас закончится свободное пространство (в противном случае, прошивка SSD) перед удалением всего блока стирания потребуется скопировать использованные блоки в другое место, что приведет к усилению записи, низкой производительности и сокращению срока службы SSD)

Команда TRIM по-прежнему полезна, поскольку ускоряет этот процесс (и не теряет много места), помечая сектора как неиспользуемые до того, как их нужно будет записать снова (и, таким образом, также избегая дополнительной записи и продлевая срок службы SSD).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .