On Thu, Apr 11, 2019, 8:53 AM Jason Dillaman <jdill...@redhat.com> wrote:
> On Thu, Apr 11, 2019 at 8:49 AM Erik McCormick > <emccorm...@cirrusseven.com> wrote: > > > > > > > > On Thu, Apr 11, 2019, 8:39 AM Erik McCormick <emccorm...@cirrusseven.com> > wrote: > >> > >> > >> > >> On Thu, Apr 11, 2019, 12:07 AM Brayan Perera <brayan.per...@gmail.com> > wrote: > >>> > >>> Dear Jason, > >>> > >>> > >>> Thanks for the reply. > >>> > >>> We are using python 2.7.5 > >>> > >>> Yes. script is based on openstack code. > >>> > >>> As suggested, we have tried chunk_size 32 and 64, and both giving same > >>> incorrect checksum value. > >> > >> > >> The value of rbd_store_chunk_size in glance is expressed in MB and then > converted to mb. I think the default is 8, so you would want 8192 if you're > trying to match what the image was uploaded with. > > > > > > Sorry, that should have been "...converted to KB." > > Wouldn't it be converted to bytes since all rbd API methods are in bytes? > [1] > Well yeah in the end that's true. Old versions I recall just passed a KB number, but now it's self.chunk_size = CONF.rbd_store_chunk_size * 1024 * 1024 My main point though was just that glance defaults to 8 MB chunks which is nk uch larger than IP was using. > >> > >>> > >>> We tried to copy same image in different pool and resulted same > >>> incorrect checksum. > >>> > >>> > >>> Thanks & Regards, > >>> Brayan > >>> > >>> On Wed, Apr 10, 2019 at 6:21 PM Jason Dillaman <jdill...@redhat.com> > wrote: > >>> > > >>> > On Wed, Apr 10, 2019 at 1:46 AM Brayan Perera < > brayan.per...@gmail.com> wrote: > >>> > > > >>> > > Dear All, > >>> > > > >>> > > Ceph Version : 12.2.5-2.ge988fb6.el7 > >>> > > > >>> > > We are facing an issue on glance which have backend set to ceph, > when > >>> > > we try to create an instance or volume out of an image, it throws > >>> > > checksum error. > >>> > > When we use rbd export and use md5sum, value is matching with > glance checksum. > >>> > > > >>> > > When we use following script, it provides same error checksum as > glance. > >>> > > >>> > What version of Python are you using? > >>> > > >>> > > We have used below images for testing. > >>> > > 1. Failing image (checksum mismatch): > ffed4088-74e1-4f22-86cb-35e7e97c377c > >>> > > 2. Passing image (checksum identical): > c048f0f9-973d-4285-9397-939251c80a84 > >>> > > > >>> > > Output from storage node: > >>> > > > >>> > > 1. Failing image: ffed4088-74e1-4f22-86cb-35e7e97c377c > >>> > > checksum from glance database: 34da2198ec7941174349712c6d2096d8 > >>> > > [root@storage01moc ~]# python test_rbd_format.py > >>> > > ffed4088-74e1-4f22-86cb-35e7e97c377c admin > >>> > > Image size: 681181184 > >>> > > checksum from ceph: b82d85ae5160a7b74f52be6b5871f596 > >>> > > Remarks: checksum is different > >>> > > > >>> > > 2. Passing image: c048f0f9-973d-4285-9397-939251c80a84 > >>> > > checksum from glance database: 4f977f748c9ac2989cff32732ef740ed > >>> > > [root@storage01moc ~]# python test_rbd_format.py > >>> > > c048f0f9-973d-4285-9397-939251c80a84 admin > >>> > > Image size: 1411121152 > >>> > > checksum from ceph: 4f977f748c9ac2989cff32732ef740ed > >>> > > Remarks: checksum is identical > >>> > > > >>> > > Wondering whether this issue is from ceph python libs or from ceph > itself. > >>> > > > >>> > > Please note that we do not have ceph pool tiering configured. > >>> > > > >>> > > Please let us know whether anyone faced similar issue and any > fixes for this. > >>> > > > >>> > > test_rbd_format.py > >>> > > =================================================== > >>> > > import rados, sys, rbd > >>> > > > >>> > > image_id = sys.argv[1] > >>> > > try: > >>> > > rados_id = sys.argv[2] > >>> > > except: > >>> > > rados_id = 'openstack' > >>> > > > >>> > > > >>> > > class ImageIterator(object): > >>> > > """ > >>> > > Reads data from an RBD image, one chunk at a time. > >>> > > """ > >>> > > > >>> > > def __init__(self, conn, pool, name, snapshot, store, > chunk_size='8'): > >>> > > >>> > Am I correct in assuming this was adapted from OpenStack code? That > >>> > 8-byte "chunk" is going to be terribly inefficient to compute a CRC. > >>> > Not that it should matter, but does it still fail if you increase > this > >>> > to 32KiB or 64KiB? > >>> > > >>> > > self.pool = pool > >>> > > self.conn = conn > >>> > > self.name = name > >>> > > self.snapshot = snapshot > >>> > > self.chunk_size = chunk_size > >>> > > self.store = store > >>> > > > >>> > > def __iter__(self): > >>> > > try: > >>> > > with conn.open_ioctx(self.pool) as ioctx: > >>> > > with rbd.Image(ioctx, self.name, > >>> > > snapshot=self.snapshot) as image: > >>> > > img_info = image.stat() > >>> > > size = img_info['size'] > >>> > > bytes_left = size > >>> > > while bytes_left > 0: > >>> > > length = min(self.chunk_size, bytes_left) > >>> > > data = image.read(size - bytes_left, > length) > >>> > > bytes_left -= len(data) > >>> > > yield data > >>> > > raise StopIteration() > >>> > > except rbd.ImageNotFound: > >>> > > raise exceptions.NotFound( > >>> > > _('RBD image %s does not exist') % self.name) > >>> > > > >>> > > conn = > rados.Rados(conffile='/etc/ceph/ceph.conf',rados_id=rados_id) > >>> > > conn.connect() > >>> > > > >>> > > > >>> > > with conn.open_ioctx('images') as ioctx: > >>> > > try: > >>> > > with rbd.Image(ioctx, image_id, > >>> > > snapshot='snap') as image: > >>> > > img_info = image.stat() > >>> > > print "Image size: %s " % img_info['size'] > >>> > > iter, size = (ImageIterator(conn, 'images', image_id, > >>> > > 'snap', 'rbd'), img_info['size']) > >>> > > import six, hashlib > >>> > > md5sum = hashlib.md5() > >>> > > for chunk in iter: > >>> > > if isinstance(chunk, six.string_types): > >>> > > chunk = six.b(chunk) > >>> > > md5sum.update(chunk) > >>> > > md5sum = md5sum.hexdigest() > >>> > > print "checksum from ceph: " + md5sum > >>> > > except: > >>> > > raise > >>> > > =================================================== > >>> > > > >>> > > > >>> > > Thank You ! > >>> > > > >>> > > -- > >>> > > Best Regards, > >>> > > Brayan Perera > >>> > > _______________________________________________ > >>> > > ceph-users mailing list > >>> > > ceph-users@lists.ceph.com > >>> > > http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com > >>> > > >>> > > >>> > > >>> > -- > >>> > Jason > >>> > >>> > >>> > >>> -- > >>> Best Regards, > >>> Brayan Perera > >>> _______________________________________________ > >>> ceph-users mailing list > >>> ceph-users@lists.ceph.com > >>> http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com > > [1] > https://github.com/openstack/glance_store/blob/f503633da040a2668f603e4aa34450b7e5db1252/glance_store/_drivers/rbd.py#L301 > > -- > Jason >
_______________________________________________ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com