Настройка сервера

Монтирование NVMe-дисков в Ubuntu

В 8-GPU-серверах есть несколько NVMe-дисков для данных по 3,84 ТБ, и при выдаче они могут быть не смонтированы. Найдите их, смонтируйте по одному или как массив RAID 0 и позаботьтесь о сохранности данных.

На этой странице
  1. Поиск NVMe-дисков
  2. Форматирование и монтирование одного диска
  3. Объединение дисков для данных в RAID 0 с помощью mdadm
  4. Проверка состояния дисков
  5. Резервное копирование важных данных
  6. Устранение неполадок

В этом руководстве показано, как смонтировать NVMe-диски в Ubuntu: найти их, отформатировать и смонтировать один диск или объединить диски в массив NVMe RAID 0 с помощью mdadm, а затем проверить состояние дисков и настроить резервное копирование. В наших 8-GPU-серверах установлено восемь NVMe-дисков для данных по 3,84 ТБ, а в сервере с RTX PRO 6000 — четыре. В зависимости от заказа при выдаче они могут быть не смонтированы. На тарифах с одним GPU выполните те же проверки: ваше NVMe-хранилище уже может быть системным диском.

Поиск NVMe-дисков

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL
sudo apt install -y nvme-cli
sudo nvme list

Системный диск — тот, разделы которого смонтированы в / (и обычно в /boot/efi): никогда не форматируйте его. У неиспользуемых дисков для данных нет разделов, значения FSTYPE и точки монтирования. lsblk считает в двоичных единицах, поэтому диск на 3,84 ТБ отображается примерно как 3.5T. Если у дисков уже указан FSTYPE, например linux_raid_member или ext4, значит, они уже настроены: прежде чем что-либо менять, проверьте cat /proc/mdstat и findmnt.

Имена вроде /dev/nvme1n1 на этой странице — лишь примеры. На вашем сервере они могут быть другими и даже меняться между загрузками, поэтому сверяйте каждое имя с выводом lsblk, прежде чем выполнять команду, которая записывает данные на диск.

Форматирование и монтирование одного диска

  1. Создайте файловую систему. В Ubuntu по умолчанию используется ext4, а -m 0 отключает резерв 5% места для root, который тому с данными не нужен. Распространённая альтернатива для больших файлов — XFS (sudo mkfs.xfs -L data1 /dev/nvme1n1, из пакета xfsprogs).
    sudo mkfs.ext4 -m 0 -L data1 /dev/nvme1n1
  2. Смонтируйте диск:
    sudo mkdir -p /data
    sudo mount /dev/nvme1n1 /data
  3. Сделайте монтирование постоянным. UUID не меняется между загрузками, а nofail позволяет серверу загрузиться, даже если диск отсутствует:
    uuid=$(sudo blkid -s UUID -o value /dev/nvme1n1)
    echo "UUID=$uuid /data ext4 defaults,nofail 0 2" | sudo tee -a /etc/fstab
    sudo findmnt --verify
    sudo systemctl daemon-reload
    Для XFS укажите в этой строке xfs вместо ext4.
  4. Проверьте запись без перезагрузки:
    sudo umount /data
    sudo mount -a
    df -h /data
    Должен отобразиться /data размером около 3.5T.

Чтобы использовать другие диски по отдельности, повторите шаги для /data2, /data3 и так далее. Если вы работаете не под root, сделайте себя владельцем точки монтирования командой sudo chown $USER: /data.

Объединение дисков для данных в RAID 0 с помощью mdadm

Вместо того чтобы монтировать диски по одному, их можно объединить. RAID 0 распределяет данные по всем дискам с чередованием (striping): получается один большой том — около 28 ТиБ из восьми дисков — с их суммарной пропускной способностью. Но у этого серьёзная обратная сторона. Если откажет любой из дисков, весь массив будет потерян, поэтому храните на нём данные, которые можно снова скачать или сгенерировать, а копии всего ценного держите в другом месте. Чтобы массив пережил отказ диска, есть RAID 10 (--level=10): он зеркалирует каждый блок ценой половины ёмкости.

  1. Установите mdadm и создайте массив только из дисков для данных. В этом примере их восемь; на сервере с RTX PRO 6000 укажите --raid-devices=4 и четыре имени:
    sudo apt install -y mdadm
    sudo mdadm --create /dev/md0 --level=0 --raid-devices=8 \
      /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 /dev/nvme4n1 \
      /dev/nvme5n1 /dev/nvme6n1 /dev/nvme7n1 /dev/nvme8n1
    Если mdadm предупреждает, что на диске, похоже, есть данные, остановитесь и ещё раз проверьте lsblk, прежде чем отвечать.
  2. Проверьте массив: в выводе cat /proc/mdstat должно быть md0 : active raid0 со всеми дисками, а sudo mdadm --detail /dev/md0 должна показать состояние «clean».
  3. Сохраните описание массива, чтобы при загрузке он собирался как /dev/md0:
    sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
    sudo update-initramfs -u
  4. Создайте файловую систему и смонтируйте её так же, как для одного диска, но используя /dev/md0. mkfs сам считывает параметры чередования из массива, поэтому дополнительная настройка не нужна:
    sudo mkfs.ext4 -m 0 -L data /dev/md0
    sudo mkdir -p /data
    uuid=$(sudo blkid -s UUID -o value /dev/md0)
    echo "UUID=$uuid /data ext4 defaults,nofail 0 2" | sudo tee -a /etc/fstab
    sudo findmnt --verify && sudo systemctl daemon-reload && sudo mount -a
    df -h /data
    Для восьми дисков должен отобразиться размер около 28T.

Проверка состояния дисков

sudo apt install -y smartmontools
sudo smartctl -a /dev/nvme1n1
sudo nvme smart-log /dev/nvme1n1

В выводе smart-log значения critical_warning и media_errors должны быть равны 0, available_spare должно оставаться выше available_spare_threshold, а percentage_used — это оценка износа от производителя. smartctl показывает те же данные с общим вердиктом PASSED или FAILED. Внутри ВМ тарифа с одним GPU эти показатели могут быть недоступны. Если диск сообщает об ошибках, создайте тикет в поддержку в личном кабинете: вышедшие из строя компоненты заменяются в приоритетном порядке.

Резервное копирование важных данных

Мы не делаем резервных копий локального хранилища, а по окончании аренды диски надёжно стираются, как описано на странице об удалении данных. Резервное копирование — ваша ответственность: копируйте чекпоинты, датасеты, которые не получится собрать заново, и конфигурацию в хранилище, которое вы контролируете. О переносе данных на сервер и с него читайте в разделе о rsync и scp.

rsync по SSH зеркалирует папку на другую вашу машину:

rsync -a --info=progress2 /data/checkpoints/ \
  backup@203.0.113.20:/backups/gpu1/checkpoints/

restic хранит зашифрованные снапшоты с дедупликацией — в этом примере на SFTP-сервере, которым вы управляете сами:

sudo apt install -y restic
restic -r sftp:backup@203.0.113.20:/srv/restic/gpu1 init
restic -r sftp:backup@203.0.113.20:/srv/restic/gpu1 backup /data/checkpoints
restic -r sftp:backup@203.0.113.20:/srv/restic/gpu1 snapshots
restic -r sftp:backup@203.0.113.20:/srv/restic/gpu1 \
  restore latest --target /tmp/restore-test

restic запросит пароль репозитория; храните его в надёжном месте, потому что без него резервную копию не прочитать. Запускайте резервное копирование по расписанию через cron или таймер systemd и проверьте восстановление, как в последней команде, до того, как оно понадобится по-настоящему.

Устранение неполадок

  • mkfs или mdadm выдаёт Device or resource busy. Диск смонтирован или уже входит в массив. Проверьте lsblk и cat /proc/mdstat.
  • После перезагрузки массив появляется как /dev/md127. Он не был сохранён в mdadm.conf; повторите шаг 3 из раздела о RAID. Запись в fstab продолжает работать, потому что в ней используется UUID файловой системы.
  • Диск не монтируется при загрузке. Благодаря nofail сервер всё равно загружается. Войдите на сервер и проверьте sudo findmnt --verify и sudo journalctl -b | grep -i mount.

Не получается?

Создайте тикет в личном кабинете: укажите сервер, что вы запускали, и приложите вывод ошибок, если он есть. Инженеры отвечают круглосуточно.

Создать тикет

Вход в FullGPU

Управляйте GPU-серверами, балансом и счетами.

Впервые в FullGPU? Создать аккаунт