Scale out Sync & Share with Seafile on Ceph

Scale out Sync & Share with Seafile on Ceph

Scale out Sync & Share with Seafile on Ceph Sönke Schippmann Stefan Wichmann Ceph Day @ CERN 17.9.2019 Scale out Sync & Share with Seafile on Ceph 1/13 Just another sync & share service ● Private cloud service, like owncloud/ nextcloud and many others ● better performance ● lightweight daemon ● not a groupware ● community / pro edition Scale out Sync & Share with Seafile on Ceph 2/13 Seafile at University of Bremen ● 9.000 Seafile users ● 1 virtual machine ● 3.000 active users ● 8 vCPUs (>50% idle) ● 21.000 libraries ● 32 GByte RAM ● 34 TByte data ● file storage: ZFS on RBD ● 150 million files ● migrating to S3 ● growing 25% per year storage Scale out Sync & Share with Seafile on Ceph 3/13 Storage backends ● Backends supported ● multiple backends (pro edition only): can be used in – file storage (default) parallel (since 6.3) – S3 (recommended for Ceph) – OpenStack Swift – Ceph / librados (faster, but no multiple backend support) Scale out Sync & Share with Seafile on Ceph 4/13 Configure S3 storage ● 3 buckets needed: – seafile-commits – seafile-fs – seafile-blocks ● configure S3 user ● consider placement target by buckets or user – separate data and index pool gives better flexibility Scale out Sync & Share with Seafile on Ceph 5/13 Enable multiple storage backends /seafile/conf/seafile.conf: [storage] enable_storage_classes = true storage_classes_file = /seafile/conf/storage_classes.json /seafile/conf/seahub_settings.py: ENABLE_STORAGE_CLASSES = True STORAGE_CLASS_MAPPING_POLICY = 'ROLE_BASED' # or 'USER_SELECT' Scale out Sync & Share with Seafile on Ceph 6/13 storage_classes.json [{"storage_id": "s3_storage", {"storage_id": "filesystem", "name": "S3", "name": "Filesystem", "is_default": false, "is_default": true, "commits": { "commits": { "backend": "s3", "backend": "fs", "use_https": true, "dir": "/seafile/seafile-data"}, "path_style_request": true, “blocks”: { ... }, “fs”: { ... } }] "bucket": "seafile-commits", "key": "yourkey", "key_id": “yourid", "host":"radosgw.example.com:7480" }, “blocks”: { ... }, “fs”: { ... }}, Scale out Sync & Share with Seafile on Ceph 7/13 Seafile caveats ● Before changing default storage to S3, repos on file storage need to be configured in database: insert into RepoStorageId (repo_id,storage_id) select r.repo_id, 'filesystem' from Repo r left join RepoStorageId s on r.repo_id=s.repo_id where s.repo_id is null Also with GarbageRepos, RepoTrash and (just to be sure) VirtualRepo ● In Seafile version 6.3: Bug in configuration code for S3 storage backend (fixed in 7.0.3, patch backport available) Scale out Sync & Share with Seafile on Ceph 8/13 Data model derived from Git Database commits/repo-id/commit-id RepoSize.head_id Branch.commit_id contains commit log text and root fs-id fs/repo-id/fs-id directory object fs/repo-id/fs-id fs/repo-id/fs-id file object file object blocks/repo-id/block-id blocks blocks blocks blocks 10 MByte chunks of data On file storage, object ID is split: 2 chars subfolder, 38 filename Scale out Sync & Share with Seafile on Ceph 9/13 Migrating data to S3 ● Seafile offers a script for offline migration ● downtime not acceptable (2-4 weeks) ● storage file names translate well to S3 object names: storage/commits/36125405-bba8-45d1-80f1-c4aeb351ecc1/ 19/1cdd9f5372bd5ee186d8bc5a1ea23236061ccd s3://seafile-commits/36125405-bba8-45d1-80f1-c4aeb351ecc1/ 191cdd9f5372bd5ee186d8bc5a1ea23236061ccd ● online migration scenario (scripts available): – copy all files, repo by repo – change repo's Storage-ID in Database Scale out Sync & Share with Seafile on Ceph 10/13 Backup and Restore ● make database dump ● restore per repository: ● copy Branch.commit_id – create new repo with WebAPI ● copy objects from S3 to a backup filesystem – copy all files with new repo ID – use filestorage layout – change head ● Seafile could directly ID/commit ID to value use backup file storage of Branch.commit_id for that backup Scale out Sync & Share with Seafile on Ceph 11/13 Running a Seafile cluster Scale out Sync & Share with Seafile on Ceph 12/13 Thank you ● More in Seafile's manual: https://manual.seafile.com ● Our slides, patch, migration and backup scripts: http://unihb.eu/4eNoRHGd Questions? [email protected] Scale out Sync & Share with Seafile on Ceph 13/13.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    13 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us