Hi, I'm currently working on a project which requires us to backup 2 separate s3 zones/realms and retain it for few months. Requirements were written by someone who doesn't know ceph rgw capabilities. We have to do incremental and full backups. Each type of backup has separate retention period. Is there a way to accomplish this with in a sensible way? My fist idea would be to create multisite replication to archive-zone. But I cannot really enforce data retention on archive zone. It would require us to overwrite lifecycle policies created by our users. As far as I know it's not possible to create zone level lifecycle policy. Users get their accounts are provisioned via openstack swift. Second idea would be to create custom backup script and copy all the buckets in the cluster to different s3 zone. Destination buckets could be all versioned to have desired retention. But this option feels very hackish and messy. Backing up 2 separate s3 zones to one could cause collision in bucket names. Prefixing bucket names with additional information is not safe because buckets have fixed name length. Prefixing object key name is also not ideal. Best regards Adam Prycki
Hi, On 9/25/24 16:57, Adam Prycki wrote:
Hi,
I'm currently working on a project which requires us to backup 2 separate s3 zones/realms and retain it for few months. Requirements were written by someone who doesn't know ceph rgw capabilities. We have to do incremental and full backups. Each type of backup has separate retention period.
Is there a way to accomplish this with in a sensible way?
My fist idea would be to create multisite replication to archive-zone. But I cannot really enforce data retention on archive zone. It would require us to overwrite lifecycle policies created by our users. As far as I know it's not possible to create zone level lifecycle policy. Users get their accounts are provisioned via openstack swift.
Second idea would be to create custom backup script and copy all the buckets in the cluster to different s3 zone. Destination buckets could be all versioned to have desired retention. But this option feels very hackish and messy. Backing up 2 separate s3 zones to one could cause collision in bucket names. Prefixing bucket names with additional information is not safe because buckets have fixed name length. Prefixing object key name is also not ideal.
Some backup solutions (e.g. Bareos, https://www.bareos.com) support backing up the content of S3 buckets. Testing this is still on our TODO list. I'm not sure how well S3 specific stuff like metadata, ACLs, versions etc. are handled (probably not at all), but it might be a good starting point. Best regards, Burkhard Linke
Well, using Ceph as its own backup system has its merits, and I've little doubt something could be cooked up, but another alternative would be to use a true backup system. In my particular case, I use the Bacula backup system product. It's not the most polished thing around, but it is a full-featured backup/restore solution including aging archives, compressed backups and even stuff like automated tape library management. I do incremental daily backups and weekly full backups. Bacula works by linking clients that can read the filesystem (or, buckets in your case) and backend storage units, which can be physical devices or disk directories. In my case, I backup my ceph filesystem in a directory, size-limited so that any given backup volume is size- limited to fit on a DVD if I wanted non-magnetic long-term store. The backup volume file format is analogous to a tarball in that it contains directory and attribute metadata making for a faithful backup and restore. There are offline utilities that can be used to restore if the master backup directory is unavailable. The Bacula solution for backing up from S3 is a plugin for the Enterprise Edition product. What it actually does is download the bucket data from the S3 server to a local spool file, download the S3 metadata directly, then transmit them to the linked storage director via the standard mechanisms. Tim On Wed, 2024-09-25 at 16:57 +0200, Adam Prycki wrote:
Hi,
I'm currently working on a project which requires us to backup 2 separate s3 zones/realms and retain it for few months. Requirements were written by someone who doesn't know ceph rgw capabilities. We have to do incremental and full backups. Each type of backup has separate retention period.
Is there a way to accomplish this with in a sensible way?
My fist idea would be to create multisite replication to archive- zone. But I cannot really enforce data retention on archive zone. It would require us to overwrite lifecycle policies created by our users. As far as I know it's not possible to create zone level lifecycle policy. Users get their accounts are provisioned via openstack swift.
Second idea would be to create custom backup script and copy all the buckets in the cluster to different s3 zone. Destination buckets could be all versioned to have desired retention. But this option feels very hackish and messy. Backing up 2 separate s3 zones to one could cause collision in bucket names. Prefixing bucket names with additional information is not safe because buckets have fixed name length. Prefixing object key name is also not ideal.
Best regards Adam Prycki
starting from quincy, you can define rules for lifecycle to execute on Archive zone alone by specifying <ArchiveZone/> flag under <Filter> https://tracker.ceph.com/issues/53361 On Wed, Sep 25, 2024 at 7:59 AM Adam Prycki <aprycki@man.poznan.pl> wrote:
Hi,
I'm currently working on a project which requires us to backup 2 separate s3 zones/realms and retain it for few months. Requirements were written by someone who doesn't know ceph rgw capabilities. We have to do incremental and full backups. Each type of backup has separate retention period.
Is there a way to accomplish this with in a sensible way?
My fist idea would be to create multisite replication to archive-zone. But I cannot really enforce data retention on archive zone. It would require us to overwrite lifecycle policies created by our users. As far as I know it's not possible to create zone level lifecycle policy. Users get their accounts are provisioned via openstack swift.
Second idea would be to create custom backup script and copy all the buckets in the cluster to different s3 zone. Destination buckets could be all versioned to have desired retention. But this option feels very hackish and messy. Backing up 2 separate s3 zones to one could cause collision in bucket names. Prefixing bucket names with additional information is not safe because buckets have fixed name length. Prefixing object key name is also not ideal.
Best regards Adam Prycki _______________________________________________ ceph-users mailing list -- ceph-users@ceph.io To unsubscribe send an email to ceph-users-leave@ceph.io
Hi Adam, we started a github project for s3/SWIFT synchronization, backup, migration and more use cases. You also can use it in combination with backup solutions. https://github.com/clyso/chorus Joachim joachim.kraftmayer@clyso.com www.clyso.com Hohenzollernstr. 27, 80801 Munich Utting a. A. | HR: Augsburg | HRB: 25866 | USt. ID-Nr.: DE2754306 Am Mi., 25. Sept. 2024 um 19:11 Uhr schrieb Shilpa Manjrabad Jagannath < smanjara@redhat.com>:
starting from quincy, you can define rules for lifecycle to execute on Archive zone alone by specifying <ArchiveZone/> flag under <Filter>
https://tracker.ceph.com/issues/53361
On Wed, Sep 25, 2024 at 7:59 AM Adam Prycki <aprycki@man.poznan.pl> wrote:
Hi,
I'm currently working on a project which requires us to backup 2 separate s3 zones/realms and retain it for few months. Requirements were written by someone who doesn't know ceph rgw capabilities. We have to do incremental and full backups. Each type of backup has separate retention period.
Is there a way to accomplish this with in a sensible way?
My fist idea would be to create multisite replication to archive-zone. But I cannot really enforce data retention on archive zone. It would require us to overwrite lifecycle policies created by our users. As far as I know it's not possible to create zone level lifecycle policy. Users get their accounts are provisioned via openstack swift.
Second idea would be to create custom backup script and copy all the buckets in the cluster to different s3 zone. Destination buckets could be all versioned to have desired retention. But this option feels very hackish and messy. Backing up 2 separate s3 zones to one could cause collision in bucket names. Prefixing bucket names with additional information is not safe because buckets have fixed name length. Prefixing object key name is also not ideal.
Best regards Adam Prycki _______________________________________________ ceph-users mailing list -- ceph-users@ceph.io To unsubscribe send an email to ceph-users-leave@ceph.io
_______________________________________________ ceph-users mailing list -- ceph-users@ceph.io To unsubscribe send an email to ceph-users-leave@ceph.io
Yes, I know. It's just that I would need to define zone wide default lifecycle. For example, archivezone stores 30 days of object versions unless specified otherwise. Is there a way to do it? As far as I know lifecycle you linked is configured per bucket. As a small cloud provide we cannot really configure lifecycle policies for users. Adam Prycki On 25.09.2024 19:10, Shilpa Manjrabad Jagannath wrote:
starting from quincy, you can define rules for lifecycle to execute on Archive zone alone by specifying <ArchiveZone/> flag under <Filter>
https://tracker.ceph.com/issues/53361
On Wed, Sep 25, 2024 at 7:59 AM Adam Prycki <aprycki@man.poznan.pl> wrote:
Hi,
I'm currently working on a project which requires us to backup 2 separate s3 zones/realms and retain it for few months. Requirements were written by someone who doesn't know ceph rgw capabilities. We have to do incremental and full backups. Each type of backup has separate retention period.
Is there a way to accomplish this with in a sensible way?
My fist idea would be to create multisite replication to archive-zone. But I cannot really enforce data retention on archive zone. It would require us to overwrite lifecycle policies created by our users. As far as I know it's not possible to create zone level lifecycle policy. Users get their accounts are provisioned via openstack swift.
Second idea would be to create custom backup script and copy all the buckets in the cluster to different s3 zone. Destination buckets could be all versioned to have desired retention. But this option feels very hackish and messy. Backing up 2 separate s3 zones to one could cause collision in bucket names. Prefixing bucket names with additional information is not safe because buckets have fixed name length. Prefixing object key name is also not ideal.
Best regards Adam Prycki _______________________________________________ ceph-users mailing list -- ceph-users@ceph.io To unsubscribe send an email to ceph-users-leave@ceph.io
We have been using Amazon S3 (rclone.org)<https://rclone.org/s3/#ceph> to copy all the data to a filesystem nightly to provide an S3 backup mechanism. It has Ceph support out the box (added by one of my colleagues a few years ago). ________________________________ From: Adam Prycki <aprycki@man.poznan.pl> Sent: Wednesday, September 25, 2024 7:09 PM To: Shilpa Manjrabad Jagannath <smanjara@redhat.com> Cc: ceph-users@ceph.io <ceph-users@ceph.io> Subject: [EXTERNAL] [ceph-users] Re: Backup strategies for rgw s3 [You don't often get email from aprycki@man.poznan.pl. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ] Yes, I know. It's just that I would need to define zone wide default lifecycle. For example, archivezone stores 30 days of object versions unless specified otherwise. Is there a way to do it? As far as I know lifecycle you linked is configured per bucket. As a small cloud provide we cannot really configure lifecycle policies for users. Adam Prycki On 25.09.2024 19:10, Shilpa Manjrabad Jagannath wrote:
starting from quincy, you can define rules for lifecycle to execute on Archive zone alone by specifying <ArchiveZone/> flag under <Filter>
On Wed, Sep 25, 2024 at 7:59 AM Adam Prycki <aprycki@man.poznan.pl> wrote:
Hi,
I'm currently working on a project which requires us to backup 2 separate s3 zones/realms and retain it for few months. Requirements were written by someone who doesn't know ceph rgw capabilities. We have to do incremental and full backups. Each type of backup has separate retention period.
Is there a way to accomplish this with in a sensible way?
My fist idea would be to create multisite replication to archive-zone. But I cannot really enforce data retention on archive zone. It would require us to overwrite lifecycle policies created by our users. As far as I know it's not possible to create zone level lifecycle policy. Users get their accounts are provisioned via openstack swift.
Second idea would be to create custom backup script and copy all the buckets in the cluster to different s3 zone. Destination buckets could be all versioned to have desired retention. But this option feels very hackish and messy. Backing up 2 separate s3 zones to one could cause collision in bucket names. Prefixing bucket names with additional information is not safe because buckets have fixed name length. Prefixing object key name is also not ideal.
Best regards Adam Prycki _______________________________________________ ceph-users mailing list -- ceph-users@ceph.io To unsubscribe send an email to ceph-users-leave@ceph.io
_______________________________________________ ceph-users mailing list -- ceph-users@ceph.io To unsubscribe send an email to ceph-users-leave@ceph.io
participants (6)
-
Adam Prycki
-
Alex Hussein-Kershaw (HE/HIM)
-
Burkhard Linke
-
Joachim Kraftmayer
-
Shilpa Manjrabad Jagannath
-
Tim Holloway