According to Ceph's documentation, when storing a file into Ceph, it is split into many objects first, and CRUSH will then map each object to a placement group.
When we read a file from Ceph, we only input the key to to get the file, how does Ceph know how many objects the file is split into, and how does it find all objects belong to a file ?