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."


>
>> 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
>>
>
_______________________________________________
ceph-users mailing list
ceph-users@lists.ceph.com
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com

Reply via email to