feat(lep): recurring filesystem trim design
Ref: 5186 Signed-off-by: Chin-Ya Huang <chin-ya.huang@suse.com>
This commit is contained in:
parent
ec6480dd4c
commit
f82928c33e
86
enhancements/20230309-recurring-filesystem-trim.md
Normal file
86
enhancements/20230309-recurring-filesystem-trim.md
Normal file
@ -0,0 +1,86 @@
|
||||
# Recurring Filesystem Trim
|
||||
## Summary
|
||||
|
||||
Longhorn currently supports the [filesystem trim](./20221103-filesystem-trim.md) feature, which allows users to reclaim volume disk spaces of deleted files. However, this is a manual process, which can be time-consuming and inconvenient.
|
||||
|
||||
To improve user experience, Longhorn could automate the process by implementing a new RecurringJob `filesystem-trim` type. This enhancement enables regularly freeing up unused volume spaces and reducing the need for manual interventions.
|
||||
|
||||
### Related Issues
|
||||
|
||||
https://github.com/longhorn/longhorn/issues/5186
|
||||
|
||||
## Motivation
|
||||
|
||||
### Goals
|
||||
|
||||
Introduce a new recurring job type called `filesystem-trim` to periodically trim the volume filesystem to reclaim disk spaces.
|
||||
|
||||
### Non-goals [optional]
|
||||
|
||||
`None`
|
||||
|
||||
## Proposal
|
||||
|
||||
To extend the RecurringJob custom resource definition by adding new `RecurringJobType: filesystem-trim`.
|
||||
|
||||
### User Stories
|
||||
|
||||
To schedule regular volume filesystem trims, user can create a RecurringJob with `spec.task=filesystem-trim` and associating it with volumes.
|
||||
|
||||
### User Experience In Detail
|
||||
|
||||
#### Recurring Filesystem Trim
|
||||
1. The user sees workload volume size has increased over time.
|
||||
1. Create RecurringJob with the `filesystem-trim` task type and assign it to the volume.
|
||||
```yaml
|
||||
apiVersion: longhorn.io/v1beta2
|
||||
kind: RecurringJob
|
||||
metadata:
|
||||
name: recurring-fs-trim-per-min
|
||||
namespace: longhorn-system
|
||||
spec:
|
||||
concurrency: 1
|
||||
cron: '* * * * *'
|
||||
groups: []
|
||||
labels: {}
|
||||
name: recurring-fs-trim-per-min
|
||||
retain: 0
|
||||
task: filesystem-trim
|
||||
```
|
||||
1. The RecurringJob runs and relaims some volume spaces.
|
||||
|
||||
### API changes
|
||||
|
||||
`None`
|
||||
|
||||
## Design
|
||||
|
||||
### Implementation Overview
|
||||
|
||||
#### The RecurringJob `filesystem-trim` Task Type
|
||||
|
||||
1. Call Volume API `ActionTrimFilesystem` when the RecurringJob type is `filesystem-trim`.
|
||||
|
||||
### RecurringJob Mutate
|
||||
|
||||
1. Mutate the `Recurringjob.Spec.Retain` to 0 when the task type is `filesystem-trim` as it is not effective for this type of task.
|
||||
|
||||
### Test plan
|
||||
|
||||
#### Test Recurring Filesystem Trim
|
||||
1. Create workload.
|
||||
1. Create a file with some data in the workload.
|
||||
1. Volume actual size should increase.
|
||||
1. Delete the file.
|
||||
1. Volume actual size should not decrease.
|
||||
1. Create RecurringJob with type `filesystem-trim` and assign to the workload volume.
|
||||
1. Wait for RecurringJob to complete.
|
||||
1. Volume actual size should decrease.
|
||||
|
||||
### Upgrade strategy
|
||||
|
||||
`None`
|
||||
|
||||
## Note [optional]
|
||||
|
||||
`None`
|
Loading…
Reference in New Issue
Block a user