-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
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
Hot, warm, cold storage [feature] #1792
Comments
currently, you can do this, but you'll need to create the movement script/job by yourself. please notice the then you can create with fs.configure a path specific setting and set buckets/collections that start with (example) "ssd_" to be allocated to the ssd, and all other collection will be created on the hdd. you can also create specific bucket name... example (within the weed shell): https://github.com/chrislusf/seaweedfs/wiki/Path-Specific-Configuration you will need to create the job that move files from ssd_ collection/bucket to another collection. |
not tested by me (yet) but you may also try just putting the idx files on the ssd. |
do you have Prometheus exists in the DC, you can enable metrics and get some metrics on the SW operations, and maybe identify the problem... |
@LazyDBA247-Anyvision As far as I understand your approach, I'll have to move files from one bucket to another manually. I believe it is suboptimal, as we can just move the whole bucket's volume to another server as one piece. It should be tons faster than copying separate files file by file. My vision of such operation would be to somehow stick newly created volume to a "hot" rack and change their allocation to a "warm" rack(s) by a call, a script, whatever. Kind of hierarchical storage approach. I'm not insisting on that, just my thoughts about it. Yes, I have Prometheus and I'm collecting metrics, but currently they are somewhat unclear to me The actual problem is happening between 8 am to 2 pm, although according to graph the slowest response times are somewhere in between 1 am and 8 am, when mostly write-only workload is happening and no one is really complaining about that. So I'm unsure if it is the storage fault, but I find the idea of hierarchical storage interesting to at least discuss. |
Probably you need to increase the volume counts to increase concurrency. |
You mean the volume server count? Or per bucket volumes? |
volume count. not volume server count. |
I guess you mean that setting? I'm a little bit scared to increase it, because I only have 4 physical HDDs as of now, and concurrency is not the strongest side of HDDs. |
another hack you can do (if you know the data is hot only for X days) |
Added a feature to change disk type ssd <=> hdd when moving a volume. 770393a Need to think of a command to make this easier. |
@chrislusf is that will happen after you "remove" the collection config of ssd? cause the collection configuration will still say 'ssd'... |
collection does not have disk type, but the volumes have, depending on which folder it stays in. |
so the fs.configure only used on volume creation? |
To my understanding, it would be cool to have ability to label volume servers with user supplied values. And placement of a volume is based on that label. So to move to another tier is just to change volume's label (by Another option I can think of, is to label volume servers as different DCs and having rack-level replication move volumes from one DC to another (in the logical sense of course). |
Correct. But the disk type of a volume would not change unless the admin decided to change it. |
btw: this is already implemented in the git master branch. |
Could you please explain how to use it? |
So, all I need is to add |
yes. this is exactly what @LazyDBA247-Anyvision mentioned before. Any suggestion on how to design for the tiering commands? How about this?
Actually will there be any needs to change from hdd to ssd? |
I think it would be cool to have not just
Looks promising 👍 |
@divanikus you can tag whatever, you choose, the example is with hdd,ssd to be more understandable :) |
Current implementation only supports ssd and hdd. Flexible tags are possible. I am not sure there is real need for it though. |
Well, I can think of several HDD tiers for example. Like fast 15000 rpm SAS drives for warm storage and plain 5400 rpm SATAs for "slightly colder" storage :) |
I see that at least parts of this feature are now in the current release. Is |
not yet |
So ok, I have added two dedicated volume servers with SSDs, i've started them with
My buckets are like |
So, another thing. I've created a bucket and used
|
Added a fix 776f497 for this. |
Need to see what's the output of |
Here it is. |
Please try the latest version. |
I've tried the latest on my test environment, looks good. Bucket's volumes are placed on correct volume server and I can move volume to and from ssd no matter on which server it was firstly created. Will try on production soon. |
BTW, noticed that
|
Ack. Added a fix b961cd6 |
|
Currently trying
Also, I've found that nothing gets selected unless I add |
should be ok. seems a bug with replicated volumes. |
added a fix. Just need to update the weed shell. |
I'm currently running a setup with 3 dedicated masters/filers and 4 volume servers 10 TB HDD each.
Our app is writing data to daily buckets. When workload is kind of write-only, everything performs quite well. But if random reading kicks in, performance seem to suffer a lot. I'm currently investigating which side is suffering, our app or the storage. But I want to clear this out for myself: is it possible to organize hot, warm and cold tiers inside one cluster?
I mean, create new buckets on hot storage, for example NVMe SSD based volume servers, and later move it by a call to not so often accessed HDD volume servers (warm). I've read about cloud tier uploads, so it would work for cold phase I guess. But what about hot to warm transition?
Or maybe I'm missing something and I have just misconfigured something so I can really speed up my cluster without any extra abstractions?
The text was updated successfully, but these errors were encountered: