似乎inotify不适用于NFS.是否有支持inotify的网络文件系统的ReadDirectoryChangesW函数?

wujun_2015 2021-01-20 11:40:20
似乎inotify不适用于NFS.是否有支持inotify的网络文件系统的ReadDirectoryChangesW函数
...全文
247 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wujun_2015 2021-01-21
  • 打赏
  • 举报
回复
贴上代码如下,问题是:在平常的windows目录下可以正常监视到文件增加等信息,但对NFS mount到本机的Z:盘文件夹的资料无法监控到任何信息, 但是查看NFS mount的Z:盘中的文件是可以看到的,不知道是否与Z:权限有关,现在是只读的. UINT TestThread(LPVOID lparam) { CMyTestDlg * dlg = (CMyTestDlg*)lparam; HANDLE hDir; char notify[1024]=""; DWORD cbBytes;//,i; char AnsiChar[3]=""; wchar_t UnicodeChar[2]=L""; CString path; FILE_NOTIFY_INFORMATION *pnotify=(FILE_NOTIFY_INFORMATION *)notify; FILE_NOTIFY_INFORMATION *tmp=NULL; //GetCurrentDirectory(MAX_PATH,path.GetBuffer(MAX_PATH+1)); path=dlg->m_strFilePath;//"D:\\Test"; hDir = CreateFile( path, FILE_LIST_DIRECTORY, FILE_SHARE_READ| FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, NULL); if (hDir == INVALID_HANDLE_VALUE) { dlg->m_edit.ReplaceSel("hDir:INVALID_HANDLE_VALUE\r\n"); return 0; } dlg->m_edit.ReplaceSel("Begin to monitor "); dlg->m_edit.ReplaceSel(path); dlg->m_edit.ReplaceSel("\r\n"); while (TRUE) { if(ReadDirectoryChangesW(hDir, ¬ify, sizeof(notify), TRUE, FILE_NOTIFY_CHANGE_FILE_NAME| FILE_NOTIFY_CHANGE_FILE_NAME| FILE_NOTIFY_CHANGE_LAST_WRITE|FILE_NOTIFY_CHANGE_CREATION, &cbBytes, NULL, NULL)) { tmp = pnotify; if(FILE_ACTION_ADDED==tmp->Action) { CString szFileName(tmp->FileName, tmp->FileNameLength/sizeof(wchar_t)); CString sTmp(path); //sTmp+="\\"; sTmp+=szFileName; sTmp+=" file be added\r\n"; dlg->m_edit.ReplaceSel(sTmp); } } } return 0; }
helloword78 2021-12-18
  • 举报
回复
@wujun_2015 楼主找到解决方案了吗
wujun_2015 2021-01-21
  • 打赏
  • 举报
回复
版主,能否看看
Re: MySQL 高可用工具 DRBD 实战部署详解 ========================================# DRBD 是什么(用三句话总结) 目的:类似于 rsync + inotify 数据目录(/data)变化时,实现数据同步 功能:类似于本地磁盘阵列 raid-1,保持磁盘或者分区的一致性,但最终的目的是(/data)数据目录的一致性。 原理:类似于MySQL的主从复制,一份写在磁盘中,一份写在二进制日志中;DRBD原理也是一份写在磁盘中,另一份通过DRBD软件,经过tcp/ip协议,基于block变化,传输到远程磁盘中做记录。 # DRBD 的功能 Distributed Replicated Block Divice(缩略:DRBD)(分布式复制块设备) 基于高可用 HA 服务器之间的数据同步解决方案 基于块设备在不同的高可用服务器之间同步和镜像数据的软件,通过它可以实现在网络中的两台服务器之间基于“块”(block)设备级别的实时或异步镜像或同步复制(【原理】:类似MySQL主从复制) # DRBD 的目的 类似于DRBD ≈(rsync + inotify)的架构:单inotify基于文件系统‘上层’,当文件系统中有数据发生变化,就调用 rsync 服务,将文件系统中的文件同步到备库。 但是DRBD是基于文件系统底层(主要区别),即 block 块级别的更‘底层’,而 inotify是在文件系统之上的实际物理文件(文件复制),因此DRBD效率更高(类似克隆方式 GHOST 克隆软件)! 相对而言:(rsync + inotify)工作原理(效率低...)... # DRBD 的应用 heartbeat + DRBD + nfs/mfs/gfs    下章演示... heartbeat + DRBD + mysql    本章演示... heartbeat + DRBD + oracle   甚至放弃 Oracle 原厂 RAC + DataGuard 等标配 HA方案        

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧