[英]Linux Data Warehouse System for User Files? [closed]
我在一所大型大学工作,部门的大部分备份要求由中央网络服务提供。 但是,许多用户拥有大文件的集合,例如医学成像扫描,超出了他们可用的中央存储。
我正在寻求为部门资源提供一种改进的备份解决方案,并建立了一个Linux服务器,员工可以在其中存放这些集合。 但是,我可以预见到服务器中的存储将被很少访问的大量文件所淹没。 我有一个处理这个问题的系统,但是想确保我不会重新发明轮子。
我的概念:
这个概念基于我在上一份工作中听说过但未直接使用的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.