解決mount cifs時出現"is not a valid block device"的問題


最近在 Linux (CentOS 5.5) 測試要掛載 CIFS時遇上了奇怪的問題,
這邊假設我們要掛載的 CIFS 資料夾是 //10.0.0.1/aaa/bbb,
其中 //10.0.0.1/aaa 是設定分享的資料夾,而 bbb 則是其中的子資料夾,
此時如果要直接掛載 //10.0.0.1/aaa/bbb,可能就會遇上以下錯誤:
[root@localhost ~]# mount -t cifs //10.0.0.1/aaa/bbb /mnt -o user=u,pass=p
mount: //10.0.0.1/aaa/bbb is not a valid block device

此時若下dmesg | tail,就會看到這樣的錯誤:
[root@localhost ~]# dmesg | tail
 CIFS VFS: cifs_mount failed w/return code = -6

然而相同的指令,直接掛載分享的 //10.0.0.1/aaa 資料夾卻可以成功:
[root@localhost ~]# mount -t cifs //10.0.0.1/aaa /mnt -o user=u,pass=p
[root@localhost ~]# 

在仔細比對指令除了資料夾路徑外沒有差別後,我開始找資料看到底是哪兒發生錯誤,
最後找到這篇:mount: //10.52.0.102/Jim/dpc is not a valid block device
其中最關鍵的一句在這兒:
Hi, I would assume that you need to modify the XP share to point to the Jim/dpc, 
not only dpc. (or add a 2nd share for the Jim/dpc).
I believe you can only directly mount what is shared, but not any contents of that share.
也就是說在預設的情況下我們只能直接掛載分享的那個資料夾,而不能掛子資料夾。

雖然知道預設不能掛子資料夾,但這也太麻煩了吧!
所以又找了一些資料,後來查到只要安裝特定的套件即可,
若要確認是否已安裝了套件,可以用以下指令來確認:
(因為裝完套件後就能支援mount.cifs的用法了,若找不到就是還沒裝)
[root@localhost ~]# mount.cifs
-bash: mount.cifs: command not found

至於要怎麼安裝所需的套件呢?在CentOS可以下接下來的指令:
[root@localhost ~]# yum install samba-client

若和我一樣無法連網路,那麼就得先下載所需的 rpm 檔後再自行安裝,
因為我的仍是舊版的 CentOS 5.5,所需套件可至vault.centos.org下載,
當然因為不是透過 yum,一開始得自行解決 dependency 的問題:
[root@localhost ~]# rpm -iUhv samba-client-3.0.33-3.28.el5.x86_64.rpm 
error: Failed dependencies:
 samba-common = 0:3.0.33-3.28.el5 is needed by samba-client-3.0.33-3.28.el5.x86_64
[root@localhost ~]# rpm -iUhv samba-client-3.0.33-3.28.el5.x86_64.rpm 
error: Failed dependencies:
 samba-common = 0:3.0.33-3.28.el5 is needed by samba-client-3.0.33-3.28.el5.x86_64
[root@localhost ~]# rpm -iUhv samba-common-3.0.33-3.28.el5.x86_64.rpm 
error: Failed dependencies:
 libsmbclient = 0:3.0.33-3.28.el5 is needed by samba-common-3.0.33-3.28.el5.x86_64

我們看到這次所需的有三個套件,由最後面的開始安裝即可:
[root@localhost ~]# rpm -iUhv libsmbclient-3.0.33-3.28.el5.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:libsmbclient           ########################################### [100%]
[root@localhost ~]# rpm -iUhv samba-common-3.0.33-3.28.el5.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:samba-common           ########################################### [100%]
[root@localhost ~]# rpm -iUhv samba-client-3.0.33-3.28.el5.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:samba-client           ########################################### [100%]

裝完後再下 mount.cifs 就找得到指令了,而且掛載 cifs 的子資料夾也正常囉!

for Ubuntu:
sudo apt-get install smbfs


本文出自符碼記憶,請勿全文轉載,部份轉載請註明出處 關鍵字:CentOS, Ubuntu, mount, cifs, mount.cifs, is not a valid block device, yum, rpm, samba-client,  smbfs
參考資料:

這個網誌中的熱門文章

2018年5月繳106年度綜合所得稅信用卡優惠整理!

最新106年度綜合所得稅計算教學!教你看懂稅率級距表/免稅額/扣除額!今年新增基本生活費不課稅也更新囉~

綜合所得稅節稅攻略:列舉扣除額保險費篇!

證件遺失補辦身分證/健保卡/駕照/行照/信用卡總整理

國泰Koko combo icash網購/超商/icash/繳費5%!

綜合所得稅節稅攻略:列舉扣除額房貸房租篇!

7-11/全家/萊爾富刷信用卡/icash繳費賺回饋攻略!

2018最新博客來100,50,25折價券序號e-coupon分享

繳納2018/107年度房屋稅信用卡回饋/分期整理!

結婚不是罪!婚姻懲罰稅取消,夫妻可分開計稅!