Назад | Перейти на главную страницу

Обеспечение безопасности кеша записи на диск SATA

Предположительно (см., Например, вопрос об этом здесь), с дисками с включенным NCQ кэш записи диска должен быть безопасным, так как он не лжет ОС о том, что данные передаются на пластины, когда это не так. Я пытаюсь понять, какие настройки необходимы, чтобы это стало реальностью.

я использую diskchecker.pl чтобы убедиться, что все блоки выдерживают выдергивание вилки из розетки. Сервер настроен так:

Если я отключу кэш записи (hdparm -W0), то он работает (с огромной потерей производительности). Так что вроде верхние слои на это способны.

Я пробовал включить FUA в libata (передав fua=1 до загрузки модуля и подтверждения через dmesg), что не помогло.

Есть предложения, как заставить эту работу работать?

редактировать: нашел причину (см. мой ответ); какие-нибудь предложения о том, как вернуть хотя бы часть производительности?

Да, насколько я знаю, это стоимость безопасности, вы можете увидеть много тем о безопасности данных и стоимости скорости в каждой файловой системе и уровне хранения в списке рассылки Postgresql, в последнее время они говорили о безопасности SSD, например, только Vertex 2 Pro или последние твердотельные накопители Intel серии, к которым подключена небольшая память (например, кэш батареи в рейд-контроллере), безопасны для использования с базой данных, а проблема с SSD не может быть решена путем отключения кеша записи.

Я вставляю сюда две ссылки, но у вас есть несколько примеров в списке рассылки, выполните поиск.

http://archives.postgresql.org/pgsql-performance/2010-06/msg00076.php

http://archives.postgresql.org/pgsql-general/2011-04/msg00709.php

Обновление до ядра 2.6.38-2-amd64 (с sid) устраняет проблему за счет огромного снижения производительности (очень похоже на простое отключение кешей записи).

Проведя небольшое исследование, выяснилось, что MD не поддерживал барьеры ввода-вывода (кроме RAID1) до версии 2.6.33-rc1 (commit a2826aa92e2e14db372eda01d333267258944033).

Вот почему вам действительно следует использовать аппаратный RAID-контроллер с BBU (блоком резервного аккумулятора). Тогда вы можете включить кеш записи и быть в безопасности.