Open-CAS / open-cas-linux

Open CAS Linux
https://open-cas.com
BSD 3-Clause "New" or "Revised" License
224 stars 82 forks source link

Does Open-CAS provide SCSI Device(e.g. LTO-9 tape device)? #1579

Open CherryYang05 opened 3 weeks ago

CherryYang05 commented 3 weeks ago

Question

I want to add a SCSI device(LTO-9 tape device) on opencas to build a tape cache. Does opencas natively support the SCSI interface? If not, how much code needs to be modified? Will it be too complicated?

robertbaldyga commented 3 weeks ago

Hi @CherryYang05! In theory it should work somehow, as LTO is a block device. To make it work reasonably good, however, it would need some smaller or bigger adaptations, depending on what is your target use case. Do you want it to be a write cache or read cache? If write cache, then do you need random (at least within some LBA range) writes or only sequential write buffer? If read cache, then what is your expected block size? Do you maybe need prefetcher?

Having more details on the use case will make it easier to estimate how many changes are required to support it.

CherryYang05 commented 3 weeks ago

Hi @CherryYang05! In theory it should work somehow, as LTO is a block device. To make it work reasonably good, however, it would need some smaller or bigger adaptations, depending on what is your target use case. Do you want it to be a write cache or read cache? If write cache, then do you need random (at least within some LBA range) writes or only sequential write buffer? If read cache, then what is your expected block size? Do you maybe need prefetcher?

Having more details on the use case will make it easier to estimate how many changes are required to support it.

@robertbaldyga Thank you very much for your reply. I am currently trying to add tape drive support to OpenCAS and build a hybrid storage system using SSD and tape. In fact, the tape drive is a SCSI sequential device. I hope that SSD can be used as a cache for tape (similar to the current SSD as a cache for HDD). Therefore, I am studying the architecture of OpenCAS and reading its source code. I wonder if there is a slightly more detailed usage document for OpenCAS that I can refer to. And thanks a lot for your reply again.

robertbaldyga commented 3 weeks ago

You have user documentation of Open CAS here https://open-cas.com/. There is not much of a design level documentation, though.

Using SSD as a cache should be possible. The usage scenario of tape drives is, however, very different from usages of HDD, so the cache would need to be optimized for big block access and strong sequentiality guarantees. The seeks on HDD are bad for performance, but acceptable and expected during the normal workload. A SSD cache can reduce number of seeks on the HDD, but not eliminate them. The penalty of seek on a tape drive is extreme, so if you are thinking about supporting non-sequential reads/writes for such a hybrid storage, a transparent SSD cache will most likely be not enough.

Do you have any specific use case you your mind or you just want to explore the possibilities?

CherryYang05 commented 2 weeks ago

@robertbaldyga Thank you for your reply! I understand the difference between sequential devices like tape drives and block devices like HDDs. I currently have a basic design to support SSDs as a cache for tape drives, and I want to explore the possibility of implementing it on OpenCAS. At the moment I just need to be able to test the bandwidth and latency of a hybrid of SSD and tape under various workloads (expected to use fio for testing) without having to implement a file system etc on it. And it's a pleasure to discuss this with you. I am reading the relevant source code and exploring the possibility of implementing tape devices. I will update it in time if there are new questions or progress.

robertbaldyga commented 2 weeks ago

@CherryYang05 Sure. Feel free to ask if you have a question. We did not explore LTO use case with Open CAS before, so any conclusions you have are also potentially very interesting for the project.