2013年2月25日 星期一

Raspberry Pi 應用之Windows檔案伺服器


上一篇我們已經設定完成 Raspberry Pi 網路,應該總是得實要做一些服務來應用,想了一下就從檔案分享器開始好了。

一般而言,在Linux上要將檔案分享出來的方法常見有對Unix Like系統的NFS、對Winsows系統的SMB/CIFS、透過網路作磁碟共享的iSCSI、網際網路雲端硬碟的WebDAV...等等。
由於我們在家時經常使用的是Winsows系統,在Linux系統下大該就是使用SAMBA套件了,所以本篇文章就來實作一下如何讓Raspberry Pi當作Windows檔案分享器。

實作環境:
Windows 8
Raspberry Pi rev 2 Model B 512MB
EDIMAX EW-7811Un無線網卡
SanDisk Ultra 16GB Class10 SD card (作業系統)
SanDisk Cruzer Fit USB 32GB隨身牒 (檔案分享)

實作檔案分享的部分,小容量需求的話可以在作業系統SD卡上分享一個目錄或者是像本篇文章一樣使用USB隨身碟;如果需求是大容量(影音檔之類)的也可以外接一個行動硬碟,只不過這時候Raspberry Pi供給的電源供應器不夠力時建議外接一個可以供電的USB HUB然後將行動硬碟接到這個USB HUB上。

接下來開始實作步驟,實作的基本功力要求是需要Linux (Ubuntu)入門實力;例如指令操作及文字編輯,礙於本篇主要是實作安裝檔案分享器就不詳述基本功的部分了。

實作步驟:
1. 使用ssh client連線到 Raspberry Pi 後,更新最新的套件資訊。(這個部分只更新有套件的最新版本的資訊並不會更新套件的軟體)
sudo apt-get update
如果要同時更新套件軟體時可以使用下面指令:
sudo apt-get update && sudo apt-get -y upgrade

2. 將USB隨身牒插入Raspberry Pi,執行 sudo fdisk -l 確認USB隨身牒的裝置名稱。

從上圖我們可以看到 /dev/mmcblk0pX 就是安裝作業系統的SD卡;/dev/sda1 就是USB隨身碟。

3. 接著用df -h的指令來看USB隨身碟掛載(mount)的情況。

從上圖我們可以看到系統會自動將USB隨身碟掛載到 /media/BAC1-268E 目錄,其中 BAC1-268E 這個目錄是系統抓取磁碟裝置的UUID所產生的(可以使用sudo blkid指令查),通常為了辨識及設定會更改設定讓USB隨身碟掛載到指定的目錄下。

4. 用下列指令在 /media 目錄下建立一個名為 share 的目錄:
sudo mkdir /media/share
並確認建立/media/share目錄:
ls -l /media

5. 用nano 或 vi 之類的編輯器修改 /etc/fstab 檔案內容,fstab 這個檔案內容一般記錄著系統掛載裝置的資訊,內容如下:
sudo vi /etc/fstab

在最後一行新增:
/dev/sda1 /media/share vfat defaults,dmask=0000,fmask=0000 0 0

6. 存檔離開編輯器。並用 sudo shutdown -r now 指令使Raspberry Pi重新開機。當開機完成後從新連線確認USB隨身碟是否掛載到 /media/share

7. 接下來安裝 samba, samba-common-bin, smbclient三個套件。
sudo apt-get install samba samba-common-bin smbclient

8. 接下來編輯 /etc/samba/smb.conf 設定我們用來分享檔案的USB隨身碟,smb.conf 記錄著 samba 服務的相關參數,由於礙於篇幅加上介紹samba不是主角,所以關於設定部分請參考鳥哥網頁中檔案伺服器之二: SAMBA 伺服器說明
sudo vi /etc/samba/smb.conf
確認 workgroup = WORKGROUP (預設不變)

找到
#======================= Share Definitions =======================
確認參數每一行前面都加入了;(分號)例如:
[homes]
   comment = Home Directories
   browseable = no
.......
改成
;[homes]
;   comment = Home Directories
;   browseable = no
......

移到最後一行加入下列設定:

[share]
   comment = USB Share
   path = /media/share
   writeable = Yes
   create mask = 0777
   directory mask = 0777
   browseable = Yes
   public = yes
   guest ok = no
   valid users = pi

存檔後離開編輯器。
註:如果分享檔案可以讓任何人進入以及不用輸入密碼的話可以修改及增加guest參數。
 guest only = Yes
 guest ok = Yes

9. 使用 sudo service samba restart 指令重新啟動samba服務。

10. 使用 sudo testparm -s 指令確認剛剛修改smb.conf的資料有載入到samba服務。

11. 接著建立windows連線的帳號,由於Raspbian已經內建了一個 pi 的使用者,所以我們只要用 sudo smbpasswd -a pi 這個指令就可以讓windows用pi這個用戶登入,假如你想要跟windows登入的名稱一樣的話,必需用usadd指令在Raspbian中建立一個新用戶,然後sudo smbpasswd -a 新用戶名稱。
在執行 sudo smbpasswd -a pi 後會要求你輸入密碼,這是往後從windows所登入的密碼。

12. 接著我們使用windows進行連線,首先打開檔案總管在路徑下輸入 \\Raspberry Pi 的網路IP位置\share 

然後要求輸入用戶及密碼

接著,我們就可以在檔案中管上看到前面我們所設定的USB隨身碟中的檔案內容了。

13. 相關samba的日誌紀錄(log)系統會存放在/var/log/samba目錄下,這裡會記錄一些資訊如果遇到一些障礙或是要查誰從哪台機器登入過等資訊都可以查到。

後記:
按照本篇的實作環境,Raspberry Pi兩個USB埠各插上網卡及行動碟,所消耗的瓦特數最大為3瓦,

(3瓦x 24小時/1000)x 30天 = 2.16 度
每度約4元一個月電費約8.64元,看來Raspberry Pi是一台相當省電的檔案分享器。
另外在網路傳輸檔案測試部分,以實作環境測得大約 42 Mb/s(5.28MB/s, 見下圖),看來傳輸瓶頸應該是USB2.0隨身碟,所以如果遇到傳大容量檔案是要花點時間傳輸,有空再接個硬碟再調校看看效能會不會好些。

參考:
1.鳥哥--檔案伺服器之一:NFS 伺服器
http://linux.vbird.org/linux_server/0330nfs.php

2.鳥哥--檔案伺服器之二: SAMBA 伺服器
http://linux.vbird.org/linux_server/0370samba.php

3.鳥哥--網路磁碟裝置: iSCSI 伺服器
http://linux.vbird.org/linux_server/0460iscsi.php

4.WebDAV-Wikipedia
http://en.wikipedia.org/wiki/WebDAV

5.如何計算電費
http://www.masterhsiao.com.tw/CatOthers/PowerRate/PowerRate.htm



==============延伸閱讀=====================
1. Raspberry Pi 第一次接觸
http://cheng-min-i-taiwan.blogspot.tw/2013/02/raspberry-pi.html

2.Raspberry Pi 網路設定
http://cheng-min-i-taiwan.blogspot.tw/2013/02/raspberry-pi_23.html

3.Raspberry Pi 應用之Windows檔案伺服器
http://cheng-min-i-taiwan.blogspot.tw/2013/02/raspberry-pi-windows.html

4.Raspberry Pi 應用之DLNA影音伺服器
http://cheng-min-i-taiwan.blogspot.tw/2013/02/raspberry-pi-dlna.html

5.Raspberry Pi 硬體控制-- Python 語言篇
http://cheng-min-i-taiwan.blogspot.tw/2013/04/raspberry-pi-python.html

6.Raspberry Pi 硬體控制-- C 語言篇
http://cheng-min-i-taiwan.blogspot.tw/2013/04/raspberry-pi-c.html

7.Raspberry Pi 2 Model B 使用心得
http://www.cheng-min-i-taiwan.blogspot.tw/2015/02/raspberry-pi-2-model-b.html

8.Raspberry Pi 藍牙4.0應用之iBeacon 發射器
http://www.cheng-min-i-taiwan.blogspot.tw/2015/03/raspberry-pi-40ibeacon.html

9.Raspberry Pi安裝MQTT之應用 -- Android訊息推播
http://www.cheng-min-i-taiwan.blogspot.tw/2015/03/raspberry-pimqtt-android.html

10. Raspberry Pi安裝MQTT之IoT應用 -- Android示範
http://cheng-min-i-taiwan.blogspot.tw/2015/03/raspberry-pimqttiot-android.html#more

2 則留言:

  1. 在XP的檔案中管上看到前面我們所設定的USB隨身碟中的檔案內容,但無法增刪修功能,敬請版主釋疑。

    回覆刪除
    回覆
    1. 這部分文章在項次8中有說明了,您可以到鳥哥網站中查詢有關於samba的參數設定。
      http://linux.vbird.org/linux_server/0370samba.php

      刪除