ketor / ceph-dokan Goto Github PK
View Code? Open in Web Editor NEWCephFS Client on Win32 based on Dokan 0.6.0
License: GNU General Public License v2.0
CephFS Client on Win32 based on Dokan 0.6.0
License: GNU General Public License v2.0
We're looking to make ceph-dokan build more easily relative to original ceph source.
That is, we'd like to be able to build ceph-dokan with minimal changes to original ceph source (or, if possible, by having ceph as a git submodule under ceph-dokan).
I think that a good first step would be to move all C/C++ source under a src/
directory. This should make it easier to do diff
s later on between ceph source and ceph-dokan.
My ceph cluster was deployed with all auth = cephx.
The ceph cluster version is Hammer 0.94.6
I made the ceph-dokan.exe .
When I execute: ceph-dokan -c ceph.conf -l m, i got:
ceph_conf_read_file OK
..but after some minutes return signal 88 (core dump)
if I check netsat output commnad, I can see: local address - foreign address:6789 - states TIME_WAIT
so.. I could not have my drive mounted. What I need to do ..
"the program cann't start because dokan.dll is missing from you computer, try reinstalling ..."
I think it is shared library problem, but i cannot fix,
Hello,
No problem to build deph-dokan.exe using mingw32-make. A big file of 93 MB is well generated but the dll is missing.
In other words, libcephfs.dll is not generated and if I try to specify the libcephfs.dll using the command line : "mingw32-make libcephfs.dll", I get : "undefined references to 'boost::system::generic_category() and system_category()"
Any help appreciated...
Thanks in advance.
mingw32-make libcephfs.dll
g++ -D__USE_FILE_OFFSET64 -DHAVE_CONFIG_H -I. -D__CEPH__ -D_FILE_OFFSET_BITS=64 -D_REENTRANT -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -D_GN
_SOURCE -fno-strict-aliasing -fsigned-char -Wno-invalid-offsetof -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-built
n-free -g -DPIC -I./ -I./global -I./mingw_include -IC:\boost_1_63_0 -shared -o libcephfs.dll libcephfs.o global/global_context.o global
global_init.o global/pidfile.o global/signal_handler.o common/types.o common/TextTable.o common/io_priority.o common/hobject.o common/ce
h_frag.o common/addr_parsing.o common/Readahead.o common/histogram.o include/uuid.o common/ceph_fs.o common/bloom_filter.o common/ceph_h
sh.o common/ceph_strings.o common/assert.o common/BackTrace.o common/buffer.o common/ceph_argparse.o common/ceph_context.o common/lockde
.o common/Clock.o common/ceph_crypto.o common/code_environment.o common/common_init.o common/ConfUtils.o common/DecayCounter.o common/do
t.o common/entity_name.o common/environment.o common/errno.o common/Finisher.o common/Formatter.o common/hex.o common/LogEntry.o common/
utex.o common/page.o common/perf_counters.o common/PrebufferedStreambuf.o common/RefCountedObj.o common/signal.o common/snap_types.o com
on/str_list.o common/strtol.o common/Thread.o common/Throttle.o common/Timer.o common/util.o common/config.o common/armor.o common/crc32
.o common/crc32c-intel.o common/TrackedOp.o common/escape.o common/mime.o common/safe_io.o common/sctp_crc32.o common/secret.o common/ut
8.o common/LogClient.o common/version.o log/Log.o log/SubsystemMap.o auth/AuthAuthorizeHandler.o auth/AuthClientHandler.o auth/AuthMetho
List.o auth/AuthServiceHandler.o auth/AuthSessionHandler.o auth/Crypto.o auth/KeyRing.o auth/RotatingKeyRing.o auth/none/AuthNoneAuthori
eHandler.o auth/cephx/CephxSessionHandler.o auth/cephx/CephxAuthorizeHandler.o auth/cephx/CephxProtocol.o auth/cephx/CephxClientHandler.
auth/cephx/CephxServiceHandler.o auth/cephx/CephxKeyServer.o crush/CrushCompiler.o crush/CrushWrapper.o crush/builder.o crush/crush.o c
ush/hash.o crush/mapper.o msg/simple/Accepter.o msg/simple/PipeConnection.o msg/simple/DispatchQueue.o msg/Message.o msg/Messenger.o msg
msg_types.o msg/simple/Pipe.o msg/simple/SimpleMessenger.o osd/HitSet.o osd/OSDMap.o osd/OpRequest.o osd/osd_types.o mon/MonClient.o mon
MonMap.o mon/MonCap.o mds/flock.o mds/MDSMap.o mds/mdstypes.o mds/inode_backtrace.o osdc/Filer.o osdc/Journaler.o osdc/ObjectCacher.o os
c/Objecter.o osdc/Striper.o client/Client.o client/ClientSnapRealm.o client/Dentry.o client/Inode.o client/MetaRequest.o client/MetaSess
on.o client/Trace.o -lws2_32
libcephfs.o: In function `_static_initialization_and_destruction_0':
C:/boost_1_63_0/boost/system/error_code.hpp:221: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:223: undefined reference to `boost::system::system_category()'
msg/Message.o: In function `_static_initialization_and_destruction_0':
C:/boost_1_63_0/boost/system/error_code.hpp:221: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:223: undefined reference to `boost::system::system_category()'
mds/flock.o: In function `_static_initialization_and_destruction_0':
C:/boost_1_63_0/boost/system/error_code.hpp:221: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:223: undefined reference to `boost::system::system_category()'
mds/MDSMap.o: In function `_static_initialization_and_destruction_0':
C:/boost_1_63_0/boost/system/error_code.hpp:221: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:223: undefined reference to `boost::system::system_category()'
mds/mdstypes.o: In function `_static_initialization_and_destruction_0':
C:/boost_1_63_0/boost/system/error_code.hpp:221: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:223: undefined reference to `boost::system::system_category()'
mds/inode_backtrace.o: In function `_static_initialization_and_destruction_0':
C:/boost_1_63_0/boost/system/error_code.hpp:221: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:223: undefined reference to `boost::system::system_category()'
client/Client.o: In function `_static_initialization_and_destruction_0':
C:/boost_1_63_0/boost/system/error_code.hpp:221: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:223: undefined reference to `boost::system::system_category()'
client/Dentry.o: In function `_static_initialization_and_destruction_0':
C:/boost_1_63_0/boost/system/error_code.hpp:221: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:223: undefined reference to `boost::system::system_category()'
client/Inode.o: In function `_static_initialization_and_destruction_0':
C:/boost_1_63_0/boost/system/error_code.hpp:221: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:223: undefined reference to `boost::system::system_category()'
client/MetaRequest.o: In function `_static_initialization_and_destruction_0':
C:/boost_1_63_0/boost/system/error_code.hpp:221: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:223: undefined reference to `boost::system::system_category()'
client/MetaSession.o: In function `_static_initialization_and_destruction_0':
C:/boost_1_63_0/boost/system/error_code.hpp:221: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()'
C:/boost_1_63_0/boost/system/error_code.hpp:223: undefined reference to `boost::system::system_category()'
collect2.exe: error: ld returned 1 exit status
Makefile:55: recipe for target 'libcephfs.dll' failed
mingw32-make: *** [libcephfs.dll] Error 1
I've followed the give to compile ceph-dokan but, this error is ocurring when I exec mingw32-make
inside the project folder:
c:\ceph-dokan-master>mingw32-make
gcc -D__USE_FILE_OFFSET64 -DHAVE_CONFIG_H -I. -D__CEPH__ -D_FILE_OFFSET_BITS=64 -D_REENTRANT -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -D_GNU_SOURCE -fno-strict-aliasing -fsigned-char -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free -g -DPIC -w -c -I./ -I./global -I./mingw_include -IC:\boost_1_63_0 dokan/ceph_dokan.c -o dokan/ceph_dokan.o
dokan/ceph_dokan.c: In function 'DbgPrintW':
dokan/ceph_dokan.c:151:9: error: too few arguments to function 'vswprintf'
vswprintf(buffer, format, argp);
^
In file included from C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:824:0,
from dokan/ceph_dokan.c:10:
C:/TDM-GCC-64/x86_64-w64-mingw32/include/swprintf.inl:23:5: note: declared here
int vswprintf (wchar_t *__stream, size_t __count, const wchar_t *__format, __builtin_va_list __local_argv)
^
dokan/ceph_dokan.c: In function 'AlwaysPrintW':
dokan/ceph_dokan.c:167:5: error: too few arguments to function 'vswprintf'
vswprintf(buffer, format, argp);
^
In file included from C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:824:0,
from dokan/ceph_dokan.c:10:
C:/TDM-GCC-64/x86_64-w64-mingw32/include/swprintf.inl:23:5: note: declared here
int vswprintf (wchar_t *__stream, size_t __count, const wchar_t *__format, __builtin_va_list __local_argv)
^
Makefile:48: recipe for target 'dokan/ceph_dokan.o' failed
mingw32-make: *** [dokan/ceph_dokan.o] Error 1
I'm trying to mount cephfs under windows. I have my key and my config and ceph-dokan seems to see it, well it makes noises to that effect. However it just returns -2 and doesn't say what that means or what it can't find/do
What am I missing? CephFS is working and mounted on my other linux based nodes.
Does ceph-dokan support direct IO? I find no codes, either in dokan or ceph-dokan. The I/O performance doesn't change much when I disable direct io or enable direct io.
Hello,
I have a CephFS on Proxmox VE, and mount CephFS on Linux OS works well. however, the mount on Windows didn't work... I tried to multiply Ceph.conf the return error from the .\ceph-dokan.exe -l x
command is:
2022-04-12T10:36:06.669W. Europe Daylight Time 1 0 ceph-dokan: Mounted cephfs directory: /. Mountpoint: x
2022-04-12T10:36:06.669W. Europe Daylight Time 1 -1 ceph-dokan: Can't initialize Dokan driver.
Using -d
flag for debug mode returns:
2022-04-12T10:40:35.282W. Europe Daylight Time 1 0 ceph version 16.2.5 (0883bdea7337b95e4b611c768c0279868462204a) pacific (stable), process ceph-dokan, pid 2384
2022-04-12T10:40:35.326W. Europe Daylight Time 1 0 ceph-dokan: Mounted cephfs directory: /. Mountpoint: x
2022-04-12T10:40:35.326W. Europe Daylight Time 1 -1 ceph-dokan: Can't initialize Dokan driver.
Does this issue can be fixed as a workaround? or I do have an issue on my ceph config?
bellow you will see my ceph.conf:
[global]
log to stderr = true
; Uncomment the following to use Windows Event Log
; log to syslog = true
run dir = C:/ProgramData/ceph/out
crash dir = C:/ProgramData/ceph/out
; Use the following to change the cephfs client log level
; debug client = 2
[client]
keyring = C:/ProgramData/ceph/keyring
; log file = C:/ProgramData/ceph/out/$name.$pid.log
admin socket = C:/ProgramData/ceph/$name.$pid.asok
; client_permissions = true
; client_mount_uid = 1000
; client_mount_gid = 1000
[global]
; mon host = a-pve6 b-pve6
This looks like a great project but i can't connect to my cluster.
I read that cephx is not supported yet and and i have dipabled that.
But i get the error ceph_conf_read_file when i try to run ceph-dokan.exe /c c:\temp\ceph.conf /l n -s and I have tried putting the ceph.conf in the same directory as the exe file and just using the parameters from the example file in the repository but always the same error.
Is the error refering to not being able to read the file at all or is it some parameter error in the file or something else?
is there a way to make ceph-dokan as ceph block device client on windows ?
hello,
i have copy ceph.conf and run "ceph-dokan.exe -c ceph.conf -l m",but it can't work,what should i do?
Thank you for this project based on Dokan.
In attempt to unify the Dokan community after several years of shutdown, please be aware that Dokan is still alive on Dokany, a fork we started at the end 2014. There is several critical bug fixes avoiding BSOD, new features and signed drivers are provided for Windows >= 7.
Be aware that api compatibility is broken since 0.8.0 release, see this page.
I'm contacting Dokan file system projects that are still using the deprecated Dokan 0.6.0 to avoid abandon because they think Dokan is dead. Feel free to use Dokany or not, and ask questions if needed of course 😉.
Hi,
I upload a file with the size of 113MB through ceph-dokan. After finishing, ceph virtual disk show the size is 544PB. And I can't copy it to local disk because of there is not such large space left.
dokan 0.6.0_x64
ceph-dokan: master (least commit on Jan 18, 2017 ) compile with TDM-gcc 5.1.0.3_32bit
OS: windows server 2008 R2 sp1
Hi,
I had ceph-dokan compiled and the copied the ceph.conf to windows, but the command line just kept throwing "ceph_mount error!", what did i miss?
please give me some hint~
这个项目还在更新吗 很期待支持新版本的ceph-dokan 谢谢你的工作
Hi,
I can't get it to compile... Which sources from where do i need? I have tried to compile with windows libraries from mingw32msvc and from wine 1-6 but they error out during compilation :-(
Regards, Stan
Hello,
I am having some trouble configuring my ceph.conf file to mount on windows. I am running ceph version 0.94.2
I have copied the ceph.conf from linux to windows and modify both before attempting to mount the drive.
By changing some of the auth settings, either Windows cannot mount the drive or Linux cannot see the cluster.
This config will allow me to access the cluster from linux but windows fails with "Ceph_Mount Error!" :
auth client required = cephx
This config will allow me to run the windows command which ultimately hangs, but my nodes cannot see the cluster (ie: ceph health commend yields error (95) Operation not supported) :
auth client required = none
Any input would be appreciated, thanks!
麻烦问下,这个在windows下的性能怎么样,目前有没有数据?
The ceph-dokan crashed when the mds are overloaded.
Our experiment is:
10 osd server, 3 mds, 14 ceph-dokan client(2, 4, 16 concurrent IO per client).
The following are windbg output:
20 Id: b2cc.116c0 Suspend: 0 Teb: 7ef6a000 Unfrozen
ChildEBP RetAddr Args to Child
04ef14ec 75500bdd 00000002 04ef153c 00000001 ntdll_773b0000!ZwWaitForMultipleObjects+0x15
04ef1588 74fb1a2c 04ef153c 04ef15b0 00000000 KERNELBASE!WaitForMultipleObjectsEx+0x100
04ef15d0 74fb4208 00000002 7efde000 00000000 kernel32!WaitForMultipleObjectsExImplementation+0xe0
04ef15ec 74fd80a4 00000002 04ef1620 00000000 kernel32!WaitForMultipleObjects+0x18
04ef1658 74fd7f63 04ef1738 00000001 00000001 kernel32!WerpReportFaultInternal+0x186
04ef166c 74fd7858 04ef1738 00000001 04ef1708 kernel32!WerpReportFault+0x70
04ef167c 74fd77d7 04ef1738 00000001 b921b0ed kernel32!BasepReportFault+0x20
04ef1708 774274df 00000000 774273bc 00000000 kernel32!UnhandledExceptionFilter+0x1af
04ef1710 774273bc 00000000 04efffd4 773dc530 ntdll_773b0000!__RtlUserThreadStart+0x62
04ef1724 77427261 00000000 00000000 00000000 ntdll_773b0000!_EH4_CallFilterFunc+0x12
04ef174c 7740b459 fffffffe 04efffc4 04ef1888 ntdll_773b0000!_except_handler4+0x8e
04ef1770 7740b42b 04ef1838 04efffc4 04ef1888 ntdll_773b0000!ExecuteHandler2+0x26
04ef1794 7740b3ce 04ef1838 04efffc4 04ef1888 ntdll_773b0000!ExecuteHandler+0x24
04ef1820 773c0133 01ef1838 04ef1888 04ef1838 ntdll_773b0000!RtlDispatchException+0x127
04ef182c 04ef1838 04ef1888 c0000005 00000000 ntdll_773b0000!KiUserExceptionDispatcher+0xf
WARNING: Frame IP not in any known module. Following frames may be wrong.
04ef1b98 64fecc6e 00000000 0064003b 04ef1bc8 0x4ef1838
04ef1bc8 64fcf81c 00000000 00000000 00000098 libcephfs!ZN5Inode11caps_issuedEPi+0x4a
04ef1ca8 64fded05 0064001f 04ef1dd8 00000000 libcephfs!ZN6Client9fill_statEP5InodeP9stat_cephP11frag_info_tP11nest_info_t+0x50a
04ef1d88 64e82858 00000b4b 04ef1dd8 04efff70 libcephfs!ZN6Client5fstatEiP9stat_ceph+0x161
04ef1da8 004049d1 00a0a8a8 00000b4b 04ef1dd8 libcephfs!ceph_fstat+0x38
The bug is quite tricky. The mds is overloaded, so the ceph_fstat requests doesn't return back. Ceph-dokan hangs on fstat->getattr->make_request for 300sec. But ceph-dokan has
set timeout ( DokanResetTimeout(CEPH_DOKAN_IO_TIMEOUT, DokanFileInfo).
CEPH_DOKAN_IO_TIMEOUT is 120 sec. So the dokan driver cleanuped up inode unexpectly.
Client | MDS |
---|---|
getattr | ... |
make_request | ... |
wait | mds receive request |
.... | BUSY |
timeout, cleanup and release_fh | BUSY |
.... | send message back. |
mds return | |
access invalid fh and crash | ... |
So, ketor, can we cancel DokanResetTimeout to fix this bug?
I run ceph-dokan.exe -c ceph.conf -l m but I got this error:
no monitors specified to connect to
please tell me how to solve the problem
tag 0.92
win7
defualt complie command: mingw32-make
miss file :"parts/time.h"
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.