Hi Vladimir,
> First, I'd like to thank LeoFS developers for this product. It's working without problems in our dev environment for a few months and production testing went fine as well, so we are about to launch real production and start data migration to LeoFS cluster. When preparing production setup I got a few various questions, since they are so random I decided to post them here instead of github.
Great to hear that. we will keep help you bring LeoFS into the
production as much as we can :)
> 1) Using DNS node names vs. IPs? Do nodes resolve the names on start and just use IPs internally after that (i.e. there will be no problems if DNS doesn't work for a some moment if all nodes are already launched)? Or they will resolve each time commands like "leofs-adm status <node>" is executed?
The timing to resolve the names depends on the erlang runtime (how
distributed erlang is implemented on the name resolving) and IIRC it
tries to resolve the name each time when the RPC(remote procedure
call) is invoked (I will check when I can spare time).
> 2) Amount of AVS files and backend_db.eleveldb.max_open_files parameter.
> We are using storage nodes with 4 drives, 6 TB each; I plan to set 64 AVS files per drive to keep each file under 100 GB (though right now after moving all data to the cluster they'll be probably like 50 GB each). That's 4*64 databases, each requires 8 (or maybe 6?) open handles; that means that backend_db.eleveldb.max_open_files definitely needs to be increased so it's over 1000, right? Or I'm misunderstanding this setting?
I've checked the latest implementation of leveldb managed by basho and
noticed max_open_files seems to be no longer used according to
https://github.com/basho/leveldb/blob/44cb7cbc85590280c9a73856470d5880f4015927/include/leveldb/options.h#L126-L131
That said, you'd not need to increase that param.
> Size of metadata: in our case it's 420-440 bytes per object, according to my calculations with 64 AVS files per drive it will be 263 MB per each (of 64) metadata directory right now but up to 530 MB in theory when the servers are more filled with data. Is that OK (considering that it's stored on HDD, R:W ratio is about 5:1 and there are almost no updates / deletes) or it would be better to use 128 AVS files per drive?
OK.
> 3) For this configuration (4 drives per node, each having 64 or maybe 128 AVS files) should num_of_vnodes be increased or default value is fine?
The optimal num_of_vnodes is not affected by the parameters related to
AVS (how many AVS files/directories are there on the host) but
affected by the number of nodes in your cluster and also how many
objects are supposed to be stored on the cluster.
@yosukehara will teach you the actual calculator to estimate the
optimal num_of_vnodes later on.
> 4) For manual compaction with "compact-start", I don't quite understand "num-of-targets" option. First of all, what's the point in specifying anything but "all" there if you can't specify which AVS files exactly would be compacted? I mean, when executing "leofs-adm compact-start 5" - which 5 would these be? Now, I've seen that somehow when I wait till compaction of these 5 is over and then execute the same command again, the next set of 5 would be picked instead of re-compacting the same ones - but how does it work?
the next set of 5 would be picked while leo_storage is running (reset
the offset where to pick up when leo_storage goes down as the
information stored on memory).
> 5) On new clusters, there is user "_test_leofs" with admin rights (!) by default. Why? Should it be removed for security reasons (or at least stripped of admin rights)? Isn't it a bad idea that it's created by default even on systems not set up for testing?
You are right. filed on
https://github.com/leo-project/leofs/issues/825
> 6) What do "admin rights" mean for user, anyway?
It had been used by the web admin UI for leofs - leo_center
https://github.com/leo-project/leo_center to provide the login
functionality however it's outdated (not actively maintained now)
> 7) In "create-user" command, what is "password" argument for? There is also "update-user-password" which kind of works but doesn't seem to have any visible effect.
login users for leo_center.
> 8) leo_gateway generates lots of lines (256 in my case) like this upon startup (in erlang.log)
> Some memory debug option is enabled by default? It doesn't happen for other node types.
Now the debug information for off-heap memory always outputted on
leo_gateway (it should be suppressed). filed on
https://github.com/leo-project/leofs/issues/824
> 9) When building LeoFS package using Erlang package from
erlang-solutions.com, these packages have HiPE enabled. Official LeoFS packages are build with Erlang runtime without HiPE, also README.md in repo recommends --disable-hipe options when building Erlang. Is HiPE-enabled runtime a problem and should be disabled, or it doesn't matter? (at very least, I haven't noticed any problems running LeoFS using Erlang from
erlang-solutions.com in my testing)
The performance with enabled HiPE was somewhat lower than one with
disabled HiPE when we benchmarked around 2 years ago however it might
be changed so we are going to validate that is still true on OTP19.x.
filed on
https://github.com/leo-project/leofs/issues/826
> 10) This question is about future project unrelated to current cluster. Some of our services (which are running in docker) actively write certain objects, which are only needed for a short time. Actually, most of them fall into "WOR(A)N" (write once - read (almost) never) category; there are lots of these objects (e.g. 50 GB per day) and they are on TTL, all objects which are > 7 days old are removed.
> NFS+docker is a bit of problematic combo, so we'd like to replace it with LeoFS. However, since removing objects by TTL currently isn't supported, so we had an idea of using buckets for that. Like, create buckets "2017-09-01", "2017-09-02" and so on and put objects to the bucket according to the day of object creation, and every day remove bucket which is few days old. The plan is to do it after
https://github.com/leo-project/leofs/issues/725 is fixed and there are no known issues with deleting buckets, at least (because bucket removal will be done by script in unattended way). Now the question is - will this work as planned or there are some obvious reasons why it won't work? Like, creating buckets for whole year (or few years) in advance would cause some problems, or something else maybe.
It should work as planned so please file any issue if you find
something wrong/unexpected with this use case (TTL implemented by
buckets named datetime).
Best,
Kanno.
> --
> You received this message because you are subscribed to the Google Groups
> "LeoProject.LeoFS" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to
leoproject_leo...@googlegroups.com.
> To post to this group, send email to
leoproje...@googlegroups.com.
> To view this discussion on the web visit
>
https://groups.google.com/d/msgid/leoproject_leofs/65b8f821-8f6c-48ce-aa8e-efe9b3620617%40googlegroups.com.
> For more options, visit
https://groups.google.com/d/optout.
--
Yoshiyuki Kanno
LeoFS Committer(
http://leo-project.net/leofs/index.html)