4

私はUbuntu10.04でs3qlを試し、AmazonS3バケットをマウントするために使用しています。ただ、自動でマウントして欲しいです。誰かがそれを行う方法を知っていますか?


解決:

s3qlのNikratioの助けを借りて、システムの起動時にS3バケットを自動的にマウントできるようになりました。あなたは間違いなくマニュアルを見たいと思うでしょう、しかしここにそれをする方法の基本があります!

最初のステップは、authinfoファイルを作成することです。このファイルは、それを使用するユーザーのホームディレクトリ内の.s3qlディレクトリに配置する必要があります。authinfoファイルには、s3qlがプロンプトを表示せずにバケットをマウントできるようにするログイン情報が含まれています。以下は、authinfoファイルがどのように表示されるかの例です。最初の行には、Amazonセキュリティクレデンシャルが含まれています。2つ目は、バケットの場所とパスワードが含まれています。必要に応じて、このファイルに複数のバケット行を追加できますが、この例では1つだけを使用しています。この時点で、バケットパスワードは何でもかまいません。

backend s3 machine any login ASDFGHJKL password ZXCVBNM
storage-url s3://mybucket password mypassword

バケット名は一意である必要があります。2人のユーザーが同じバケット名を持つことはできないため、Amazon Web Servicesにログインして、使用可能な名前が見つかるまで別の名前を試すことをお勧めします。見つけたら、それを削除する必要があります。s3qlは、s3qlファイルシステムを作成するときにそれを再作成するからです。バケットがすでに存在する場合は、エラーが発生します。

ファイルシステムを作成するには、次のコマンドを使用します。

mkfs.s3ql s3://mybucket

暗号化パスワードの入力を求められます。これは、authinfoファイルのバケットパスワードと同じである必要があります。

ファイルシステムが作成されたので、次のコマンドを使用してファイルシステムをマウントできます。

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

もちろん、バケット名とマウントポイントは異なります。

ここで、このバケットを起動時に自動的にマウントする場合は、upstartスクリプトを/ etc/initに追加する必要があります。幸い、s3qlにはs3ql.confが同梱されています。

マウントされたバケットにroot以外のユーザーがアクセスできるように、mount.s3qlコマンドに「--allow-other」を追加しました。

#
# 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としてスクリプトを実行していたという事実が原因でしたが、別のユーザーとしてファイルシステムを作成しました。/ rootとしてログインしていたユーザーのホームディレクトリから.s3qlディレクトリをコピーすると、問題は解決しました。

これが他の誰かに役立つことを願っています。マウントされたS3バケットを長い間使用していませんが、最初のテストがどのように行われたかに感銘を受けました。

また、この回答は、解決策が見つかってから約1週間後に作成されました。私はすべてをカバーしたと思いますが、あなたが私がステップを逃したのを見つけたら、私に知らせてください、そして私はそれを追加します。また、マニュアルを読むことをお勧めします。s3qlを使用する場合は、読む価値があります。

4

1 に答える 1

1

Nikratio の助けを借りて、起動時に S3 バケットを自動的にマウントできるようになりました。解決策で質問を更新しました。

于 2011-01-22T18:03:04.537 に答える