Re: 'Immutable bit' on pools to prevent deletion

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sage Weil wrote:

> On Fri, 16 Jan 2015, Alex Elsayed wrote:
>> Wido den Hollander wrote:
>> 
>> <snip>
>> > Is it a sane thing to look at 'features' which pools could have? Other
>> > features which might be set on a pool:
>> > 
>> > - Read Only (all write operations return -EPERM)
>> > - Delete Protected
>> 
>> There's another pool feature I'd find very useful: a WORM flag, that
>> permits only create & append (at the RADOS level, not the RBD level as
>> was an Emperor blueprint).
>> 
>> In particular, I'd _love_ being able to make something that takes
>> Postgres WAL logs and puts them in such a pool, providing real guarantees
>> re: consistency. Similarly, audit logs and such for compliance.
> 
> How would you want this to work?
> 
> - If the bit is set, object creates are allowed, but not deletes?  What
> about append?
> 
> - Are you allowed to clear the bit with something like 'ceph osd pool set
> <pool> worm false' ?

I'd say that a WORM pool would allow 'create' and 'append' only - that fits 
well with the classic notions of WORM media, and would allow natural 
implementations of virtualized WORM tape libraries and such for people who 
need compatibility (if only object creation was supported, you get issues 
where either you have absurd tiny objects or risk data loss on failure to 
write a larger buffered chunk). Similarly, audit records (like selinux logs, 
that might be written by log daemons) don't really come in nice object-sized 
chunks. You want to always have the newest in the archive, so you really 
don't want to buffer up to that.

I'd also figure that WORM's main purpose is assurance/compliance - you want 
to _know_ that nobody could have turned the bit off, futzed with the data, 
and then turned it back on. Otherwise, you'd just write your clients to only 
use create/append, and have no need for WORM at the pool level. Because of 
that, if the flag can be cleared via commands, it should be possible for the 
admins to forbid it (by flat denying it in config, via some keying system, 
via the bits being a ratchet, whatever - I'm not especially concerned by how 
the guarantee is provided, so long as it can be).

Setting it should probably also be privileged, since it'd be trivial to 
cause a DOS by setting it on (say) a CephFS pool - although handling that 
concern is likely out-of-scope for now, since there are easier ways to ruin 
someone's day at the RADOS level.


--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux