-
Notifications
You must be signed in to change notification settings - Fork 82
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
OpenCAS writeback caching for a home NAS with large media files with multi-tier (NVME+SSD+HDD) #1487
Comments
Also an important question, it seems like Btrfs seems to be working okay in my testbench with OpenCAS... is OpenCAS team testing btrfs or planning to support |
@TheLinuxGuy Technically Open CAS should be able to handle any filesystem, as it conforms to the standard Linux bdev interface. So We'll try to evaluate how much would that cost to include |
Understood, thank you for the detailed explanation and for the consideration. XFS and EXT4 are reliable and great - but snapshotting, checksumming, btrfs-send/zfs-send are modern filesystem features that I feel are in demand. IIRC Facebook uses btrfs on all their production fleet. https://facebookmicrosites.github.io/btrfs/docs/btrfs-facebook.html |
I second that zfs support would be great... |
For ZFS and btrfs won't it be great if somebody just merge proper SSD cache to that project? I think for now btrfs support in Open-CAS would be better because in most of the time btrfs is used on single block device because of it's snapshot and other quality of life features. For ZFS it's different. |
Fun fact the tiered storage feature request for btrfs was submitted by me a few years ago: kdave/btrfs-progs#610 Open-CAS officially supporting btrfs filesystem is another way of trying to get something reliable, not just a frankenstein experiment by a single guy hoping for the best and hopefully not hitting some data corruption issue down the line. Since I know I can throw btrfs on top of OpenCAS today but since it isn't really officially supported you are on your own. |
Ahh, its just a feature request which might never see the light of day. I am also trying to find some good solution for storage tearing myself. I guess like me you are also frustrated by current solutions for storage tearing in Linux and finding something which just works and well tested in production. |
Exactly right. The closest solution I have found is Windows ReFS and "Storage spaces" on Windows Server 2025. Linux (open-source) doesn't really have a good solution right now, you can try hacking away with LVM + bcache + zfs and that is the closest fastest thing close to what I would want that doesn't eat 10GB of ram: https://github.com/TheLinuxGuy/ugreen-nas/blob/main/experiments-bench/mdadm-lvm2-bcache-zfs.md#setup-notes But that is a frankenstein of a thing. Unsupported setup and data reliability super questionable when you bundle a bunch of things together like that. |
Wow you did experiments, too much experiments. And don't you think its strange seeing such large performance difference between I think Open Cas should work well with btrfs. |
Question
Looking to ensure that I am using the correct settings to achieve my goal of always write/read from NVME disks and promoting data from HDD as soon as files are accessed.
Motivation
I'm comparing bcache to OpenCAS to see if it can fit my needs. I have some notes in one of my repositories here.
Background:
My goal is as follows:
Your Environment
22.12.0.0855.master
Debian bookworm 12 - Proxmox
6.8.8-2-pve
wb
4 [KiB]
always
nop
never
# casadm -G -n seq-cutoff -i 1 -j 1 ╔═════════════════════════════════════════════════════╤═══════╗ ║ Parameter name │ Value ║ ╠═════════════════════════════════════════════════════╪═══════╣ ║ Sequential cutoff threshold [KiB] │ 1024 ║ ║ Sequential cutoff policy │ never ║ ║ Sequential cutoff promotion request count threshold │ 8 ║ ╚═════════════════════════════════════════════════════╧═══════╝
lsblk
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 12.7T 0 disk sdb 8:16 0 16.4T 0 disk sdc 8:32 0 9.1T 0 disk ├─sdc1 8:33 0 7.3T 0 part │ └─md127 9:127 0 21.8T 0 raid5 │ └─cas1-1 250:0 0 21.8T 0 disk /mnt/btrfs └─sdc2 8:34 0 1.8T 0 part └─md126 9:126 0 1.8T 0 raid1 sdd 8:48 0 9.1T 0 disk ├─sdd1 8:49 0 7.3T 0 part │ └─md127 9:127 0 21.8T 0 raid5 │ └─cas1-1 250:0 0 21.8T 0 disk /mnt/btrfs └─sdd2 8:50 0 1.8T 0 part └─md126 9:126 0 1.8T 0 raid1 sde 8:64 0 7.3T 0 disk └─sde1 8:65 0 7.3T 0 part └─md127 9:127 0 21.8T 0 raid5 └─cas1-1 250:0 0 21.8T 0 disk /mnt/btrfs sdf 8:80 0 7.3T 0 disk └─sdf1 8:81 0 7.3T 0 part └─md127 9:127 0 21.8T 0 raid5 └─cas1-1 250:0 0 21.8T 0 disk /mnt/btrfs zd0 230:0 0 32G 0 disk ├─zd0p1 230:1 0 31G 0 part ├─zd0p2 230:2 0 1K 0 part └─zd0p5 230:5 0 975M 0 part zd16 230:16 0 32G 0 disk zd32 230:32 0 32G 0 disk ├─zd32p1 230:33 0 31G 0 part ├─zd32p2 230:34 0 1K 0 part └─zd32p5 230:37 0 975M 0 part nvme1n1 259:0 0 931.5G 0 disk nvme0n1 259:1 0 931.5G 0 disk nvme2n1 259:2 0 119.2G 0 disk ├─nvme2n1p1 259:3 0 1007K 0 part ├─nvme2n1p2 259:4 0 1G 0 part └─nvme2n1p3 259:5 0 118G 0 part
casadm -P
casadm -L
The text was updated successfully, but these errors were encountered: