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

问题描述 投票:3回答:1

我一直在尝试用 s3ql 在Ubuntu 10.04上,用它来挂载Amazon S3 buckets。 但是,我很希望它能自动挂载它们。 有人知道怎么做吗?


解决办法。

感谢Nikratio的帮助 s3ql 我终于可以在系统启动时自动挂载S3桶了。你一定要看看 手册,但这里是如何做的基础知识!

第一步是创建一个authinfo文件。 这个文件应该放在使用它的用户的home目录下的.s3ql目录下。 authinfo文件包含了登录信息,允许s3ql在没有提示的情况下加载 buckets。 下面是一个例子,说明你的authinfo文件应该是什么样子的。 第一行包含你的Amazon安全证书。 第二行包含您的 bucket 的位置和密码。 如果需要的话,您可以在这个文件中添加多个 bucket 行,但我在这个例子中只使用一个。 在这一点上,桶的密码可以是任何东西。

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

bucket名称必须是唯一的。 没有两个用户可以拥有相同的 bucket 名称,所以最好登录 Amazon Web Services,尝试不同的名称,直到你找到一个可用的名称。 一旦你找到了一个,你就需要删除它,因为s3ql会在创建你的s3ql文件系统时重新创建它。 如果 bucket 已经存在,你会收到一个错误。

要创建文件系统,使用命令。

mkfs.s3ql s3://mybucket

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

现在你的文件系统已经创建好了,你可以使用命令来挂载它。

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

当然,你的 bucket 名称和挂载点会有所不同。

现在,如果我们想在启动时自动挂载这个 bucket,我们需要在 etcinit 中添加一个 upstart 脚本。 幸运的是,s3ql自带一个,即s3ql.conf。

我在mount.s3ql命令中添加了"--allow-other",允许root以外的用户访问挂载的bucket。

#
# 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 <[email protected]>"

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

添加了这个脚本之后,理论上你应该可以重启并让你的 bucket 自动挂载,但这是我遇到的麻烦。 我的 bucket 没有被挂载。

我的问题是由于upstart是以root身份运行脚本,但我是以另一个用户的身份创建文件系统的。 一旦我把.s3ql目录从我以root身份登录的用户的home目录复制到root,问题就解决了。

我希望这能帮助到其他人。 虽然我挂载的S3桶使用时间不长,但我初步测试的情况给我留下了深刻的印象。

另外,这个答案是在找到解决方案后一周左右写的。 我认为我已经涵盖了所有内容,但如果你发现我遗漏了一个步骤,请告诉我,我会添加它。 你也会想阅读 手册如果你打算使用s3ql,它真的值得一读。

ubuntu amazon-s3 mount boot s3ql
1个回答
1
投票

在Nikratio的帮助下,我终于能够在启动时自动挂载我的S3 bucket了。 我已经更新了我的问题和解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.