Рекомендуемый подход для создания пула SSD с горячим набором из 24 дисков: RAID, LVM JBOD и т. Д.?

Я пытаюсь найти самый простой способ выделить 24x локально подключенные твердотельные накопители в качестве большого логического тома с малоценными данными . Я использую их в качестве кэша горячей установки для данных, основное состояние которых (около петабайта) находится в S3, поэтому меня больше заботят производительность, сложность обслуживания и время простоя, чем потерянные данные. Ничто не задержится в горячем набор данных более чем на пару дней, и все равно его легко воссоздать из S3.

  • Средне-большой экземпляр: 32 виртуальных ЦП, 120 ГБ ОЗУ, Skylake
  • 24 локально подключенных SSD @ 375 ГБ каждый = 9 ТБ всего
  • Размещенный в Google Cloud (GCP)
  • Debian 10 (Buster)
  • Доступ в ~ 4 раза тяжелее при чтении, чем при записи
  • Большое количество одновременных пользователей (людей и компьютеров) с довольно произвольными шаблонами доступа и очень жаждущие I /O.
  • 90% файлов размером более 10 МБ

Думаю, о RAID 5 не может быть и речи, нет никаких шансов, что я буду ждать восстановления вручную. Я включаю в сторону RAID 0, RAID 10 или ....может быть, это действительно случай простого пула LVM без RAID? Неужели я действительно что-нибудь потеряю, выбрав этот относительно более простой путь в этом случае?

Моим идеальным решением было бы, чтобы каждый подкаталог (у меня один автономный набор данных для каждого подкаталога) из / полностью содержался на одном диске ( Я могу разместить около 10 поддиректоров на каждом диске). Если диск вышел из строя, у меня будет временное отключение подкаталогов / наборов данных на этом диске, но легко рассуждать о наборе «эти наборы данных загружаются повторно и недоступны». Затем я просто перестроил недостающие наборы данных из S3 на новый диск. Я подозреваю, что LVM jbods (не уверены в правильном слове для этого?) Могут быть ближе всего к воспроизведению этого поведения.

5
задан 14 May 2020 в 15:36
5 ответов

Для прямого ответа на вопрос в заголовке следует использовать поле SAN (Subject Alternate Name) при создании CSR или заказе сертификата. SAN позволяет использовать один сертификат для двух (или более) имен узлов.

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

  1. Настройте внутренний DNS-сервер, который является частным для вашей сети и возвращает внутренний IP-адрес для внутренних машин (например, 192.168.1.10 для software.example.com), и пересылает запрос на внешний DNS-сервер (например, ваш ISP или 8.8.8.8) для неинтраннальных имен. Это «самое правильное» решение и самое простое, если у вас уже есть внутренний DNS-сервер, но, если у вас его еще нет, вам придется настроить один и перенастроить все ваши внутренние машины, чтобы использовать его.

  2. Настройте «hosts file» (/etc/hosts в Linux, проверьте расположение google в Windows, OS X или других операционных системах) на всех внутренних машинах, чтобы сообщить им, что software.example.com находится в 192,168,1,10, не проходя через DNS. Это имеет тот же общий эффект, что и # 1, но это гораздо больше работы по настройке и обслуживанию. Его единственное преимущество заключается в том, что он избегает необходимости настройки внутреннего DNS-сервера.

  3. Сообщите внутренним пользователям использовать IP-адрес или альтернативное имя для внутреннего доступа в любое время, независимо от того, работает ли Интернет или нет. Если у вас нет соответствующей сети SAN в сертификате, они могут «принять риск и продолжить», когда их браузер жалуется на недействительность сертификата. Если у вас нет сети SAN, это очень «неправильное» решение (потому что оно подразумевает игнорирование предупреждений о безопасности браузера), но его проще всего реализовать, если у вас нет сетевой инфраструктуры для любого другого решения.

  4. Если имеется настраиваемый маршрутизатор, обрабатывающий трафик внутренней сети, можно настроить его на отправку трафика для внешнего IP-адреса сервера непосредственно на сервер без маршрутизации через Интернет и обратно. Это позволяет сохранить внутренний видимый IP-адрес на прежнем уровне независимо от того, работает ли соединение или нет, но это наиболее эзотерическое решение, поэтому оно должно быть хорошо задокументировано, если вы делаете это, чтобы не запутать кого-то (скорее всего, самого себя), кто должен отладить проблему маршрутизации в будущем. Это также может не помочь в любом случае, если вы не можете получить доступ к внешним DNS-серверам при отключении подключения, что возвращает нас к «настройке внутреннего DNS и использованию решения # 1».

-121--477905-

Все виртуальные машины без открытого IP-адреса имеют подключение к Интернету, даже если вы не связали NSG с подсетью/NIC. После того, как вы связали его,вы можете проверить через Network Watcher, чтобы убедиться, что все «зеленые», как изображения ниже, пожалуйста, подтвердите, что вы сделали эти тесты так.

В вашем случае вы сказали, что «Устранение неполадок подключения» оказалось недоступным. Можно использовать эффективные маршруты сетевой карты виртуальной машины. Убедитесь, что маршрут по умолчанию 0.0.0.0/0 указывает на Интернет и нет неправильного маршрута. Effective routes

Устранение неполадок подключения показывает достижимость Connection troubleshoot

Здесь Next hop показывает Интернет Next hop

И, наконец, IP-поток показывает разрешенный доступ IP flow

-121--477790-

Вы, похоже, противоречите Вашим потребностям - «Мое идеальное решение будет иметь каждый подкод (у меня есть один автономный набор данных для каждого подкода) из/полностью содержащихся на одном диске» говорит вам, что вы не хотите RAID, LVM или любую абстракционную технологию - Недостаток здесь в том, что вы, скорее всего, будете тратить место на диске, и если набор данных растет, вам придется тратить больше времени на его жонглирование. (Я ожидаю, что вы знаете, что Unix может монтировать диски в произвольных местах дерева файловой системы, так что немного, если подумать, что это должно быть достаточно легко сделать диски видимыми как логическая древовидная структура)

Вы говорите о JBOD или RAID0. Если вы решите использовать комбинированное дисковое решение, RAID0 в большинстве случаев повысит производительность чтения, поскольку данные легко разбиваются по дискам. RAID10 бы купил вам избыточность, которая вам не нужна. JBOD полезен только в том случае, если у вас есть диски разных размеров, и вместо этого лучше использовать LVM, так как он может вести себя так же путь но дает вам гибкость перемещения данных.

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

Если вы хотите потратить определенные усилия, вы можете посмотреть на наиболее подходящие параметры файловой системы и настройки.

4
ответ дан 23 April 2021 в 23:36

Более простая и беспроблемная установка - использовать программный массив RAID + XFS. Если и только если, вы не заботитесь о данных и доступности, вы можете использовать массив RAID0; в противном случае я настоятельно рекомендую вам использовать другую схему RAID. Я обычно предлагаю использовать RAID10, но он требует 50% емкости; для RAID-массива 24x 375 ГБ можно подумать о RAID6 или -gasp- даже RAID5.

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

Другие возможные решения:

  • используйте XFS поверх классического LVM поверх RAID0 / 5/6: устаревший том LVM практически не влияет на производительность и позволяет вам как динамически разбивать отдельные блочные устройства, так и делать кратковременные моментальные снимки ( хотя и с очень высокой потерей производительности)

  • используйте XFS поверх тонкого LVM вместо RAID0 / 5/6: тонкий LVM позволяет создавать современные моментальные снимки с уменьшенным снижением производительности и другие полезности. Если используется с достаточно большим размером блока, производительность хороша

  • , рассмотрите возможность использования ZFS (в его случае с ZoL): особенно если ваши данные сжимаются, это может обеспечить значительное пространство и преимущества в производительности. Более того, поскольку ваша рабочая нагрузка кажется тяжелой для чтения, ZFS ARC может быть более эффективным, чем традиционный кэш страниц Linux

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

Наконец, учтите, что любой вид пула LVM, JBOD или ZFS не означает, что потеря диска приведет к отключению только каталогов, расположенных на таких дисках; скорее, все виртуальное блочное устройство становится недоступным. Чтобы иметь такую ​​изоляцию, вам нужно заложить файловую систему для каждого блочного устройства: это означает, что вы должны управлять различными точками монтирования и, что более важно, чтобы ваше хранилище не было объединено в пул (то есть: у вас может закончиться место на диске , а у остальных много свободного места).

1
ответ дан 23 April 2021 в 23:36

Меня больше интересуют производительность, сложность обслуживания и время простоя больше, чем потерянные данные.

Максимизация производительности указывает на необходимость использования какой-либо формы RAID-0 или RAID10 или LVM. Сложность обслуживания исключает возможность сегментирования диска по подкаталогам (как другой упоминает о жонглировании тома). Минимизация времени простоя означает, что необходимо иметь некоторую форму избыточности, так как потеря одного диска приводит к отключению всего массива, который затем придется восстанавливать. Я прочитал это как «время простоя.» Ухудшение режима на RAID-5, вероятно, также исключает RAID-5 по причинам производительности.

Так что я бы сказал, что ваши варианты RAID10, или RAID1 + LVM. LVM предлагает некоторую повышенную возможность управления размером тома, но многое из этого исчезнет, если вы все равно собираетесь зеркально отразить его с RAID-1. Согласно этой статье https://www.linuxtoday.com/blog/pick-your-pleasure-raid-0-mdadm-striping-or-lvm-striping.html RAID-0 обеспечивает более высокую производительность, чем LVM.

-121--477563-

Заголовок Местоположение используется во внешних перенаправлениях. Попробуйте установить следующее в соответствующем контейнере сервера :

server_name_in_redirect on

Чтобы получить Nginx, используйте определенное имя _ сервера в заголовке Расположение .

-121--477889-

Если вы действительно не заботитесь о данных, только его производительность и скорость восстановления обслуживания, КОГДА он не выйдет из строя, а не избежать сбоя, то, несмотря на все мои обычные лучшие суждения, R0 будет в порядке.

Это не позволяет вам выбрать, что данные идут куда, очевидно, но это будет примерно так быстро, как я могу думать, что это может быть, да, это определенно будет неудачно, но вы можете просто иметь скрипт, который удаляет R0 массив, перестраивает и монтирует его, не должно занять больше минуты или около того, чтобы сделать максимум - вы даже можете запустить его автоматически, когда потеряете доступ к диску.

Один небольшой вопрос - вы хотите 32 x vCPU VM с ядрами Skylake, они не делают ни одного сокета такого размера, чтобы ваша виртуальная машина была разделена на сокеты, это может быть не так быстро, как вы ожидали, может быть, проверить производительность с 32/24/16 ядрами, чтобы увидеть, что влияние будет в порядке, это стоит быстро попробовать, по крайней мере.

1
ответ дан 23 April 2021 в 23:36

Что касается лучшей производительности, сложности обслуживания, вы можете использовать лучшие практики, перечисленные здесь [1] [2], в качестве краткой справки о том, что нужно иметь в виду при создании приложения, использующего облачное хранилище.

[1] https://cloud.google.com/storage/docs/best-practices

[2] https://cloud.google.com/compute/docs/disks/performance

0
ответ дан 23 April 2021 в 23:36

Меня больше волнует производительность, сложность обслуживания и время простоя... чем потерянные данные.

Максимизация производительности указывает на то, что вам нужно использовать RAID-0 или RAID10, или LVM. Сложность обслуживания исключает использование чего-то вроде сегментирования диска по подкаталогам (как еще упоминается жонглирование томами). Минимизация времени простоя означает, что у вас должна быть какая-то форма избыточности, поскольку потеря одного диска выводит из строя весь массив, который потом придется восстанавливать. Я прочитал это как "время простоя". Деградирующий режим на RAID-5, вероятно, также исключает RAID-5 по причинам производительности.

Так что я бы сказал, что ваши варианты - это RAID10 или RAID1+LVM. LVM предлагает некоторые расширенные возможности по управлению размером тома, но многое из этого исчезнет, если вы собираетесь зеркалировать его с RAID-1 в любом случае. Согласно этой статье https://www.linuxtoday.com/blog/pick-your-pleasure-raid-0-mdadm-striping-or-lvm-striping.html RAID-0 обеспечивает лучшую производительность, чем LVM.

2
ответ дан 23 April 2021 в 23:36

Теги

Похожие вопросы