Как создать файловую систему s3ql и автоматически смонтировать ее при загрузке?

Я экспериментировал с s3ql в Ubuntu 10.04, используя его для монтирования корзин Amazon S3. Однако мне бы очень хотелось, чтобы они монтировались автоматически. Кто-нибудь знает, как это сделать?


Решение:

Благодаря помощи Nikratio из s3ql я наконец-то смог монтируйте S3 buckets автоматически при загрузке системы. Вы определенно захотите взглянуть на руководство , но вот основы того, как это сделать!

Первый шаг - создать файл authinfo. Этот файл должен быть помещен в каталог .s3ql в домашнем каталоге пользователя, который будет его использовать. Файл authinfo содержит информацию для входа в систему, позволяющую s3ql монтировать сегменты без запроса. Ниже приведен пример того, как должен выглядеть ваш файл authinfo. Первая строка содержит ваши учетные данные безопасности Amazon. Второй содержит местоположение и пароль для вашего ведра. Вы можете добавить несколько строк строки в этот файл, если это необходимо, но я использую только одну в этом примере. На этом этапе пароль может быть любым.

backend s3 machine any login YourAWSAccessKeyID password YourAWSSecretAccessKey
storage-url s3://mybucket password EncryptionPasswordOfYourChoosing

encryption_password_of_your_choosing используется S3QL для шифрования / дешифрования всех операций записи / чтения файлов из S3.

Имя сегмента должно быть уникальным во всех AWS: два пользователя не могут иметь одно и то же имя сегмента, поэтому рекомендуется заходить в Amazon Web Services и пробовать разные имена, пока не найдете подходящее. Хорошая схема именования - использовать имя домена + сервера, с которого вы будете получать доступ к корзине (например, «staging.example.com» или «east.coast.01.example.com», или как угодно).

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

mkfs.s3ql s3://mybucket

Она запросит у вас пароль шифрования. Он должен совпадать с паролем в файле authinfo.

Теперь, когда ваша файловая система создана, вы можете смонтировать ее с помощью команды:

mount.s3ql s3://mybucket /mnt/s3/bucket

Конечно, ваше имя сегмента и точка монтирования будут разными.

Теперь, если мы хотим автоматически смонтировать этот сегмент при загрузке, нам нужно добавить скрипт выгрузки в / etc / init. К счастью, s3ql поставляется с одним, s3ql.conf.

Я добавил «--allow-other» в команду mount.s3ql, чтобы разрешить пользователям, отличным от root, доступ к смонтированному сегменту.

#
# This file can be placed in /etc/init. It defines an upstart job that
# takes care of mounting and unmounting an S3QL file system.
# 
description "S3QL Backup File System"
author      "Nikolaus Rath <Nikolaus@rath.org>"

start on (filesystem and net-device-up IFACE=eth0)
stop on runlevel [016]

env BUCKET="s3://mybucket"
env MOUNTPOINT="/mnt/s3/bucket"

expect stop

script
    # Redirect stdout and stderr into the system log
    DIR=$(mktemp -d)
    mkfifo "$DIR/LOG_FIFO"
    logger -t s3ql -p local0.info < "$DIR/LOG_FIFO" &
    exec > "$DIR/LOG_FIFO"
    exec 2>&1
    rm -rf "$DIR"

    # Check and mount file system
    fsck.s3ql --batch "$BUCKET"
    exec mount.s3ql --upstart --allow-other "$BUCKET" "$MOUNTPOINT"
end script

pre-stop script
    umount.s3ql "$MOUNTPOINT"
end script

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

Моя проблема была вызвана тем, что upstart запускал скрипт от имени пользователя root, но я создал файловую систему как другой пользователь. Когда я скопировал каталог .s3ql из домашнего каталога пользователя, в который я вошел, как / root, проблема была решена.

1123 Надеюсь, это поможет кому-то еще. Несмотря на то, что я долгое время не использовал мое смонтированное ведро S3, я впечатлен тем, как прошли мои первоначальные испытания.

Кроме того, этот ответ был написан примерно через неделю после того, как решение было найдено. Я думаю, что я охватил все, но если вы обнаружите, что я пропустил шаг, дайте мне знать, и я добавлю это. Вы также захотите прочитать руководство , его действительно стоит прочитать, если вы собираетесь использовать s3ql.

4
задан 14 October 2012 в 10:13

2 ответа

С некоторой помощью Nikratio я наконец-то смог автоматически смонтировать ведро S3 при загрузке. Я обновил свой вопрос с помощью решения.

0
ответ дан 14 October 2012 в 10:13

Современные установки Ubuntu используют управляемую событиями систему запуска для большей части процесса загрузки, так что лучше всего начать с этого. В / etc / init у вас будет скрипт, который будет выглядеть примерно так:

description     "S3FS"

start on (filesystem
        and net-device-up IFACE!=lo)
stop on runlevel[!2345]

console output
expect fork
respawn

script
    # Redirect stdout and stderr into the system log
    DIR=$(mktemp -d)
    mkfifo "$DIR/LOG_FIFO"
    logger -t s3ql -p local0.info < "$DIR/LOG_FIFO" &
    exec > "$DIR/LOG_FIFO"
    exec 2>&1
    rm -rf "$DIR"

    modprobe fuse
    fsck.s3ql --batch s3://mybucket
    exec mount.s3ql --allow-other s3://mybucket /mnt/s3fs
end script

Вам придется выполнить некоторые тестовые работы - я не знаю, как будет вести себя перенаправление вывода для ведения журнала и вам может понадобиться настроить скрипт после остановки, чтобы правильно размонтировать файловую систему.

Документация выскочки здесь здесь . Я еще не нашел пакет, основанный на FUSE, который использует его, но я не провел исчерпывающий поиск.

Альтернативой может быть создание записи fstab для файловой системы, чтобы оставить записи mountall, чтобы позаботиться о ее монтировании, но я не знаю, есть ли способ указать, что данная файловая система FUSE зависит от сети.

0
ответ дан 14 October 2012 в 10:13

Другие вопросы по тегам:

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