Skip to main content

Настройка нескольких дисков с данными

Вы можете настраивать дополнительные диски с данными и использовать их для размещения данных MySQL и репозиториев.

Кто может использовать эту функцию?

GitHub Enterprise Server

Примечание.

Возможность настраивать и использовать несколько дисков данных находится в public preview и может измениться. Мы будем рады услышать ваши отзывы о предварительном просмотре. Вы можете поделиться им со своей командой по работе с клиентами или оставить комментарий в сообщении в обсуждении сообщества. Наш лучший вариант — делиться отзывами с командой по работе с клиентами.

Зачем добавлять больше дисков в экземпляр GHES?

  • Улучшенное распределение ресурсов:
    • У разных сервисов есть уникальные требования к диску.
    • MySQL в основном зависит от задержки и IOPS.
    • Некоторые ресурсы (например, репозитории) не так сильно выигрывают от дорогого блочного хранилища.
  • Максимальные лимиты виртуальных машин:
    • Один диск часто не способен полностью реализовать ограничения экземпляра.
    • С точки зрения стоимости, обычно нецелесообразно и не стоит запускать всё на самом дорогом или быстром хранилище.
  • Более чёткое разделение распределения ресурсов и услуг:
    • Ресурсы можно распределять целенаправленно, чтобы предотвратить нехватку критически важных услуг.
  • Масштабирование:
    • Клиенты как на автономных, так и на высокодоступных топологиях могут масштабироваться по мере необходимости.

Constraints

  • Мультиданные поддерживаются только в топологиях Автономной и Высокой Доступности (HA).
  • После того как в развертывании настроено несколько дисков данных, это изменение нельзя отменить в данном развертывании.
  • Настройка мульти-дисков и миграция данных обычно требуют некоторого простоя.
    • Вы можете минимизировать это, настроив реплику с мульти-дата-дисками, реплицировав данные с первичного и затем переключившись на реплику.
    • Если вы добавляете мульти-дата-диски напрямую к основному, ожидайте гораздо более длительного простоя.
  • Во время публичного предварительного просмотра мультиданные диски следует использовать только в непроизводственных средах.
  • Не рекомендуется мигрировать MySQL и репозитории на один и тот же диск.
  • В настоящее время можно перенести на дополнительные диски только MySQL и репозитории.

Рекомендации по ресурсам

Если добавить диски, которые работают так же быстро или быстрее, чем текущие, производительность должна улучшиться. Устройства хранения обычно измеряются по IOPS (Input/Output Operations Per Second), пропускной способности и задержке. Для MySQL мы рекомендуем использовать диск с меньшей задержкой и выше IOPS, чем ваш существующий диск данных. Для репозиториев выбирайте диск с более высоким IOPS и пропускной способностью, чем ваш текущий диск данных.

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

Настройка нескольких дисков с данными и путей данных

Предпосылки

  • Рекомендуем сделать недавнюю резервную копию данных перед началом работы.
  • Создайте тестовую среду, чтобы попробовать эту функцию.
    • Во время публичного предпросмотра мы рекомендуем использовать эту функцию только в тестовой среде.
    • Когда функция становится общедоступной, мы рекомендуем протестировать её в непроизводственной среде перед использованием в производстве.

Инструкции

  1. Вы можете провести чистую установку GHES или использовать существующий экземпляр GHES. Диск данных должен быть настроен на /data/user.

  2. После /data/user настройки добавьте к экземпляру дополнительные устройства для хранения блоков.

    В настоящее время ghe-storage-find выбирает первое блочное хранилище для настройки /data/user на основе алфавитного порядка пути к блочному хранилищу. Это происходит при первой загрузке устройства GHES.

    Чтобы иметь больший контроль над использованием диска /data/user, лучше завершить процесс инициализации с одним присоединённым диском изначально.

  3. Инициализируйте многодисковую установку с помощью новых устройств блочного хранения. Чтобы инициализировать поддержку мультидисков, запустите ghe-storage-multi-disk init. При каждой перезагрузке ghe-multi-disk.service они автоматически перемонтируют существующие диски с данными на правильных путях.

    Shell
    /usr/local/share/enterprise/ghe-storage-multi-disk init /dev/nvme2n1 db
    
    Shell
    /usr/local/share/enterprise/ghe-storage-multi-disk init /dev/nvme3n1 git
    

Обратите внимание, что /dev/nvme2n1 и /dev/nvme3n1 являются только примерами путей. Они могут не совпадать с путями в вашей системе. Аналогично, db и git — примеры. Вы можете выбрать разные имена.

  1. Переключитесь в режим обслуживания.

    Shell
    gh es maintenance set --enabled true
    
  2. Мигрируйте желаемые пути данных.

    Для миграции MySQL:

    Shell
    /usr/local/share/enterprise/ghe-storage-migrate-mysql db
    

    Для миграции репозиториев:

    Shell
    /usr/local/share/enterprise/ghe-storage-migrate-repositories git
    
  3. Выход из режима технического обслуживания.

    Shell
    gh es maintenance set --enabled false
    
  4. Протестируйте экземпляр в течение какого-то времени, чтобы убедиться, что всё работает как ожидается.

  5.        **Только после достаточного тестирования** удалите `/data/user/mysql-backup` и `/data/user/repositories-backup`.
    

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

Руководство для конфигураций с высокой доступностью

Следующие рекомендации помогают сократить простои в топологиях с высокой доступностью (HA). Если вы используете автономную топологию, у нас пока нет подобных дополнительных рекомендаций.

Для топологий HA лучший подход — создать новую реплику с несколькими настроенными дисками данных, воспроизвести данные из первичной и затем продвинуть реплику в основную. Перенос данных на дополнительные диски текущего основного не рекомендуется, так как этот процесс может привести к значительным простоям.

  1. Настройте новую реплику HA с лучшими дисками.

    Для планирования миграции данных, используйте du -sh /data/user/mysql и du -sh /data/user/repositories на первичном устройстве для расчёта требований к месту на диске для новой реплики.

  2. Настройте мультидиск на новой реплике HA.

  3. Позвольте первичному HA реплицироваться в реплику.

  4. Следуйте последовательности резервирования, как описано в AUTOTITLE.

Хотя процесс репликации может занять много времени, преимущество в том, что он работает в фоновом режиме, поэтому фактические сбои из-за режима обслуживания значительно уменьшаются.

Пример: настройка двух дополнительных дисков

Этот пример демонстрирует необходимые команды и выходы для инициализации диска и миграции данных. В частности, /data/user/mysql мигрируется в /data/multi-disk/db/mysql, а /data/user/repositories также в /data/multi-disk/git/repositories.

admin@ghe-test-primary:~$ /usr/local/share/enterprise/ghe-storage-multi-disk status
Checking system status...

admin@ghe-test-primary:~$ /usr/local/share/enterprise/ghe-storage-multi-disk info
Dumping disk status and information...

admin@ghe-test-primary:~$ /usr/local/share/enterprise/ghe-storage-multi-disk init /dev/nvme2n1 db
Starting initialization sequence for /dev/nvme2n1 at /data/multi-disk/db...

admin@ghe-test-primary:~$ /usr/local/share/enterprise/ghe-storage-multi-disk init /dev/nvme3n1 git
Starting initialization sequence for /dev/nvme3n1 at /data/multi-disk/git...

admin@ghe-test-primary:~$ /usr/local/share/enterprise/ghe-storage-migrate-mysql db
Start mysql migration to /data/multi-disk/db...
Running checks..
Error: maintenance mode must be enabled before being able to proceed.
ERROR: Last Command: return 1 LINE: 36 ghe-storage-migrate-mysql
Script exited with exit code: 1

admin@ghe-test-primary:~$ ghe-maintenance -s

admin@ghe-test-primary:~$ /usr/local/share/enterprise/ghe-storage-migrate-mysql db
Start repository migration to /data/multi-disk/db...
Success: /data/user/mysql moved to /data/multi-disk/db/mysql
Script exited with exit code: 0

admin@ghe-test-primary:~$ /usr/local/share/enterprise/ghe-storage-migrate-repositories git
Start repository migration to /data/multi-disk/git...
Success: /data/user/repositories moved to /data/multi-disk/git
Script exited with exit code: 0

admin@ghe-test-primary:~$ ghe-maintenance -u

admin@ghe-test-primary:~$ /usr/local/share/enterprise/ghe-storage-multi-disk status
Checking system status...
/data/user/mysql -> /data/multi-disk/db/mysql is correctly symlinked.
Repositories migration was detected...
/data/user/repositories -> /data/multi-disk/git/repositories is correctly symlinked.

admin@ghe-test-primary:~$ /usr/local/share/enterprise/ghe-storage-multi-disk info
Dumping disk status and information...
# Multi disk configuration /data/user/multi-disk-config:
DISK_DB="lvm"
DISK_GIT="lvm"
MYSQL_MIGRATION_PATH="/data/multi-disk/db/mysql"
REPOSITORIES_MIGRATION_PATH="/data/multi-disk/git/repositories"

admin@ghe-test-primary:~$ ls /var/log/multi-disk/
ghe-storage-init-db.log  ghe-storage-init-git.log  ghe-storage-migrate-mysql.log  ghe-storage-migrate-repositories.log

Гигиенические проверки

Оба варианта /usr/local/share/enterprise/ghe-storage-multi-disk status полезны /usr/local/share/enterprise/ghe-storage-multi-disk info для проверки вашей настройки.

Чтобы просмотреть текущую многодисковую конфигурацию, воспользуйтесь:

$ cat /data/user/multi-disk-config
DISK_DB="lvm"
DISK_GIT="lvm"
MYSQL_MIGRATION_PATH="/data/multi-disk/db/mysql"
REPOSITORIES_MIGRATION_PATH="/data/multi-disk/git/repositories"

Для просмотра многодисковых журналов, включая инициализацию диска и события миграции, выполните:

$ ls -l /var/log/multi-disk/
total 56
-rw-r--r-- 1 root root  2398 Mar  3 13:22 ghe-storage-init-db.log
-rw-r--r-- 1 root root  2497 Mar  3 13:23 ghe-storage-init-git.log
-rw-r--r-- 1 root root  2201 Mar  3 13:28 ghe-storage-migrate-mysql.log
-rw-r--r-- 1 root root 37296 Mar  3 13:30 ghe-storage-migrate-repositories.log

Команды для управления несколькими дисками

Эти команды позволяют добавлять несколько дисков и мигрировать определённые сервисы или пути папок на эти диски. Оригинальные пути папок поддерживаются и остаются статичными. Другие службы не знают, что что-то изменилось. Пути статических папок связаны с вновь перенесёнными путями.

Команды включают:

  • ghe-storage-multi-disk
    • status
    • init
    • info
    • mount
    •       `start-services` (рекомендуется только для отладки)
      
    •       `stop-services` (рекомендуется только для отладки)
      
  • ghe-storage-migrate-repositories
    • Мигрирует /data/user/repositories на любой путь диска, созданный с ghe-storage-multi-disk initпомощью .
  • ghe-storage-migrate-mysql
    • Мигрирует /data/user/mysql на любой путь диска, созданный с ghe-storage-multi-disk initпомощью .