Запись fstab для автоматизации монтирования ведра B2 Backblaze к локальной точке монтирования

Вопрос или проблема

Я поддерживаю безголовый сервер Ubuntu 20.04 LTS и могу вручную смонтировать бакет B2 с помощью fuse s3fs для резервного копирования.

Как добавить строку в fstab, чтобы автоматически монтировать бакет B2 при включении?

Я знаю, что изменение fstab может быть рискованным. Скрипт монтирования, который я получил от Backblaze вопросы и ответы:

sudo s3fs \
     mybucket \
     /path/to/mountpoint \
     -o passwd_file=/etc/passwd-s3fs \
     -o url=https://s3.your-region.backblazeb2.com

Формат записи в fstab задокументирован в Readme s3fs:

mybucket /path/to/mountpoint fuse.s3fs allow_other,use_path_request_style,url=https://s3.your-region.backblazeb2.com,passwd_file=/etc/passwd-s3fs 0 0

Примечание: это вероятно не лучшая идея делать это как запись в /etc/fstab. Почему? Потому что вам нужно, чтобы сеть была активна, прежде чем вы сможете её смонтировать, но может случиться так, что /etc/fstab будет прочитан первым, до того, как у вас появится сеть! (Вы можете добавить _netdev к параметрам монтирования, но я не знаю, учитывает ли Ubuntu 20.04 это – я столкнулся с проблемами с этим).

Вместо этого вам просто нужно иметь unit .mount в systemd. Это может сказать “эй, я завишу от сетевого подключения!”, и монтирование можно будет выполнить автоматически, когда ваша сеть будет работать. (Кроме того, вы также можете сделать .automount, где монтирование происходит не сразу, как только сеть доступна, а как только вы попробуете получить доступ к вашему /path/to/mountpoint, но это уже другая история).

Я объясняю, как это сделать в этом ответе, но для SSHfs. Это практически идентично для s3fs, просто замените каждое появление sshfs на s3fs и укажите What=mybucket. Название файла имеет значение! Оно должно быть сформировано в соответствии с точкой монтирования (см. связанный ответ):

/etc/systemd/system/path-to-mountpoint.mount:

[Unit]
Description=Mount Backblaze
Requires=network-online.target

[Mount]
What=mybucket
Where=/path/to/mountpoint
Type=fuse.s3fs
Options=allow_other,use_path_request_style,url=https://s3.your-region.backblazeb2.com,passwd_file=/etc/passwd-s3fs

Затем вы можете просто активировать монтирование, и оно будет выполняться при каждом загрузке:

 systemctl enable --now path-to-mountpoint.mount

(опустите --now, если хотите дождаться следующей перезагрузки для монтирования.)

Ответ или решение

Для автоматического монтирования бакета Backblaze B2 на локальной файловой системе вашей серверной установки Ubuntu 20.04 LTS, вы можете использовать систему управления службами systemd. Это более современный и надежный способ по сравнению с использованием /etc/fstab, поскольку он позволяет задать зависимость от доступности сети и избежать потенциальных проблем с монтированием во время загрузки.

Вот пошаговая инструкция по созданию файла юнита systemd для монтирования бакета B2:

Шаг 1: Установка s3fs

Если вы еще не установили s3fs, выполните следующую команду:

sudo apt update
sudo apt install s3fs

Шаг 2: Настройка файла с учетными данными

Создайте файл /etc/passwd-s3fs, который будет содержать ваши учетные данные для доступа к Backblaze B2. Структура файла должна быть следующей:

YOUR_ACCESS_KEY_ID:YOUR_SECRET_ACCESS_KEY

Убедитесь, что файл имеет правильные права доступа:

sudo chmod 640 /etc/passwd-s3fs

Шаг 3: Создание файла юнита systemd

Создайте файл юнита systemd для монтирования вашего бакета. Название файла должно соответствовать пути монтирования, например:

sudo nano /etc/systemd/system/path-to-mountpoint.mount

Вставьте следующий код в файл, заменив mybucket и /path/to/mountpoint на фактические значения:

[Unit]
Description=Mount Backblaze B2 Bucket
Requires=network-online.target
Wants=network-online.target

[Mount]
What=mybucket
Where=/path/to/mountpoint
Type=fuse.s3fs
Options=allow_other,use_path_request_style,url=https://s3.us-west-002.backblazeb2.com,passwd_file=/etc/passwd-s3fs

Шаг 4: Активировать юнит

После создания файла юнита активируйте его, чтобы он запускался при каждой загрузке:

sudo systemctl enable --now path-to-mountpoint.mount

Дополнительные настройки

  1. Проверьте статус монтирования:
    Вы можете проверить статус монтирования с помощью команды:

    systemctl status path-to-mountpoint.mount
  2. Автомонтирование при доступе:
    Если вы хотите, чтобы бакет монтировался только при попытке доступа к точке монтирования (автомонтирование), вы можете создать отдельный файл юнита с расширением .automount. Это потребует добавления еще одной конфигурации.

Заключение

Использование systemd для монтирования FTP-серверов, облачных хранилищ или других удаленных систем хранения эффективно и надежно. Это не только упрощает управление программами, но и повышает надежность запуска служб на сервере. Следуйте вышеуказанным шагам, чтобы настроить автоматическое монтирование своего бакета B2 при запуске Ubuntu 20.04 LTS.

Оцените материал
Добавить комментарий

Капча загружается...