繁体   English   中英

用于用户文件的Linux数据仓库系统? [关闭]

[英]Linux Data Warehouse System for User Files? [closed]

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

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

我的概念:

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

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

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

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

无限的存储空间,只需为您使用的东西付费。 还不是一个现有的开源项目,但组装起来也不太困难。

如果需要良好的安全性,请先将文件包装为GPG加密,然后再将其推送到Amazon。 GPG非常非常安全。

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

并同步到行为类似于S3的群集。 您可以使用商用硬件扩展HDFS。 尤其是如果您已经有几台旧机器和一个快速的网络,那么这可能比严肃的NAS便宜得多,而且规模更可扩展。

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

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

Google的“开源“文件生命周期管理””。 抱歉,我只知道商用SAN应用程序,如果有F / OSS替代产品,则不知道。

商业应用程序的工作方式是文件系统看起来正常-所有文件都存在。 但是,如果在一定时间内(对于我们来说,这是90天)未访问文件,则文件将移至辅助存储。 也就是说,除了前4094个字节以外的所有字节都已移动。 归档文件后,如果您搜索(读取)字节4094之后,从辅助存储器中拉回文件时会稍有延迟。 我猜小于4094字节的文件永远不会发送到辅助存储,但我从未考虑过。

这种方案的唯一问题是,如果碰巧有一些东西试图扫描所有文件(例如,Web搜索索引)。 这往往会将所有内容从辅助存储中拉回,填满主存储,而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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM