2013-02-17 28 views
5

đã phát triển một ứng dụng chạy trên một đích với hạt nhân 2.6.10. Một thư mục được chia sẻ trên một máy cửa sổ được gắn qua lệnh:cách tắt bộ đệm ẩn trong CIFS (samba) ở phía máy khách trong linux

mount -t cifs -o username=xxx,password=xxx,forcedirectio //192.168.170.67/57 /fsRecord 

Như bạn có thể hiểu từ các tùy chọn lệnh forcedirectio, tôi muốn vô hiệu hóa bộ nhớ đệm trên các mặt hàng. Nhưng tôi không thể.

Lượng RAM miễn phí trên mục tiêu là 40 MB. Khi tôi sao chép một tệp có dung lượng khoảng 10MB, dung lượng RAM miễn phí sẽ giảm xuống còn 30 MB.

Hạt nhân 2.6.10 sử dụng cifs.1.28. Tôi cũng đặt oplockEnabled là 0 (trong cả hai mã nguồn và/proc/fs/cifs/OplockEnabled). Nhưng nó đã không ngừng bộ nhớ đệm. Làm thế nào tôi có thể vô hiệu hóa bộ nhớ đệm trên máy khách cifs cho thực tế?

Trả lời

4

Có lẽ quá muộn, nhưng trong Arch tôi thực hiện điều này như sau:

/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 

Dưới đây là một chức năng tiện dụng để xác định tùy chọn mô-đun hợp lệ.

# 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 
} 

Xem man 5 modprobe.d để biết thêm thông tin về cú pháp modprobe.d.

Ngoài ra, CIFS gắn kết một tùy chọn cache. Theo số the mount.cifs manual, đặt cache=none sẽ tắt tính năng lưu vào bộ nhớ cache, mặc định là cache=strict.

Các vấn đề liên quan