如何在linux中的客户端CIFS(samba)中禁用缓存
发布时间:2020-12-14 01:00:52 所属栏目:Linux 来源:网络整理
导读:开发了一个应用程序,以2.6.10内核的目标运行. Windows计算机上的共享文件夹通过以下命令安装: mount -t cifs -o username=xxx,password=xxx,forcedirectio //192.168.170.67/57 /fsRecord 从命令选项forcedirectio可以理解,我想在客户端禁用缓存.但我不能.
开发了一个应用程序,以2.6.10内核的目标运行.
Windows计算机上的共享文件夹通过以下命令安装:
mount -t cifs -o username=xxx,password=xxx,forcedirectio //192.168.170.67/57 /fsRecord 从命令选项forcedirectio可以理解,我想在客户端禁用缓存.但我不能. 目标上的可用RAM量为40 MB.当我复制大小约10MB的文件时,可用RAM大小减少到30 MB. 内核2.6.10使用cifs.1.28.我还将oplockEnabled设置为0(在源代码和/ proc / fs / cifs / OplockEnabled中).但它并没有停止缓存.如何在cifs客户端上禁用缓存? 解决方法
也许为时已晚,但在Arch中,我通过以下方式完成此任务:
/etc/modprobe.d/cifs.conf ------------------------- # Disable caching and the CIFS oplog for stable NTFS network shares options cifs enable_oplocks=0 install cifs /sbin/modprobe --ignore-install cifs $CMDLINE_OPTS && echo 0 > /proc/fs/cifs/LinuxExtensionsEnabled && echo 0 > /proc/fs/cifs/LookupCacheEnabled remove cifs /sbin/modprobe -r cifs 这是一个确定有效模块选项的便捷功能. # Shamelessly ripped the Kernel_Modules ArchWiki entry: # https://wiki.archlinux.org/index.php?title=Kernel_modules&oldid=286087#Bash_function_to_list_module_parameters function aa_mod_parameters () { N=/dev/null; C=`tput op` O=$(echo -en "n`tput setaf 2`>>> `tput op`"); for mod in $(cat /proc/modules|cut -d" " -f1); do md=/sys/module/$mod/parameters; [[ ! -d $md ]] && continue; m=$mod; d=`modinfo -d $m 2>$N | tr "n" "t"`; echo -en "$O$m$C"; [[ ${#d} -gt 0 ]] && echo -n " - $d"; echo; for mc in $(cd $md; echo *); do de=`modinfo -p $mod 2>$N | grep ^$mc 2>$N|sed "s/^$mc=//" 2>$N`; echo -en "t$mc=`cat $md/$mc 2>$N`"; [[ ${#de} -gt 1 ]] && echo -en " - $de"; echo; done; done } 有关modprobe.d语法的更多信息,请参见man 5 modprobe.d. 此外,CIFS安装遵循缓存选项.根据the mount.cifs manual,设置cache = none应禁用缓存,而默认值为cache = strict. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |