多存储后端
某些使用场景下,需要 Seafile 服务可以支持多个存储后端,例如:要将不同的文件类型存储到不同的存储后端。例如,普通文件可以存储到主存储(disks, SSD);文档文件可以存储到 “冷存储”(其他存储系统)。
结合多个存储后端来扩展存储的可扩展性。例如,单独使用一个 NFS 挂载卷时可能会受到大小限制;单独使用一个 S3 后端存储时,当对象数量变得很大时,Ceph RGW 的性能可能会受到很大影响。
在 Seafile 中,以资料库为单位,将数据分散存储到多个存储后端中。在同一个资料库中的所有数据将被存储到同一个存储后端。每个资料库和存储后端之间的映射关系存储在数据库中。根据使用情况选择不同的映射策略。
为了使用该功能,您需要:在 seafile.conf 中定义存储后端。
在 seahub_settings.py 中开启多存储后端功能,并选择一个映射策略。
定义存储后端
在 Seafile 中,每一个存储后端都由一个 "storage class" 代表。存储后端由以下信息定义:storage_id:用来定义存储后端的内部 ID 字符串,对用户不可见。例如:'primary storage'。
name:用户可见的存储名称。
is_default:定义该存储是否是默认的。如果这个存储后端允许用户使用,当用户不选择时,将默认采用该存储后端。
commits:该存储后端中,用来存放 commit 对象的存储位置。它可以是任何 Seafile 支持的存储,比如:文件系统、S3 或者 ceph。
fs:该存储后端中,用来存放 fs 对象的存储位置。它可以是任何 Seafile 支持的存储,比如:文件系统、S3 或者 ceph。
blocks:该存储后端中,用来存放 block 对象的存储位置。它可以是任何 Seafile 支持的存储,比如:文件系统、S3 或者 ceph。
commit, fs, 和 blocks 能够被存储在不同的存储中。这为定义存储后端提供了最为灵活的方式。
在 Seafile 6.3 之前的版本中,不支持多个存储后端。您必须明确地启用这个新功能,并使用与以前定义存储后端不同的语法格式定义存储后端。
首先,你必须在 seafile.conf 中启用这个功能:[storage]
enable_storage_classes=true
storage_classes_file=/opt/seafile_storage_classes.jsonenable_storage_classes