In mongodb, is "sh.getBalancerState() is false" the same as "sh.isBanlancerRunning is false"? During upgrading config servers to use WiredTIger, I stopped balancer using sh.setBalancerState(false), and then I run sh.getBalancerState(). The output is false. Does this mean the balancer is not running? After this, I just started to upgrade the config servers to use WiredTiger. But after reading the document carefully, I am not sure whether no migrations are in progress after running sh.setBalancerState(false)? If some migrations are running, but I backup the config data and stopped the config servers one by one. What is the bad effect? Now the config servers are all up with WiredTiger, how to check whether the config servers have the same data, especially config data, meta data....?
Nothing bad happened even if you took the config server offline during a chunk migration. In order for a chunk to be marked as migrated, all three config servers need to be up (Contrary to popular belief they do not form a replica set.).

(The following is a tiny bit simplified for the sake of shortness.)
When a chunk is moved, a global (read cluster wide) lock is written to the config servers. Then, the chunk gets copied over to the target machine. Next, the metadata gets updated so that every mongos asking for data contained in that chunk is pointed to the new server. Only after a successful metadata update, the chunk gets deleted on the old machine. So if anything goes wrong during the chunk migration, the metadata will always point to the correct location, while the lock prevents any data to be written to the chunk. I am not sure when the lock is lifted, but iirc it is done after the metadata update.

So – since all three config servers need to be online for metadata updates – as soon as you put a config server offline, you prevent any chunk migrations from taking effect.