samba以及nfs的自動掛載

一:samba的自動掛載的實現linux

Samba的概述vim

1.1:SMB協議windows

它是Microsoft和Intel在1987年開發的,該協議能夠用在TCP/IP之上,也能夠用在其餘網絡協議(如IPX和NetBEUI)之上。經過SMB協議,客戶端 應用程序能夠在各類網絡環境下讀、寫服務器上的文件,以及對服務器程序提出服務請求。此外經過SMB協議,應用程序還能夠訪問遠程服務器端的文件和打印機等資源 。安全

p_w_picpath

1.2:Samba服務服務器

Linux使用一個被稱爲Samba的程序集來實現SMB協議。經過Samba,能夠把Linux系統變成一臺SMB服務器,使Windows95以上的Windows用戶可以使用Linux的共享文件和打印機,一樣的Linux用戶也能夠經過SMB客戶端使用Windows上的共享文件和打印機資源 。網絡

p_w_picpath

目前Samba的最新版本是3.0.26,它的主要功能以下。session

(1)提供Windows風格的文件和打印機共享。Windows 9五、Windows 9八、Windows NT、Windows 2000、Windows XP、Windows 2003等操做系統能夠利用Samba共享Linux等其餘操做系統上的資源,而從外表看起來和共享Windows的資源沒有區別。app

(2)在Windows網絡中解析NetBIOS的名字。爲了可以利用局域網上的資源,同時使本身的資源也能被別人所利用,各個主機都按期地向局域網廣播本身的身份信息。負責收集這些信息,提供檢索的服務器也被稱爲瀏覽服務器,而Samba可以實現這項功能。同時在跨越網關的時候Samba還能夠做爲WINS服務器使用。async

(3)提供SMB客戶功能。利用Samba程序集提供的smbclient程序能夠在Linux中以相似於FTP的方式訪問Windows共享資源。tcp

(4)提供一個命令行工具,利用該工具能夠有限制地支持Windows的某些管理功能。

1.3:Samba服務工做原理

p_w_picpath

Samba服務的具體工做過程如圖所示。

① 首先客戶端發送一個SMB negprot請求數據報,並列出它所支持的全部SMB協議版本。服務器收到請求信息後響應請求,並列出但願使用的協議版本。若是沒有可以使用的協議版本則返回0XFFFFH,結束通訊。

② 協議肯定後,客戶端進程向服務器發起一個用戶或共享的認證,這個過程是經過發送SesssetupX請求數據報實現的。客戶端發送一對用戶名和密碼或一個簡單密碼到服務器,而後服務器經過發送一個SesssetupX應答數據報來容許或拒絕本次鏈接。

③ 當客戶端和服務器完成了磋商和認證以後,它會發送一個Tcon或TconX SMB數據報並列出它想訪問網絡資源的名稱,以後服務器會發送一個TconX應答數據報以表示這次鏈接是否被接受或拒絕。

④ 鏈接到相應資源後,SMB客戶端就可以經過open SMB打開一個文件,經過read SMB讀取文件,經過write SMB寫入文件,經過close SMB關閉文件。

p_w_picpath

打開linux系統終端,查看是否安裝sabma服務。
[root@localhost root]# rpm -qa|grep samba
samba-2.2.7a-7.9.0
redhat-config-samba-1.0.4-1
samba-common-2.2.7a-7.9.0
samba-client-2.2.7a-7.9.0
[root@localhost root]# service smb start
啓動 SMB 服務: [ 肯定 ]
啓動 NMB 服務: [ 肯定 ]
查看windows xp的IP配置,開始--運行(WIN+R)--cmd --ipconfig/all
windows xp IP:172.19.23.21
windows xp的子網掩碼:255.255.254.0
回到linux中,配置linux IP
[root @ localhost root]#ifconfig eth0 172.19.23.11 netmask 255.255.254.0

//修改IP:172.19.23.11 netmask:255.255.254.0
[root@localhost root]# ifconfig
//查看配置是否成功
eth0 Link encap:Ethernet HWaddr 00:0C:29:64:79:7C
inet addr:172.19.23.11 Bcast:172.19.255.255 Mask:255.255.254.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:781 errors:0 dropped:0 overruns:0 frame:0
TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:115746 (113.0 Kb) TX bytes:7822 (7.6 Kb)
Interrupt:10 Base address:0x2024
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:37746 errors:0 dropped:0 overruns:0 frame:0
TX packets:37746 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2581594 (2.4 Mb) TX bytes:2581594 (2.4 Mb)
//ping網絡是否通暢,ping -c 4 172.19.23.21
[root@localhost root]# ping -c 4 172.19.23.21
//選項-c 參數爲4,發送4次數據包
PING 172.19.23.21 (172.19.23.21) 56(84) bytes of data.
64 bytes from 172.19.23.21: icmp_seq=1 ttl=64 time=0.887 ms
64 bytes from 172.19.23.21: icmp_seq=2 ttl=64 time=0.153 ms
64 bytes from 172.19.23.21: icmp_seq=3 ttl=64 time=0.132 ms
64 bytes from 172.19.23.21: icmp_seq=4 ttl=64 time=0.113 ms
--- 172.19.23.21 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 0.113/0.321/0.887/0.327 ms
[root@localhost root]# service smb start
//啓動samba服務
啓動 SMB 服務: [ 肯定 ]
啓動 NMB 服務: [ 肯定 ]
//重啓samba服務:service smb restart
[root@localhost root]# pstree|grep mbd
//查看samba服務是否啓動
|-nmbd
|-smbd
//samba有兩個服務器一個是smb 一個是nmb
//查看samba服務器的運行情況:pgrep smbd
[root@localhost root]# pgrep smbd
6106
[root@localhost root]# pgrep nmbd
6110
//有時你的防火牆可能會把smbd服務器的端口封掉,因此咱們應該打開smbd服務器所佔用的端口,139和445
[root@localhost root]# netstat -tlnp|grep smb
//查看samba服務器的端口及防火牆
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN
6106/smbd
//若是不知道怎麼打開,可能你和我同樣市新手,仍是把防火牆規則清除掉也行
[root@localhost root]# iptables -F

[root @localhost root]#/sbin/iptables -F
//在windows xp建立一個文件夾,如在d:盤建立一個test,在test文件夾,並設爲共享。而後再test文件夾中建立一個test.txt文件。

如今咱們開始在linux下藉助於smbmount命令來實現網絡驅動器映射,具體命令是:
smbmount //windowsHostName/ShareName /mnt/smbdir -U administrator

說明:此處的sharename指代windows共享目錄名稱,smbdir指代掛載點名稱,U指代登錄windows系統的用戶名,administrator指代登錄windows主機下的共享文件夾a映射爲/mnt/winshare.目錄,具體步驟是:
在實現網絡驅動映射前,首先在linux下建個文件夾:
[root @localhost root]#mkdir /mnt/windows
在終端命令窗口,運行:smbmount //172.19.23.21/a /mnt/windows -U administrator
[root@localhost root]# smbmount //172.19.23.21/test /mnt/windows -U administrator/mnt/windows: invalid option -- U
6253: session request to 172.19.23.21 failed (Called name not present)
6253: session request to 172 failed (Called name not present)
Password: //則進入系統,系統會要求輸入用戶密碼,此時輸入windows系統的密碼,回車。若是windows沒有密碼直接回車
[root@localhost root]#cd /mnt/windows
//切換到windows目錄
[root@localhost windows]# ll
//查看是否有剛纔建立的文件夾test.txt
總用量 0
-rwxr-xr-x 1 root root 0 1月 4 11:50 test.txt

二:nfs的自動掛載

NFS服務的概述

NFS最先是由Sun公司於1984年開發出來的,其目的就是讓不一樣計算機不一樣操做系統之間能夠彼此共享文件。因爲NFS使用起來很是方便,所以很快獲得了大多數的UNIX/Linux系統的普遍支持,並且還被IETE(國際互聯網工程組)制定爲RFC190四、RFC1813和RFC3010標準。

NFS採用客戶/服務器工做模式。在NFS服務器上將/nfs/public目錄設置爲輸出目錄(即共享目錄)後,其餘客戶端就能夠將這個目錄掛載到本身系統中的某個目錄下,這個目錄能夠與服務器上的輸出目錄和其餘客戶機中的目錄不相同,例如圖中的客戶機PC1與PC2的掛載目錄就不相同。若是某用戶登陸到客戶機PC1並進入/mnt/nfs目錄,那麼他就能夠看到NFS服務器內/nfs/public目錄下的全部子目錄及文件,只要具備相應的權限,就可使用cp、cd、mv、rm和df等命令對磁盤或文件進行相應的操做。

p_w_picpath

使用NFS服務,至少須要啓動如下3個系統守護進程。

(1)rpc.nfsd

(2)rpc.mountd

(3)portmap

一,檢查

在服務器上檢查安裝包
rpm -qa |grep portmap
rpm -qa |grep nfs
cat /proc/filesystem中查看有沒有nfsd服務
ntsysv 選項中選中nfs

二,配置

exports文件是NFS的共享目錄配置文件,主要是指定共享目錄和共享策略。使用vi命令編輯,在文件中加入相似下面的內容:
vim /etc/exprot中添加參數:/home/nfsdata *(rw,root_squash,no_all_squash,sync,insecure)
#參數下面有詳解

三,啓動服務

/etc/init.d/portmap start
/etc/init.d/nfslock start
/etc/init.d/nfs start
開啓服務器端的NFS服務,再從客戶端上查看一下NFS服務器的狀況:
Showmount –a顯示出NFS服務器192.168.1.123的共享目錄被客戶端192.168.122掛載到/home中;
Showmount –e顯示出NFS服務器192.168.1.123上有兩個共享目錄:/tmp和/home/nfs-share
Showmount –d顯示出NFS服務器的共享目錄被掛載到了/home這個掛載點上。
查看啓動狀況:
/etc/init.d/portmap status
/etc/init.d/nfs status

四,掛載

Linux:客戶端的portmap的服務必定要啓動,而後執行命令:
mount -t nfs 10.1.0.13:/home/nfsdata /nfs
Mac:系統自帶服務,直接mount_nfs -o resvport 10.1.0.13:/home/nfsdata /nfs_11

五,問題

一、提示:mount to NFS server '172.20.67.203' failed: server is down.
解決方案:多是NFS服務器的防火牆有問題;
二、提示:mount: RPC: Timed out
解決方案:因爲RPC協議沒運行;啓動portmap服務;
也有多是防火牆問題;Server/Client均有可能。
解釋:
參數:
下面是一些NFS共享的經常使用參數:
ro 只讀訪問
rw 讀寫訪問
sync 全部數據在請求時寫入共享
async NFS在寫入數據前能夠相應請求
secure NFS經過1024如下的安全TCP/IP端口發送
insecure NFS經過1024以上的端口發送
wdelay 若是多個用戶要寫入NFS目錄,則歸組寫入(默認)
no_wdelay 若是多個用戶要寫入NFS目錄,則當即寫入,當使用async時,無需此設置。
hide 在NFS共享目錄中不共享其子目錄
no_hide 共享NFS目錄的子目錄
subtree_check 若是共享/usr/bin之類的子目錄時,強制NFS檢查父目錄的權限(默認)
no_subtree_check 和上面相對,不檢查父目錄權限
all_squash 共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄。
no_all_squash 保留共享文件的UID和GID(默認)
root_squash root用戶的全部請求映射成如anonymous用戶同樣的權限(默認)
no_root_squas root用戶具備根目錄的徹底管理訪問權限
anonuid=xxx 指定NFS服務器/etc/passwd文件中匿名用戶的UID

新掛載分區建立NFS

server:192.168.1.190

client:192.168.1.200

一、經過fdisk工具,劃分出四個區域

sdb1,sdb2,sdb3,sdb4,sdb5(sdb4爲擴展總分區,此分區不可用)

sdc1,sdc2

------------------------------

[root@chen-190 ~]# fdisk /dev/sdb

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel. Changes will remain in memory only,

until you decide to write them. After that, of course, the previous

content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): p

Disk /dev/sdb: 4294 MB, 4294967296 bytes

255 heads, 63 sectors/track, 522 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

Command (m for help):

Command (m for help): n

Command action

e extended

p primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-522, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-522, default 522): +500M

Command (m for help): n

Command action

e extended

p primary partition (1-4)

p

Partition number (1-4): 2

First cylinder (63-522, default 63):

Using default value 63

Last cylinder or +size or +sizeM or +sizeK (63-522, default 522): +500M

Command (m for help): n

Command action

e extended

p primary partition (1-4)

p

Partition number (1-4): 3

First cylinder (125-522, default 125):

Using default value 125

Last cylinder or +size or +sizeM or +sizeK (125-522, default 522): +1000M

Command (m for help): n

Command action

e extended

p primary partition (1-4)

e

Selected partition 4

First cylinder (248-522, default 248):

Using default value 248

Last cylinder or +size or +sizeM or +sizeK (248-522, default 522):

Using default value 522

Command (m for help): n

First cylinder (248-522, default 248):

Using default value 248

Last cylinder or +size or +sizeM or +sizeK (248-522, default 522): +1000M

Command (m for help): p

Disk /dev/sdb: 4294 MB, 4294967296 bytes

255 heads, 63 sectors/track, 522 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sdb1 1 62 497983+ 83 Linux

/dev/sdb2 63 124 498015 83 Linux

/dev/sdb3 125 247 987997+ 83 Linux

/dev/sdb4 248 522 2208937+ 5 Extended

/dev/sdb5 248 370 987966 83 Linux

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

-----------------------

二、把劃分出來的區域,格式化成linux可識別的EXT3格式。

mkfs -t ext3 -c /dev/sdb1

mkfs -t ext3 -c /dev/sdb2

mkfs -t ext3 -c /dev/sdb3

mkfs -t ext3 -c /dev/sdb5

mkfs -t ext3 -c /dev/sdc1

mkfs -t ext3 -c /dev/sdc2

三、建立文件夾。而後把四個區域掛載到相應的文件夾

[root@chen-190 /]# mount /dev/sdb1 /share1

[root@chen-190 /]# mount /dev/sdb2 /share2

[root@chen-190 /]# mount /dev/sdb3 /share3

[root@chen-190 /]# mount /dev/sdb5 /share4

[root@chen-190 /]# mount /dev/sdc1 /share5

[root@chen-190 /]# mount /dev/sdc2 /share6

[root@chen-190 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/VolGroup00-LogVol00

5.8G 2.8G 2.7G 51% /

/dev/sda1 99M 11M 83M 12% /boot

tmpfs 544M 0 544M 0% /dev/shm

/dev/sdb1 471M 412M 35M 93% /share1

/dev/sdb2 471M 412M 35M 93% /share2

/dev/sdb3 950M 869M 34M 97% /share3

/dev/sdb5 950M 869M 34M 97% /share4

/dev/sdc1 1.9G 35M 1.8G 2% /share5

/dev/sdc2 3.1G 69M 2.9G 3% /share6

四、設置剛纔的分區開機自動掛載,修改/etc/fstab表:

server端/etc/fstab添加如下內容:

/dev/sdb1 /share1 ext3 defaults 0 0

/dev/sdb2 /share2 ext3 defaults 0 0

/dev/sdb3 /share3 ext3 defaults 0 0

/dev/sdb5 /share4 ext3 defaults 0 0

/dev/sdc1 /share5 ext3 defaults 0 0

/dev/sdc2 /share6 ext3 defaults 0 0

client端、etc/fstab;

192.168.1.190:/share1 /share1 nfs defaults 0 0

192.168.1.190:/share2 /share2 nfs defaults 0 0

192.168.1.190:/share3 /share3 nfs defaults 0 0

192.168.1.190:/share4 /share4 nfs defaults 0 0

192.168.1.190:/share5 /share5 nfs defaults 0 0

192.168.1.190:/share6 /share6 nfs defaults 0 0

client端/etc/rc.local:

mount -t nfs 192.168.1.190:/share1 /share1

mount -t nfs 192.168.1.190:/share2 /share2

mount -t nfs 192.168.1.190:/share3 /share3

mount -t nfs 192.168.1.190:/share4 /share4

mount -t nfs 192.168.1.190:/share5 /share5

mount -t nfs 192.168.1.190:/share6 /share6

五、設置nfs與portmap自動啓動,在server端/etc/rc.local中添加如下:

service nfs start

exportfs -rv

service portmap start

六、修改server端/etc/exports 配置文件,添加如下內容:

/share1 192.168.1.200/24(rw)

/share2 192.168.1.200/24(rw)

/share3 192.168.1.200/24(rw)

/share4 192.168.1.200/24(rw)

/share5 192.168.1.200/24(rw)

/share6 192.168.1.200/24(rw)

七、啓動掛載NFS所需的進程

server端:

加載exports目錄

exportfs -rv

啓動portmap服務:

service portmap start[restart]

啓動NFS服務:

service nfs start[restart]

client 端

建立掛載目錄

mkdir /share1

mkdir /share2

mkdir /share3

mkdir /share4

mkdir /share5

mkdir /share6

啓動portmap服務:

service portmap start[restart]

掛載服務器端的共享目錄(假設服務器端192.168.1.190):

[root@chen-200 /]# mount -t nfs 192.168.1.190:/share2 /share2

[root@chen-200 /]# mount -t nfs 192.168.1.190:/share1 /share1

[root@chen-200 /]# mount -t nfs 192.168.1.190:/share3 /share3

[root@chen-200 /]# mount -t nfs 192.168.1.190:/share4 /share4

此時,若是服務器端的防火牆有開着的話,將會提示錯誤,如:

mount: mount to NFS server '192.168.0.10' failed: System Error: No route to host.

查看防火牆狀態:service iptables status

中止防火牆:service iptables stop

相關文章
相關標籤/搜索