如果您的网站比例过大,upload_media无法放在一台机器上,您会怎么做?

当你的网站扩展得如此之大以至于你上传的upload_media(在Django中,用户存储的所有上传的媒体文件都存储在这里)不能在一台机器上安装?

我个人的情况是,我使用Django,并有一个超过600GB的存储空间的超大upload_media服务器(但是这个空间已经不多了)。

我已经头脑风暴的可能解决scheme:
1)尝试build立一个更大的存储机器。
2)移动到一个更抽象的系统,其中up​​load_media的位置和path存储在数据库中(每个文件都有一个数据库ID,该数据库logging存储文件存储在多个uploaded_media服务器上的位置)。

将您的静态媒体移到另一个存储子系统。 这可以采用大型NAS的forms,通过NFS导出到您的networking服务器,或者最好使用像Amazon S3这样的对象存储来存储您的静态媒体。 用正确的咒语,你可以让用户的浏览器直接上传文件到S3。 但是,如果这不在卡片中,则可以在短时间内在本地存储上传的文件,然后定期运行一个作业,并将项目上载到S3(也将数据库更新到正确的位置)。

想到几个选项:

  1. 添加更多的存储(即第二个硬盘驱动器)(并可能将其设置为JBOD,使其看起来与服务器连续)。
  2. 考虑一个像GlusterFS这样的networking文件系统。 这将使您可以将数据存储在多台机器上,所有这些机器都可以透明地访问本地机器。
  3. 考虑使用外部存储服务,如亚马逊的S3。 你可以把它挂载成本地存储(比如使用S3fuse),并且可以根据你的需要进行扩展(除了成本之外,在这种情况下还有一点性能限制 – 它绝对不适用于诸如数据库,但对于媒体文件应该是相当充足的)。
  4. 一个不好的select(至less在我看来)是使用一个压缩文件系统(fusecompress,btrfs)来获得一些额外的空间 – 这取决于文件的types,这可能会节省大量的空间(例如文档)或几乎没有(对于图像/音乐/video)。 当然,这会造成显着的性能下降。

也许可以将上面的一些结合起来(例如,使用GlusterFS上的现有存储和S3来获得无缝的结果 – 但是添加的层数越多,性能越差)。然后,对于主要存储文件,这可能不是主要考虑因素)。