Я просто готовлю виртуальную машину (работающую на Proxmox) для запуска postgresql 9.6 поверх Ubuntu 16.04 LTS. Этот postgres будет использоваться для обработки баз данных Jira / FisheEye / Confluence для небольшой компании. Обычно мы работаем несколькими пользователями одновременно, поэтому нам не нужно настраивать его для экстремальной производительности / масштабируемости.
Дело в том, что мы используем BTRFS на серверах, чтобы помочь нам решить проблему добавления дополнительного места на виртуальную машину, когда это необходимо, плюс мы включаем сжатие lzo. Кроме того, мы используем btrok для обработки резервных копий подтомов BTRFS на другой компьютер.
Я сомневаюсь, что использование BTRFS для обработки файлов базы данных postgresql было бы хорошей идеей, поскольку мы были бы очень полезны в случае, если нам нужно расширить пространство виртуального жесткого диска, но я читал о плохой производительности postgresql по сравнению с BTRFS (особенно если поток данных не отключен.
У кого-нибудь есть опыт в этой ситуации?
Общий ответ: плохая идея. Вы можете прочитать об этом немного подробнее Вот. Короче говоря, механизм COW в BTRFS приведет к несогласованности производительности для нормальной рабочей нагрузки OLTP.
Лучший ответ: в некоторых случаях я бы его использовал. Почему и как:
Я надеюсь, что это помогает.
Заметка: Пользователь предположил, что COW можно отключить для BTRFS для определенных томов / папок, и я игнорирую этот факт. В самом деле, его можно отключить, но если вы это сделаете, зачем вам все еще использовать BTRFS? - Потому что вы все еще можете использовать COW для остальной файловой системы и всех других интересных функций (например, снимков и прочего) без снижения производительности для виртуального бокса и postgres? Конечно, для чистого сервера БД нет смысла использовать BTRFS и отключать COW. Но для машины / сервера общего назначения? Он позволяет использовать все классные функции (RAID1, ...) без снижения производительности. Так беспроигрышный вариант в моих глазах.
Пользователь предположил, что COW можно отключить для BTRFS для определенных томов / папок, и я игнорирую этот факт. В самом деле, его можно отключить, но если вы это сделаете, зачем вам все еще использовать BTRFS?
Даже когда COW отключен для определенных файлов / папок, у них все еще есть возможности создания снимков. После создания снимка следующей записью будет COW, а затем возврат к записи на месте. Довольно простое решение для резервного копирования работающих баз данных, если вы делаете это, когда ФС не занята. Конечно, вы по-прежнему теряете контрольную сумму для всех операций записи на месте.