On Thu, 14 Apr 2011, Sylar Shen wrote: > Hi Sage, > Thanks for your reply. I really appreciated. > I tried what you suggested to set the argument "sync" in /etc/exports. > I also checked "man 5 exports" and it showed that sync means reply to > requests only after the changes have been committed to stable storage. > It didn't mention that the export server won't do the cache task. > However, after I did the experiment, I found that the memory usage of > Ceph-client still went up to maximum value while writing the data > which means Ceph-client did the cache task. Right: 'sync' will make it write-through and flush the data to disk, but it will still keep a copy in the page cache. > So...are there other possible ways to solve my problem? Are you sure it's a problem? Caching is usually a good thing. If you're worried about safety, 'sync' solves that. If you're worried about memory usage, you may not need to be. The kernel will always use as much free ram as is available for caching fs data. That's a normal and good thing. It will throw it out as soon as it needs the memory for something else. I think the only case where that might be problematic is if you have other local file systems and want to make sure the memory is used for those instead of ceph. I'm not aware of a way to do that... sage > Thanks~~ > > Best Regards, > Sylar Shen > > 2011/4/12 Sage Weil : > > On Tue, 12 Apr 2011, Sylar Shen wrote: > >> Hi developers, > >> I know that the following question may not be relative to Ceph but > >> this confuses me a lot. > >> I am testing the function of re-exporting nfs by command "dd" without > >> using buffer. > >> That means I would like my data to be written to Ceph DFS directly > >> without passing by the buffer of client or nfs-client. > >> Here is my test architecture. Hope you could understand what I am > >> trying to express.....:p > >> ------------------------------------------------------------------------------ > >>              nfs                         ceph protocol > >> Client <------------>Ceph-Client <-------------------> Ceph DFS > >> ------------------------------------------------------------------------------ > >> I used the command "dd if=/dev/zero of=/mnt/ceph/test bs=64k > >> count=10000 oflag=dsync" > >> My purpose was to write the data from the client to Ceph DFS through > >> Ceph-client. > >> Ceph DFS was mounted by Ceph-client using Ceph protocol and > >> Ceph-client was mounted by client using nfs protocol. > >> I know that my dd command with argument oflag=dsync would write the > >> data to Ceph-client without using buffer on the client. > >> But I want my Ceph-client could also just pass the data to Ceph DFS > >> without using its buffer. > >> So.....is there any way I can run my scenario? > >> Or in other words, is there any method I can assure that Ceph-client > >> won't do the buffer task itself? > > > > I think what you're looking for is the 'sync' option in /etc/exports on > > the ceph-client machine.  See 'man 5 exports'.  That will slow things down > > considerably but will give you the consistency and safety you're looking > > for. > > > > sage > > > > > > -- > Best Regards, > Sylar Shen > -- > To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > >