How do you know where is the data using virtual node


I am kind of confused on how do we know where is the data by using virtual node since virtual nodes are randomly assigned to different machines. Is there a dictionary like stuff to maintain the map between virtual nodes and machine? Would that cause single point failure?