Replies: 4 comments 16 replies
-
Stratis should consider:
|
Beta Was this translation helpful? Give feedback.
-
There is a specific reason why you plan to use |
Beta Was this translation helpful? Give feedback.
-
We'd also like to get some feedback about some preliminary work required to support RAID properly. Our current metadata abstraction is probably going to require making an important decision regarding future features. Our current options seem to be:
OverviewFor a bit of background, we are planning, regardless of which we do, to move the static header to the beginning of the device. This will leave it unencrypted. Because of what we store in the static header, this is likely not a problem from a security perspective. It contains UUIDs, device size, etc. Because allocations are controlled by the pool level metadata, malicious data could not be injected into a device that's been increased in size if the pool level metadata is encrypted because any such data added to a given device would be overwritten when the thin pool extends over that part of the newly sized device. Encrypt pool level metadataFrom a security perspective, this seems desirable. The above discussion makes me think that we'd probably want to stop any such case from happening. This, however, brings in complication around stacking. We would ideally like to put encryption on top of RAID if RAID is enabled to avoid encryption amplification by putting it under RAID on each member device. This means that if a pool starts as encrypted without RAID, I see no clean way to move from an MDA region on each block device at the beginning of the unlocked encrypted device to a RAID device with encryption on top with one single MDA at the beginning of the unlocked RAID device. Leave pool level metadata unencryptedThis allows us to keep our abstraction for the static header and MDA virtually unchanged. This also means that if we require storing any information about RAID, integrity, encryption, etc. for setup, this will be accessible as needed on the physical device. However, this could allow any root user to modify the allocations in the metadata which we'd like to protect against in the encryption case. Split MDA into two separate regionsThis idea may not be worth it, but it could potentially allow us to store two separate MDA regions, one being encrypted and relating to everything above encryption, and one being at the blockdev layer next to the static header for all layers up to encryption. This may be the best balance in terms of security and providing enough information for setup of layer from encryption to the bottom of the stack. This could also allow us to have a single MDA in the unencrypted case, moving it to a separate region if the unencrypted pool is converted to an encrypted pool. @lvmguy I still fail to see a path in this case from converting the many encrypted MDA regions to a single encrypted MDA region with RAID underneath. Furthermore, I fail to see a way to convert from an encrypted pool without RAID to an encrypted pool with RAID without first decrypting the entire pool, converting to RAID, then reencrypting the RAID device. Let me know what your thoughts are. |
Beta Was this translation helpful? Give feedback.
-
How do you plan to handle the parity RAID write hole? The only decent approach I can think of is to use a journal, with three-way mirroring for the journal device. There are other solutions, but they require the storage stack to never modify a block in-place, so they are only suitable for software such as bcachefs that obeys this restriction. |
Beta Was this translation helpful? Give feedback.
-
We would like to investigate integrating software RAID support in Stratis.
At present, if a user would like to make their data more secure, we suggest that they use a RAID device as the device that they add to the pool. We are currently adding the ability for a pool to take advantage of a RAID device that the pool uses being enlarged. Thus, by managing the RAID devices that is a Stratis blockdev the user can increase the size of a pool and make use of the underlying RAID device's data safety guarantees.
The new proposal is to integrate support for software RAID directly into Stratis, via dm-raid.
Beta Was this translation helpful? Give feedback.
All reactions