2015-03-05 4 views
0

Lors du stockage de fichiers, Ceph découpe les fichiers en plusieurs objets alors que la plupart ont la même taille sauf la dernière (la taille du fichier peut ne pas être un multiple de la taille de l'objet).Quel paramètre peut déterminer la taille de l'objet dans RADOS de Ceph

Je sais sur le site officiel de Ceph que la taille de l'objet n'est pas fixe mais peut être déterminée par un certain paramètre, alors quel est le paramètre déterminant la taille de l'objet?

Répondre

0

Le système de fichiers Ceph est construit au-dessus du système de stockage d'objets RADOS. C'est-à-dire que les octets d'un fichier sont stockés dans un ou plusieurs objets. La façon dont les octets d'un fichier sont mappés sur des objets est appelée stratégie de striping. Par exemple, dans une stratégie de segmentation avec des objets fixes de 1 Mo, les octets d'un fichier aux décalages [0, 2**20) peuvent être stockés dans l'objet 0 et le second mégaoctet [2**20, 2**21) stocké dans l'objet 1, et ainsi de suite. Il existe d'autres façons de mapper le flux d'octets linéaires sur des objets. Il y a plus d'informations ici:

http://ceph.com/docs/master/cephfs/file-layouts/

et vous pouvez changer la stratégie de segmentation par programme lorsque vous utilisez libcephfs:

https://github.com/ceph/ceph/blob/master/src/include/cephfs/libcephfs.h#L738

avis ici que cette mise en correspondance implique une taille de l'objet fixe. Cependant, RADOS lui-même n'impose aucune restriction sur la taille de l'objet (sauf une taille maximale configurable). Donc, si vous utilisez l'API de l'objet RADOS pour stocker des données, il n'y a pas de taille fixe.

+0

Nous vous remercions de votre aide. – snowmanlarry

+0

Mais voici une autre question, c'est comment manipuler le paramètre pour changer la taille de l'objet par défaut. Par exemple, comment utiliser le paramètre si je veux changer la taille de l'objet par défaut à 2 Mo? – snowmanlarry

+0

@ user4635389 Vous pouvez changer la stratégie de striping d'un fichier qui limitera indirectement la taille d'un objet en utilisant 'ceph_open_layout'. Cependant, si vous travaillez directement avec des objets, il n'y a pas de taille par défaut. –