Search code examples
seaweedfs

How to pre-allocated volumes on a specified volume server to balance volumes?


I have a master server M1 and three volume servers V1,V2,V3 in my cluster. And I want to add three more volume servers. V1,V2,V3 already have 30 volumes and newly added V4,V5,V6 have no volumes.

Now I want new files to be stored in V4,V5,V6, but after some time I see no new volumes appears under V4,V5,V6. Of course, volume.balance should solve balance it, but the url to files will change. The url are like V1address:V1port/somefid and may become V5address:V5port/somefid after balance.

If I pre-allocate volumes, the pre-allocated ones are randomly allocated at all volume server. How to pre-allocated volumes only on V4,V5,V6?


Solution

  • The volumes are expected to move around. Use the volume id to lookup the location, and then resolve to the volume server address.

    To explicitly create volumes on specific servers, see https://github.com/chrislusf/seaweedfs/wiki/Optimization#increase-concurrent-writes

    curl http://localhost:9333/vol/grow?count=12&dataCenter=dc1&rack=rack1
    curl http://localhost:9333/vol/grow?count=12&dataCenter=dc1&rack=rack1&dataNode=node1