如何创建一个S3QL文件系统并在启动时自动挂载?

4

我一直在Ubuntu 10.04上尝试使用s3ql,用它来挂载Amazon S3存储桶。但是,我真的希望它可以自动挂载它们。有人知道怎么做吗?


解决方案:

感谢s3ql的Nikratio的帮助,我终于能够在系统启动时自动挂载S3存储桶。 您肯定会想查看手册,但以下是如何执行此操作的基本步骤!

第一步是创建authinfo文件。 该文件应放置在将使用它的用户的主目录中的.s3ql目录中。 authinfo文件包含允许s3ql无提示地挂载存储桶的登录信息。 下面是您的authinfo文件应如何编写的示例。 第一行包含您的Amazon安全凭据。 第二个包含存储桶的位置和密码。 如果需要,您可以向此文件添加多个bucket-lines,但在此示例中仅使用一个。 此时,存储桶密码可以是任何内容。

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

存储桶名称必须是唯一的。没有两个用户可以使用相同的存储桶名称,因此建议登录Amazon Web Services并尝试不同的名称,直到找到一个可用的名称。一旦找到一个,您需要将其删除,因为s3ql在创建s3ql文件系统时会重新创建它。如果存储桶已经存在,则会收到错误提示。

要创建文件系统,请使用以下命令:

mkfs.s3ql s3://mybucket

它将提示您输入加密密码。这个密码应该与authinfo文件中的bucket密码相同。

现在,您可以使用以下命令挂载文件系统:

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

当然,您的存储桶名称和挂载点会有所不同。
现在,如果我们想要在启动时自动挂载此存储桶,我们需要将一个upstart脚本添加到/etc/init中。幸运的是,s3ql已经打包了一个名为s3ql.conf的脚本。
我在mount.s3ql命令中添加了"--allow-other"以允许用户(非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中,问题就解决了。希望这可以帮助其他人。虽然我使用挂载的S3存储桶时间不长,但我对我的初始测试印象深刻。此答案是在找到解决方案约一周后编写的。我认为我已经涵盖了所有内容,但如果您发现我漏掉了某个步骤,请告诉我,我会添加它。您还需要阅读手册,如果您打算使用s3ql,那么它真的值得一读。

在两个不同的StackExchange论坛上发布相同的问题和答案?? https://askubuntu.com/questions/20574 我认为这不是一个好主意。 - Zia Ul Rehman Mughal
1个回答

1

在 Nikratio 的帮助下,我终于能够在启动时自动挂载我的 S3 存储桶了。我已经更新了我的问题并提供了解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接