Нужны данные по управлению дисководами ОС: получение базового размера блока ввода-вывода, опция «синхронизация», прямой доступ к памяти

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

  1. Размер ввода-вывода: ядро ​​базы данных и собственный размер диска должны либо совпадать, либо собственный размер ввода-вывода базы данных должен быть кратен собственному размеру ввода-вывода диска.
  2. Диски, поддерживающие прямой доступ к памяти (например, IDE), должны быть настроены для этого.
  3. Когда диск говорит, что он постоянно записывает данные, это должно быть так! Не хранить его в кеше и не лгать об этом.

Я искал информацию о том, как убедиться, что это так для CENTOS и Ubuntu, но, похоже, вообще ничего не нашел!

Я хочу иметь возможность проверить эти вещи и изменить их, если это необходимо.

Любые входные данные приветствуются.

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: Фактическое аппаратное обеспечение ОЧЕНЬ скромное. Смысл в том, чтобы получить максимальную отдачу от того оборудования, которое у нас есть, даже если это «не очень серьезное оборудование» с более широкой точки зрения.

БОЛЕЕ:

Я ценю время, затраченное на чтение и ответ, но я надеюсь получить «ответы», которые будут не просто хорошим советом по базе данных / оборудованию, но ответами, которые действительно касаются конкретных вещей, о которых я спрашивал. А именно:

1) Какой хороший простой способ определить размер блока ввода-вывода, который хочет сделать ОС? Как я могу это изменить? (IOW: Если это исключительно проблема формата файловой системы, как я могу определить, что использовалось в уже созданной файловой системе? Я знаю, что /etc/fstab сообщит мне формат файловой системы... В этом случае это доб3.

2) Как узнать, есть ли на диске DMA? Если да, то как я могу включить его? (Мне сказали, что у некоторых дисков есть такая возможность, но теперь я хочу убедиться, что если она есть на этих дисках, она включена.)

И наконец;

3) Как я могу определить, что диск просто сообщает писателю, что его материал записан, хотя на самом деле он все еще находится в кеше? И, что более важно, как я могу заставить систему НЕ использовать такие функции, если / когда они существуют?

Спасибо за ваши идеи. РТ


person Richard T    schedule 31.03.2010    source источник
comment
Это помогает узнать, какую базу данных вы используете (а также какую файловую систему вы рассматриваете), поскольку каждая из них имеет свои собственные возможности и параметры.   -  person codenheim    schedule 01.04.2010
comment
Привет, MrJoltCola, я, честно говоря, не вижу какой-либо связи между полезной СУБД и вопросами, которые я задавал, однако это Postgres. Он имеет размер страницы по умолчанию 8K. (Чтобы изменить его, вы должны перекомпилировать его.) Спасибо за ваши идеи   -  person Richard T    schedule 01.04.2010
comment
Существует большая ссылка, если вы хотите получить конкретное представление. Не знаю, почему ты защищаешься от моего вопроса. Поскольку вы не нашли мой ответ полезным, я воздержусь от дальнейших комментариев.   -  person codenheim    schedule 01.04.2010
comment
MrJoltCola, я не из тех, кто намеренно оскорбляет или передает хорошие идеи, поэтому, пожалуйста, не воздерживайтесь. ... Хорошо, в отличие от большинства, Informix может использовать необработанные разделы диска, поэтому я полагаю, что если бы меня интересовал Informix, это могло бы быть полезно ... В этом случае все файловые системы - ext3. Причина, по которой я ответил именно так, заключается в том, что по какой-то причине я иногда получаю много ответов, которые не относятся к тому, о чем я просил — приношу свои извинения за то, что обидел.   -  person Richard T    schedule 02.04.2010


Ответы (3)


«серьезное использование базы данных», и вы упоминаете IDE в том же предложении?

SSD или 15k SCSI в многошпиндельном массиве RAID 1+0 с отдельными массивами для данных, журнала и резервного копирования. Рассмотрим также отдельный массив для tempdb.

Вы также можете переключить кэш контроллера на 100% чтения, чтобы избежать проблем с кэшированием.

Конечно, если это «серьезно», то вам следует подумать о кластеризации и т. д., поэтому здесь пригодится SAN, но вы можете быть не так быстры, как локальные шпиндели.

person gbn    schedule 31.03.2010
comment
+1, да, у меня никогда не было ничего хорошего в использовании кеша с обратной записью. - person codenheim; 01.04.2010
comment
Эй, не смейся! (Хорошо, смейтесь! -улыбается- ) Это для клиента, который продает решение, включающее в себя очень дешевый набор оборудования, на котором решение предустановлено... Нет, я не имею никакого отношения к выбору! - person Richard T; 01.04.2010
comment
Кстати, серьезное означает не то, что это для большого центра обработки данных, серьезное, поскольку нам нужно максимально использовать то оборудование, которое у нас есть. - person Richard T; 01.04.2010
comment
Я сочувствую ... еще в дни моего 100% DBA я видел, как поставщики продавали большие системы с минимальным RAID 5, и мне приходилось спорить с аналитиком или деловым человеком ... - person gbn; 01.04.2010

1) Проверьте /sys/block/sdX/queue/{max_hw_sectors_kb,max_sectors_kb}. Во-первых, это максимальный размер передачи, который позволяет аппаратное обеспечение, а во-вторых, текущий максимум, который может быть установлен на любое значение ‹= max_hw_sectors_kb.

2) hdparm -i /dev/sdX

3) Отключите кэширование с обратной записью (hdparm может это сделать) или убедитесь, что файловая система создает барьеры при синхронизации (как в fsync() или фиксации журнала).

person janneb    schedule 01.04.2010

Вы не включили никакой информации о файловой системе или базе данных, поэтому вот несколько указателей на разное.

В конечном итоге вы неизбежно потеряете диск, поэтому не менее важно внедрить хорошую стратегию резервного копирования и восстановления, а также зеркально отразить журналы транзакций, чтобы вы могли справиться с отказом диска или даже с полной потерей файла данных.

1) Если возможно, поместите хотя бы одну копию журнала транзакций на фиксированный диск. Не помещайте свой единственный журнал транзакций во внешнюю подсистему хранения. (Предполагая, что вы используете базу данных, поддерживающую зеркалирование журналов).

2) Я согласен с gbn, на практике не используйте кэширование записи. Я потерял базы данных на RAID-массивах с резервным питанием от батареи. Настройте карту контроллера хранилища для сквозной записи.

3) Необработанные устройства обеспечивают гарантированную запись, но это не стоит хлопот. Некоторые файловые системы также предоставляют параметры синхронной записи, используйте их, если это возможно. Я неравнодушен к VxFS, но я из мира Солнца. По крайней мере, в Linux btrfs превосходен, но на данный момент Ext3 работает нормально, если вы правильно настроите свою базу данных.

person codenheim    schedule 31.03.2010
comment
Правильно ли я понимаю, что достаточно просто использовать опцию синхронизации в fstab? Что-то я сомневаюсь! Я имею в виду; если аппаратное обеспечение имеет этот кеш, лежащий при записи полной функции, он может не учитывать пожелания ОС в отношении синхронизации... Чтобы уточнить; Существуют ли функции уровня ОС/ядра, которые используются для указания дискам, что делать в таких случаях? - person Richard T; 01.04.2010
comment
Когда я сказал синхронизацию, я имел в виду, что файловая система ее поддерживает, и пользовательский процесс (база данных) может открывать свои файлы данных в синхронном режиме. - person codenheim; 01.04.2010