解決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
參考資料: