Определите свои диски
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL
findmnt / # устройство, на котором находится операционная система
sudo apt install -y nvme-cli
sudo nvme list # модель, серийный номер и объём каждого диска NVMe
Диски NVMe отображаются как nvme0n1, nvme1n1 и так далее, их разделы — как nvme0n1p1, nvme0n1p2. Диск без разделов, без файловой системы (FSTYPE) и без точки монтирования не используется. Диск, раздел или RAID-устройство, которое показывает findmnt /, содержит систему: не трогайте его и все входящие в него элементы RAID.
Форматирование уничтожает данные на диске. Дважды проверяйте имя устройства перед запуском mkfs, wipefs или mdadm --create, и никогда не указывайте в них системный диск.
Разметьте и отформатируйте диск для данных
DISK=/dev/nvme1n1 # неиспользуемый диск, который вы определили
sudo parted -s $DISK mklabel gpt mkpart data 0% 100%
sudo udevadm settle
sudo mkfs.ext4 -L data ${DISK}p1
# или XFS: sudo apt install -y xfsprogs && sudo mkfs.xfs -L data ${DISK}p1
ext4 — это выбор Ubuntu по умолчанию и безопасный вариант. XFS хорошо работает с очень большими файлами и параллельной записью и часто используется для датасетов и чекпоинтов. Оба варианта подходят — выберите один и двигайтесь дальше.
Монтируйте по UUID в /etc/fstab
sudo mkdir -p /data
UUID=$(sudo blkid -s UUID -o value ${DISK}p1)
echo "UUID=$UUID /data ext4 defaults,noatime,nofail 0 2" | sudo tee -a /etc/fstab
sudo findmnt --verify
sudo systemctl daemon-reload
sudo mount -a
findmnt /data
sudo chown $USER:$USER /data
- Для XFS укажите
xfsи0 0вместоext4и0 2. - Имена устройств, такие как
nvme1n1, могут меняться между перезагрузками; UUID — не меняются. nofailпозволяет серверу завершить загрузку, даже если диск отсутствует, а это важно для машины, к которой у вас есть доступ только по SSH.noatimeпропускает запись метаданных при каждом чтении файла.- Запускайте
sudo findmnt --verifyпосле каждого изменения/etc/fstab.
Дополнительно: RAID 0 на нескольких дисках NVMe
Если на вашем сервере есть несколько неиспользуемых дисков NVMe, RAID 0 объединяет их чередованием в один больший и быстрый том.
RAID 0 не обеспечивает избыточности: если один диск выходит из строя, весь массив теряется. Используйте его для данных, которые можно скачать или воссоздать, — например, датасетов, кэшей и временного пространства (scratch), — и храните копии чекпоинтов и результатов в другом месте.
sudo apt install -y mdadm xfsprogs
sudo wipefs -a /dev/nvme1n1 /dev/nvme2n1 # стирает оба диска
sudo mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/nvme1n1 /dev/nvme2n1
sudo mkfs.xfs -L scratch /dev/md0
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u
sudo mkdir -p /scratch
echo "UUID=$(sudo blkid -s UUID -o value /dev/md0) /scratch xfs defaults,noatime,nofail 0 0" | sudo tee -a /etc/fstab
sudo systemctl daemon-reload && sudo mount -a
cat /proc/mdstat
Подстройте --raid-devices и список устройств под количество ваших дисков. Один диск NVMe уже достаточно быстрый; чередование даёт наибольший выигрыш при больших последовательных операциях чтения и записи, например при потоковом чтении большого датасета.
Перенос данных на сервер и с сервера
# с вашего компьютера или другого сервера
rsync -avhP ./dataset/ gpu1:/data/dataset/
# с сервера на сервер: выполняется на новом сервере, с SSH-ключом, который принимает старый
rsync -avhP alice@203.0.113.10:/data/ /data/
# модели с Hugging Face прямо на NVMe
curl -LsSf https://hf.co/cli/install.sh | bash # устанавливает команду hf
export HF_HOME=/data/hf
hf download Qwen/Qwen3-4B
# много мелких файлов: упакуйте их и перенесите одним архивом
sudo apt install -y zstd
tar -I 'zstd -T0' -cf dataset.tar.zst dataset/
tar -I zstd -xf dataset.tar.zst
Передача по SSH зашифрована на всём пути, а rsync -P продолжает с того места, где остановилась. Для миллионов мелких файлов один архив передаётся намного быстрее, чем файлы по одному. hf CLI также умеет hf auth login для моделей с ограниченным доступом; подробнее о передаче по SSH — в разделе Доступ по SSH.
S3-совместимое хранилище через rclone
Для резервных копий и датасетов, которые вы используете повторно, S3-совместимое объектное хранилище хорошо работает с rclone. Пакеты rclone из дистрибутивов часто устаревшие, поэтому используйте официальный установочный скрипт:
sudo -v ; curl https://rclone.org/install.sh | sudo bash
rclone config # n = новый remote, назовите его s3remote, тип хранилища s3, затем провайдер, ключи и endpoint
rclone lsd s3remote: # список бакетов
rclone copy /data/checkpoints s3remote:my-bucket/checkpoints --progress --transfers 16
rclone check /data/checkpoints s3remote:my-bucket/checkpoints # сравнить обе стороны
rclone copy s3remote:my-bucket/datasets/web /data/datasets/web --progress
rclone copy никогда ничего не удаляет. rclone sync делает получатель идентичным источнику и удаляет всё, чего нет в источнике, поэтому сначала запускайте её с --dry-run. Для чувствительных данных remote crypt в rclone шифрует файлы перед тем, как они покинут сервер.
Сделайте резервную копию до окончания срока аренды
Если срок аренды не продлён, сервер останавливается в конце оплаченного месяца, а его диски стираются. Планируйте так, будто после этой даты на сервере ничего не сохранится.
- Составьте список того, что должно сохраниться: чекпоинты, дообученные веса, созданные вами датасеты, конфигурация, Jupyter-ноутбуки, журналы, скрипты и тома Docker (
docker volume ls). - Скопируйте это в объектное хранилище или на другую машину за несколько дней до окончания срока, а не в последний час.
- Проверьте копию с помощью
rclone checkили контрольных сумм, как показано ниже. - Если сервер всё ещё нужен, продлите его до окончания срока (см. раздел Биллинг и оплата).
cd /data
find checkpoints -type f -print0 | xargs -0 sha256sum > checkpoints.sha256
rclone copy checkpoints.sha256 s3remote:my-bucket/
# после восстановления в другом месте:
sha256sum -c checkpoints.sha256
Чтобы изменить модель GPU или их количество, вы заказываете новую конфигурацию и переносите данные самостоятельно. Те же инструменты копируют их, пока оба сервера работают одновременно.
Нужна помощь с этим руководством?
Расскажите нам о своём GPU, командах, которые вы выполнили, и результате, который получили, через форму обратной связи.
