Предположительно (см., Например, вопрос об этом здесь), с дисками с включенным 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 (блоком резервного аккумулятора). Тогда вы можете включить кеш записи и быть в безопасности.