Re: [ceph-users] The project of ceph client file system porting from Linux to AIX
Hello Ketor, About 1 more years ago, I need a free DFS can be used in AIX environment as a tiered storage solution for Bank DC, that why the project. This project just port the CephFS in Linux kernel to AIX kernel(maybe RBD in future), so it's a kernel mode AIX cephfs. But I have multiple projects at hand now, so the AIX cephfs project is in pending status... It's open, anyone can make changes from this project if he want. On Thu, Mar 5, 2015 at 3:11 PM, Ketor D d.ke...@gmail.com wrote: Hi Dennis, I am interested in your project. I wrote a Win32 cephfs client https://github.com/ceph/ceph-dokan. But ceph-dokan runs in user-mode. I see you port code from kernel cephfs, are you planning to write a kernel mode AIX-cephfs? Thanks! 2015-03-04 17:59 GMT+08:00 Dennis Chen kernel.org@gmail.com: Hello, The ceph cluster now can only be used by Linux system AFAICT, so I planed to port the ceph client file system from Linux to AIX as a tiered storage solution in that platform. Below is the source code repository I've done, which is still in progress. 3 important modules: 1. aixker: maintain a uniform kernel API beteween the Linux and AIX 2. net: as a data transfering layer between the client and cluster 3. fs: as an adaptor to make the AIX can recognize the Linux file system. https://github.com/Dennis-Chen1977/aix-cephfs Welcome any comments or anything... -- Den -- To unsubscribe from this list: send the line unsubscribe ceph-devel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html -- Den ___ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
[ceph-users] Question about notification of OSD down in client side
Hello, Is there some way to make the client(via RADOS API or something like that) to get the notification of an event (for example, an OSD down) happened in the cluster? -- Den ___ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
[ceph-users] Concurrent access of the object via Rados API...
Hello, For the case of multiple clients(separate process) accessing an object in the cluster, is the exclusive protection of the shared object needed for the caller? Process A::rados::ioctx.write(obj, ...) Process B::rados::ioctx.write(obj, ...) or: Process A:: mylock.lock(); ioctx.write(obj, ..) mylock.unlock() Process B:: mylock.lock(); ioctx.write(obj, ..) mylock.unlock() which one is correct? -- Den ___ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
[ceph-users] Question about ceph exclusive object?
Hello, What exactly does the parameter 'bool exclusive' mean in the int librados::IoCtxImpl::create(const object_t oid, bool exclusive)? I can't find any doc to describe this :-( -- Den ___ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
[ceph-users] How to notify an object watched by client via ceph class API
Hello, Just as the subject indicated, how can I notify an object watcher within a class '.so' loaded into osd deamon. I checked the code and found the below op code defined already:CEPH_OSD_OP_NOTIFY, but this op code is not used by existing ceph class api, I guest there must be a simple solution to resolve this if I don't want to make the osd to play client role the same time. Anyone can help me out this? -- Den ___ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
Re: [ceph-users] How to notify an object watched by client via ceph class API
On Thu, Feb 5, 2015 at 4:51 PM, Sage Weil s...@newdream.net wrote: On Thu, 5 Feb 2015, Dennis Chen wrote: Hello, Just as the subject indicated, how can I notify an object watcher within a class '.so' loaded into osd deamon. I checked the code and found the below op code defined already:CEPH_OSD_OP_NOTIFY, but this op code is not used by existing ceph class api, I guest there must be a simple solution to resolve this if I don't want to make the osd to play client role the same time. Anyone can help me out this? The watch/notify does not rely on rados classes, e.g.: rados -p rbd create foo rados -p rbd watch foo rados -p rbd notify foo hello The notify is just a normal librados operation, and most of those can be called from classes, but it normally blocks for some period until the others acknowledge. If it were wired up in objclass.h you could probably initiate the async notify but there would be no way to check whether it ever arrived, so I'm not sure it would be useful. What are you trying to accomplish? sage What I am trying is to design a signaling control mechanism based on ceph, so the notify will not be in heavy load(just some event state needed to report to the client async). Below is the investigation for this question, initialy the result is good as expected except that the argement transfering between the client watcher callback function and the osd class function, the code snippet: Client side-- void notify_test(uint8_t opcode, uint64_t ver, void *arg) { char *str = (char *)arg; printf(get notify:%s\n, str); } int main(...) { ... strcpy(arg, notify: from client); err = rados_watch(io, objname, 0, handle, notify_test, arg); err = rados_exec(io, objname, devctl, devctl_op, in, strlen(in), out, 128); ... } OSD side (in the ceph class)-- int test_class_ext(cls_method_context_t hctx, bufferlist *in, bufferlist *out) { int ret; CLS_LOG(0, +test_class_ext); in-append(input data); out-append(output data); ReplicatedPG::OpContext **pctx = (ReplicatedPG::OpContext **)hctx; vectorOSDOp ops(1); ops[0].op.op = CEPH_OSD_OP_NOTIFY; ops[0].indata = *in; ops[0].outdata = *out; ret = (*pctx)-pg-do_osd_ops(*pctx, ops); in-claim(ops[0].indata); out-claim(ops[0].outdata); CLS_LOG(0, ret = %d, ret); return 0; } static int devctl_op(cls_method_context_t hctx, bufferlist *in, bufferlist *out) { ... test_class_ext(hctx, in, out); return 0; } The output in the client: get notify:notify: from client I can't pass the parameters to the client watcher currently :( , any hints? -- Den ___ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
Re: [ceph-users] How to notify an object watched by client via ceph class API
On Thu, Feb 5, 2015 at 6:26 PM, Sage Weil s...@newdream.net wrote: On Thu, 5 Feb 2015, Dennis Chen wrote: On Thu, Feb 5, 2015 at 4:51 PM, Sage Weil s...@newdream.net wrote: On Thu, 5 Feb 2015, Dennis Chen wrote: Hello, Just as the subject indicated, how can I notify an object watcher within a class '.so' loaded into osd deamon. I checked the code and found the below op code defined already:CEPH_OSD_OP_NOTIFY, but this op code is not used by existing ceph class api, I guest there must be a simple solution to resolve this if I don't want to make the osd to play client role the same time. Anyone can help me out this? The watch/notify does not rely on rados classes, e.g.: rados -p rbd create foo rados -p rbd watch foo rados -p rbd notify foo hello The notify is just a normal librados operation, and most of those can be called from classes, but it normally blocks for some period until the others acknowledge. If it were wired up in objclass.h you could probably initiate the async notify but there would be no way to check whether it ever arrived, so I'm not sure it would be useful. What are you trying to accomplish? sage What I am trying is to design a signaling control mechanism based on ceph, so the notify will not be in heavy load(just some event state needed to report to the client async). Below is the investigation for this question, initialy the result is good as expected except that the argement transfering between the client watcher callback function and the osd class function, the code snippet: Client side-- void notify_test(uint8_t opcode, uint64_t ver, void *arg) { char *str = (char *)arg; printf(get notify:%s\n, str); You are using the v1 watch/notify API. If you look at master you'll see there is a new watch2 operation that gets more useful arguments, like the data payload. (Actually v1 has the data payload too, but I forget where it appears. You should still probably target v2 though!) I am working on the 0.87 downloaded from the ceph.com, I guest it's OK for this version since it has the void *arg. } int main(...) { ... strcpy(arg, notify: from client); err = rados_watch(io, objname, 0, handle, notify_test, arg); err = rados_exec(io, objname, devctl, devctl_op, in, strlen(in), out, 128); ... } OSD side (in the ceph class)-- int test_class_ext(cls_method_context_t hctx, bufferlist *in, bufferlist *out) { int ret; CLS_LOG(0, +test_class_ext); in-append(input data); out-append(output data); Note that out content is discarded. Also, you will never get it, since you aren't blocking (and can't inside a class) and won't wait for a reply. The input data string should get fed to your notify callback on the client, though! ReplicatedPG::OpContext **pctx = (ReplicatedPG::OpContext **)hctx; vectorOSDOp ops(1); ops[0].op.op = CEPH_OSD_OP_NOTIFY; ops[0].indata = *in; ops[0].outdata = *out; can just leave outdata NULL. ret = (*pctx)-pg-do_osd_ops(*pctx, ops); in-claim(ops[0].indata); This isn't needed, and might be eating your notify payload? out-claim(ops[0].outdata); not needed I updated the code according to your suggestion, but still can't pass any data from this function to the notify callback in the client via the *arg pointer, that's the problem now. Any one can help about this? sage CLS_LOG(0, ret = %d, ret); return 0; } static int devctl_op(cls_method_context_t hctx, bufferlist *in, bufferlist *out) { ... test_class_ext(hctx, in, out); return 0; } The output in the client: get notify:notify: from client I can't pass the parameters to the client watcher currently :( , any hints? -- Den -- To unsubscribe from this list: send the line unsubscribe ceph-devel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html -- Den ___ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
[ceph-users] Question about output message and object update for ceph class
Hello, I write a ceph client using rados lib to execute a funcution upon the object. CLIENT SIDE CODE === int main() { ... strcpy(in, from client); err = rados_exec(io, objname, devctl, devctl_op, in, strlen(in), out, 128); if (err 0) { fprintf(stderr, rados_exec() failed: %s\n, strerror(-err)); rados_ioctx_destroy(io); rados_shutdown(cluster); exit(1); } out[err] = '\0'; printf(err = %d, exec result out = %s, in = %s\n, err, out, in); ... } CLASS CODE IN OSD SIDE == static int devctl_op(cls_method_context_t hctx, bufferlist *in, bufferlist *out) { ... i = cls_cxx_stat(hctx, size, NULL); if (i 0) return i; bufferlist read_bl, write_bl; i = cls_cxx_read(hctx, 0, size, read_bl); if (i 0) { CLS_ERR(cls_cxx_read failed); return i; } // we generate our reply out-append(Hello, ); if (in-length() == 0) out-append(world); else out-append(*in); out-append(!); #if 1 const char *tstr = from devctl func; write_bl.append(tstr); i = cls_cxx_write(hctx, size, write_bl.length(), write_bl); if (i 0) { CLS_ERR(cls_cxx_write failed: %s, strerror(-i)); return i; } #endif // this return value will be returned back to the librados caller return 0; } I found that if I update the content of the object when calling cls_cxx_write(), then the 'out' will be null in the client side, otherwise the out will be Hello, from client!. Does anybody here can give some hints? -- Den ___ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
Re: [ceph-users] Question about output message and object update for ceph class
I take back the question, because I just found that for a succeed write opetion in the class, *no* data in the out buffer... On Wed, Feb 4, 2015 at 5:44 PM, Dennis Chen kernel.org@gmail.com wrote: Hello, I write a ceph client using rados lib to execute a funcution upon the object. CLIENT SIDE CODE === int main() { ... strcpy(in, from client); err = rados_exec(io, objname, devctl, devctl_op, in, strlen(in), out, 128); if (err 0) { fprintf(stderr, rados_exec() failed: %s\n, strerror(-err)); rados_ioctx_destroy(io); rados_shutdown(cluster); exit(1); } out[err] = '\0'; printf(err = %d, exec result out = %s, in = %s\n, err, out, in); ... } CLASS CODE IN OSD SIDE == static int devctl_op(cls_method_context_t hctx, bufferlist *in, bufferlist *out) { ... i = cls_cxx_stat(hctx, size, NULL); if (i 0) return i; bufferlist read_bl, write_bl; i = cls_cxx_read(hctx, 0, size, read_bl); if (i 0) { CLS_ERR(cls_cxx_read failed); return i; } // we generate our reply out-append(Hello, ); if (in-length() == 0) out-append(world); else out-append(*in); out-append(!); #if 1 const char *tstr = from devctl func; write_bl.append(tstr); i = cls_cxx_write(hctx, size, write_bl.length(), write_bl); if (i 0) { CLS_ERR(cls_cxx_write failed: %s, strerror(-i)); return i; } #endif // this return value will be returned back to the librados caller return 0; } I found that if I update the content of the object when calling cls_cxx_write(), then the 'out' will be null in the client side, otherwise the out will be Hello, from client!. Does anybody here can give some hints? -- Den -- Den ___ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
Re: [ceph-users] Question about primary OSD of a pool
Hello Sudarshan, Thanks, it should be useful when I want to appoint the specific OSD as primary ;-) On Mon, Feb 2, 2015 at 3:50 PM, Sudarshan Pathak sushan@gmail.com wrote: Hello Dennis, You can create CRUSH rule to select one of osd as primary as: rule ssd-primary { ruleset 5 type replicated min_size 5 max_size 10 step take ssd step chooseleaf firstn 1 type host step emit step take platter step chooseleaf firstn -1 type host step emit } Above will select a OSD from ssd bucket as Primary and all secondary OSD from bucket platter. You can find more details about CRUSH map at http://ceph.com/docs/master/rados/operations/crush-map/ . Regards, Sudarshan On Mon, Feb 2, 2015 at 12:12 PM, Dennis Chen kernel.org@gmail.com wrote: Hi Sudarshan, Some hints for doing that ? On Mon, Feb 2, 2015 at 1:03 PM, Sudarshan Pathak sushan@gmail.com wrote: BTW, you can make crush to always choose the same OSD as primary. Regards, Sudarshan On Mon, Feb 2, 2015 at 9:26 AM, Dennis Chen kernel.org@gmail.com wrote: Thanks, I've have the answer with the 'ceph osd map ...' command On Mon, Feb 2, 2015 at 12:50 AM, Jean-Charles Lopez jelo...@redhat.com wrote: Hi You can verify the exact mapping using the following command: ceph osd map {poolname} {objectname} Check page http://docs.ceph.com/docs/master/man/8/ceph for the ceph command. Cheers JC While moving. Excuse unintended typos. On Feb 1, 2015, at 08:04, Loic Dachary l...@dachary.org wrote: On 01/02/2015 14:47, Dennis Chen wrote: Hello, If I write 2 different objects, eg, john and paul respectively to a same pool like testpool in the cluster, is the primary OSD calculated by CRUSH for the 2 objects the same? Hi, CRUSH is likely to place john on an OSD and paul on another OSD. Cheers -- Loïc Dachary, Artisan Logiciel Libre ___ 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 -- Den ___ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com -- Den -- Den ___ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
[ceph-users] Question about primary OSD of a pool
Hello, If I write 2 different objects, eg, john and paul respectively to a same pool like testpool in the cluster, is the primary OSD calculated by CRUSH for the 2 objects the same? -- Den ___ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
Re: [ceph-users] Question about primary OSD of a pool
On Mon, Feb 2, 2015 at 12:04 AM, Loic Dachary l...@dachary.org wrote: On 01/02/2015 14:47, Dennis Chen wrote: Hello, If I write 2 different objects, eg, john and paul respectively to a same pool like testpool in the cluster, is the primary OSD calculated by CRUSH for the 2 objects the same? Hi, CRUSH is likely to place john on an OSD and paul on another OSD. Cheers -- Loïc Dachary, Artisan Logiciel Libre Thank Loic, correct! I have no cluster to access at hand to do the test when I asked the question :) -- Den ___ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
Re: [ceph-users] Question about primary OSD of a pool
Thanks, I've have the answer with the 'ceph osd map ...' command On Mon, Feb 2, 2015 at 12:50 AM, Jean-Charles Lopez jelo...@redhat.com wrote: Hi You can verify the exact mapping using the following command: ceph osd map {poolname} {objectname} Check page http://docs.ceph.com/docs/master/man/8/ceph for the ceph command. Cheers JC While moving. Excuse unintended typos. On Feb 1, 2015, at 08:04, Loic Dachary l...@dachary.org wrote: On 01/02/2015 14:47, Dennis Chen wrote: Hello, If I write 2 different objects, eg, john and paul respectively to a same pool like testpool in the cluster, is the primary OSD calculated by CRUSH for the 2 objects the same? Hi, CRUSH is likely to place john on an OSD and paul on another OSD. Cheers -- Loïc Dachary, Artisan Logiciel Libre ___ 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 -- Den ___ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
Re: [ceph-users] Question about primary OSD of a pool
Hi Sudarshan, Some hints for doing that ? On Mon, Feb 2, 2015 at 1:03 PM, Sudarshan Pathak sushan@gmail.com wrote: BTW, you can make crush to always choose the same OSD as primary. Regards, Sudarshan On Mon, Feb 2, 2015 at 9:26 AM, Dennis Chen kernel.org@gmail.com wrote: Thanks, I've have the answer with the 'ceph osd map ...' command On Mon, Feb 2, 2015 at 12:50 AM, Jean-Charles Lopez jelo...@redhat.com wrote: Hi You can verify the exact mapping using the following command: ceph osd map {poolname} {objectname} Check page http://docs.ceph.com/docs/master/man/8/ceph for the ceph command. Cheers JC While moving. Excuse unintended typos. On Feb 1, 2015, at 08:04, Loic Dachary l...@dachary.org wrote: On 01/02/2015 14:47, Dennis Chen wrote: Hello, If I write 2 different objects, eg, john and paul respectively to a same pool like testpool in the cluster, is the primary OSD calculated by CRUSH for the 2 objects the same? Hi, CRUSH is likely to place john on an OSD and paul on another OSD. Cheers -- Loïc Dachary, Artisan Logiciel Libre ___ 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 -- Den ___ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com -- Den ___ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
[ceph-users] Question about ceph class usage
Hello, I found the document of ceph class usage is very few, below is the only one which can almost address my needs-- http://ceph.com/rados/dynamic-object-interfaces-with-lua/ But still some questions confusing me left there: 1. How to make the OSD to load the class lib? or what's the process for an OSD deamon to load a customized class lib? I checked my OSD log file(/var/log/ceph/ceph-osd.2.log), I can't find the log message loading cls_hello, does that mean the hello class lib hasn't been loaded by the osd deamon yet? But I can see the 'libcls_hello.so' is really under /usr/lib64/rados-classes folder of that OSD. 2. Suppose I have an object named testobj stored into OSD0 and OSD1, what will happen if I call the rados_exec(..., testobj, hello, say_hello,...) in client side? Will the say_hello() function be called twice in OSD0 and OSD1 respectively? -- Den ___ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
[ceph-users] rbd command error librbd::ImageCtx: error finding header
Hi list, I am using a ceph cluster (version 0.56.4) with all nodes (mon, mds, osd...) deployed in the RHEL 6 distro, the client is based on Ubuntu 12.10. Now I am confused by a strange issue, seems the issue has been asked before by google but no a clear answer for it. The specific details as below-- in the client side, I want to create a rbd image, so I run the commands: root@~# ceph osd pool create mypool 100 100 pool 'mypool' created root@~# rbd ls -p mypool odm-kvm-img root@~# rbd --image odm-kvm-img info rbd: error opening image 2013-04-24 10:43:42.800917 7fdb47d76780 -1 librbd::ImageCtx: error finding header: (2) No such file or directoryodm-kvm-img: (2) No such file or directory So I tried those steps followed according the goolged: root@~# rados ls -p mypool odm-kvm-img.rbd rbd_directory root@~# rbd info odm-kvm-img.rbd rbd: error opening image 2013-04-24 10:54:19.468770 7f8332dea780 -1 librbd::ImageCtx: error finding header: (2) No such file or directory odm-kvm-img.rbd: (2) No such file or directory odm-kvm-img.rbd is showed by 'rados ls' command and it's there, but why I get an error when run the 'rbd info' command upon odm-kvm-img.rbd? does anybody can be help about this? BRs, Dennis ___ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
Re: [ceph-users] rbd command error librbd::ImageCtx: error finding header
Hi, A different error msg after your suggestion -- root@~# rbd -p mypool --image odm-kvm-img info rbd: error opening image odm-kvm-img: (95) Operation not supported 2013-04-24 11:32:47.757778 7f49949f7780 -1 librbd: Error listing snapshots: (95) Operation not supported I create the odm-kvm-img with this command: root@~# rbd create odm-kvm-img --size 10240 --pool mypool BRs, Dennis On 04/24/2013 11:28 AM, Chris Hoy Poy wrote: Hi, try # rbd -p mypool --image odm-kvm-img info cheers //Chris - Original Message - From: Dennis Chen xsc...@tnsoft.com.cn To: ceph-us...@ceph.com, Dennis Chen xsc...@tnsoft.com.cn Sent: Wednesday, 24 April, 2013 11:24:30 AM Subject: [ceph-users] rbd command error librbd::ImageCtx: error finding header Hi list, I am using a ceph cluster (version 0.56.4) with all nodes (mon, mds, osd...) deployed in the RHEL 6 distro, the client is based on Ubuntu 12.10. Now I am confused by a strange issue, seems the issue has been asked before by google but no a clear answer for it. The specific details as below-- in the client side, I want to create a rbd image, so I run the commands: root@~# ceph osd pool create mypool 100 100 pool 'mypool' created root@~# rbd ls -p mypool odm-kvm-img root@~# rbd --image odm-kvm-img info rbd: error opening image 2013-04-24 10:43:42.800917 7fdb47d76780 -1 librbd::ImageCtx: error finding header: (2) No such file or directoryodm-kvm-img: (2) No such file or directory So I tried those steps followed according the goolged: root@~# rados ls -p mypool odm-kvm-img.rbd rbd_directory root@~# rbd info odm-kvm-img.rbd rbd: error opening image 2013-04-24 10:54:19.468770 7f8332dea780 -1 librbd::ImageCtx: error finding header: (2) No such file or directory odm-kvm-img.rbd: (2) No such file or directory odm-kvm-img.rbd is showed by 'rados ls' command and it's there, but why I get an error when run the 'rbd info' command upon odm-kvm-img.rbd? does anybody can be help about this? BRs, Dennis ___ 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
Re: [ceph-users] rbd command error librbd::ImageCtx: error finding header
specify the -p mypool will create another error msg looks like: root@~# rbd --image odm-kvm-img -p mypool info 2013-04-24 10:44:29.442715 7f8d9134b780 -1 rbd: error opening image librbd: Error listing snapshots: (95) Operation not supportedodm-kvm-img : (95) Operation not supported BRs, Dennis On 04/24/2013 11:29 AM, Michael Lowe wrote: My initial reaction is that you should use -p pool because rbd defaults to the rbd pool. You are in effect trying to get info about mypool/odm-kvm-img from rbd/odm-kvm-img which doesn't exist. Sent from my iPad On Apr 23, 2013, at 11:24 PM, Dennis Chen xsc...@tnsoft.com.cn wrote: Hi list, I am using a ceph cluster (version 0.56.4) with all nodes (mon, mds, osd...) deployed in the RHEL 6 distro, the client is based on Ubuntu 12.10. Now I am confused by a strange issue, seems the issue has been asked before by google but no a clear answer for it. The specific details as below-- in the client side, I want to create a rbd image, so I run the commands: root@~# ceph osd pool create mypool 100 100 pool 'mypool' created root@~# rbd ls -p mypool odm-kvm-img root@~# rbd --image odm-kvm-img info rbd: error opening image 2013-04-24 10:43:42.800917 7fdb47d76780 -1 librbd::ImageCtx: error finding header: (2) No such file or directoryodm-kvm-img: (2) No such file or directory So I tried those steps followed according the goolged: root@~# rados ls -p mypool odm-kvm-img.rbd rbd_directory root@~# rbd info odm-kvm-img.rbd rbd: error opening image 2013-04-24 10:54:19.468770 7f8332dea780 -1 librbd::ImageCtx: error finding header: (2) No such file or directory odm-kvm-img.rbd: (2) No such file or directory odm-kvm-img.rbd is showed by 'rados ls' command and it's there, but why I get an error when run the 'rbd info' command upon odm-kvm-img.rbd? does anybody can be help about this? BRs, Dennis ___ 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