Web 服务端如何设计,(附件们)才能灵活地使用多块磁盘

2014-03-11 15:53:51 +08:00
 oldcai
现在的情况是这样的,VPS默认的第一块磁盘满了,加了一块新磁盘进来。
原先把磁盘直接mount到了/var,现在被附件塞的快满了。
现在新增了一块磁盘

目前我的方式是:
创建一个目录,然后mount新磁盘,更改附件上传目录到这个目录,从现在起的文件就都上传到这块磁盘里面。

这样之前的磁盘剩下的空间就不能用了,而且每次增加磁盘都需要更改配置来让附件存储到新的磁盘

有没有好的办法更优雅的处理这件事情?
2588 次点击
所在节点    问与答
10 条回复
oldcai
2014-03-11 16:05:01 +08:00
想到大概可以最开始的时候,使用逻辑卷,后面就可以合并进一个逻辑盘了。
可惜最开始的时候就没有这么干。
下次试试。
Livid
2014-03-11 16:06:15 +08:00
你目前这个情况的话,还可以考虑用符号链接。
caonan
2014-03-11 16:08:30 +08:00
符号链接 +1
senghoo
2014-03-11 16:19:09 +08:00
看看以后还有扩展的需求的话直接新磁盘建立lvm 然后把数据转移过来。之后再用原磁盘扩充lvm
skydiver
2014-03-11 16:28:33 +08:00
符号链接!
oldcai
2014-03-11 17:20:42 +08:00
谢谢

@Livid
@caonan
@skydiver
符号连接好处大概在于不用重启程序吧。
但是我在数据库中保存的相对路径,而目录里面是哈希散列过的几层目录,所以,要保持原先的数据的可访问性,就还是要路径不变吧,符号连接我好像也没法用。

@senghoo
嗯,大概只有扩充lvm能充分利用磁盘了吧。
Livid
2014-03-11 17:24:15 +08:00
@oldcai 比如你可以把第一层,符号链接到另外一块盘上。不过这样做的风险就是,你要确认你的备份程序是可以 follow 符号链接的。
oldcai
2014-03-11 17:49:10 +08:00
@Livid 第一层链接到另一块盘上面的话,是要把原先的数据是要复制过去,还是有办法一个符号链接指向两个地方么,我没有想到 T__T
听起来好像如果只是符号连接,新数据可以按老路径写入和读取,旧数据就得改变一下路径。

或者把新数据改变一下路径,新路径是一个软连接,连到新磁盘的某个目录,并配置新附件上传到新路径。
效果就跟直接在第一层创建一个文件夹,然后将新磁盘mount在上面大致是一样的吧?
gfreezy
2014-03-11 19:19:55 +08:00
lvm里面有一个硬盘损坏会导致整个lvm卷损坏。

我们之前的图片就是用两级hash目录存储,当一块硬盘满了以后,基本就没什么好办法扩展。增加硬盘,然后软连接这个方法只能解燃眉之急。光拷贝就要好长时间,而且如果之后空间又满了,还得重复这个过程。并且单机能加的硬盘数就那么点,总会吃不消的。

如果确实容量可能会涨到一定的程度,那还是直接搭一个分布式存储的方案比较好。如果都是小文件的话,可以看下豆瓣的beansdb。如果是大文件,且io不高,看下moosefs。(直接套用豆瓣的架构)
min
2014-03-11 19:29:55 +08:00
lvm咯

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/103814

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX