2

我在一所大型大学工作,我部门的大部分备份需求都由中央网络服务提供。但是,许多用户拥有大型文件(例如医学成像扫描)的集合,这些文件超出了他们可用的中央存储空间。

我正在寻求为部门资源提供改进的备份解决方案,并设置了一个 Linux 服务器,员工可以在其中存放这些收藏品。但是,我可以预见服务器中的存储被大量很少访问的文件所淹没。我有一个系统来处理这个问题,但想确保我没有重新发明轮子。

我的概念:

  1. 用户将文件复制到服务器。
  2. 计划作业将所有文件的完整最新副本保存在单独的存储机制上(目前为此指定了一个 1TB 外部驱动器)
  3. 一段时间未访问的文件将从服务器中清除,但仍保留在存储驱动器上,从而在实时环境中保持充足的空间。
  4. 一个简单的界面(可能是基于网络的)让用户可以访问他们所有文件的列表,他们可以从中请求他们需要的文件,这些文件从存储驱动器复制到实时服务器。复制文件后将发送电子邮件通知。

这个概念是基于我在以前的工作中听说但没有直接使用的 PACS(图片存档和通信系统)。这使用了类似的“近线”备份过程来访问大量数据,同时允许在不阻塞网络其他部分的情况下传输到本地机器。这与许多博物馆和学术图书馆使用的原则相似,它们的总“数据持有量”远大于直接访问书架上的数据。

是否有适合我要求的简单开源系统?是否有其他系统使用不同的范例,但仍能满足我的需求?

4

3 回答 3

1

S3 在这里是一个有趣的想法。使用 cron 将超过 1 个月未访问的文件同步到亚马逊的 S3,然后为用户创建一个 Web 界面以将同步的文件恢复回服务器。在将文件移动到 S3 之前和恢复之后发送电子邮件。

无限存储,只为您使用的内容付费。不是一个现有的开源项目,但也不太难组装。

如果您需要良好的安全性,请在将文件推送到 Amazon 之前将文件包装在 GPG 加密中。GPG 非常非常安全。

一个更昂贵的选择是将所有数据存储在本地。如果您不想购买大型磁盘集群或大型 NAS,您可以使用 HDFS:

并同步到行为类似于 S3 的集群。您可以使用商用硬件扩展 HDFS。尤其是如果你有几台旧机器和一个快速网络,这可能比真正的 NAS 便宜得多,而且在尺寸上更具可扩展性。

祝你好运!我期待看到更多关于此的答案。

于 2009-08-07T11:41:40.170 回答
0

-请-不要将患者数据上传到 S3(至少不是我的)。

于 2009-08-07T12:44:30.493 回答
0

谷歌“开源“文件生命周期管理”。对不起,我只知道商业 SAN 应用程序,而不知道是否有 F/OSS 替代品。

商业应用程序的工作方式是文件系统看起来很正常——所有文件都存在。但是,如果在某个时间段内(对我们来说,这是 90 天)没有访问该文件,则该文件将被移动到辅助存储。也就是说,除了前 4094 个字节之外的所有字节都被移动。归档文件后,如果您查找(读取)超过 4094 字节,则在从辅助存储中拉回文件时会稍有延迟。我猜小于 4094 字节的文件永远不会发送到辅助存储,但我从没想过。

此方案的唯一问题是,如果您碰巧有一些东西试图扫描您的所有文件(例如,网络搜索索引)。这往往会将所有内容从二级存储中拉回,填满主存储,IT 人员开始给你毛茸茸的眼球。(我是,,从一些轻微的经验中说出来。)

您可以尝试在 ServerFault.com 上询问此问题。

如果您方便的话,您也许可以使用 cron 和 shell 脚本提出类似的方法。您必须用符号链接替换 ​​4094 字节的内容(请注意,以下内容未经测试)。

# This is the server's local storage, available via network
SOURCE_STORAGE_PATH=/opt/network/mounted/path

# This is the remote big backup mount
TARGET_STORAGE_PATH=/mnt/remote/drive

# This is the number of days to start archiving files
DAYS_TO_ARCHIVE=90

# Find old files that are not already symlinks, using temp files
# NOTE: You might have to account for spaces in file names
TEMP_FILE=$(mktemp)
find ${SOURCE_STORAGE_PATH} -atime +${DAYS_TO_ARCHIVE} -a -not -type l > ${TEMP_FILE}

# This probably needs to change, if too many files in TEMP_FILE...
# this would be a good point to drop into something like Perl
for FILE in $(cat ${TEMP_FILE}); do
    # split source into path and file name
    BASE_PATH=$(dirname ${FILE});
    FILE_NAME=$(basename ${FILE})

    # path to target
    TARGET_PATH=${TARGET_STORAGE_PATH}/${BASE_PATH}
    # make sure target exists (note -p option to mkdir)
    [ -d "${TARGET_PATH}" ] || mkdir -p ${TARGET_PATH}
    # move source to target
    mv ${FILE} ${TARGET_PATH}
    # replace source with symlink to target
    ln -s ${TARGET_PATH}/${FILE_NAME} ${FILE}
done
于 2009-08-07T12:50:31.837 回答