centos手動分區,linux分區方案 arv,Linux運維 第三階段 (九)NFS

 2023-10-15 阅读 18 评论 0

摘要:Linux運維第三階段(九)NFSnfs為方便文件有序管理,把磁盤disk空間在內核映射為一種軟件結構,通過文件系統FS管理工具(mke2fs)將磁盤格式為某分區格式(ext4),則disk被分為元數據區和數據區對硬件操作只有內核,函數調用(或過程調用,內核輸出的

Linux運維第三階段(九)NFS

nfs

為方便文件有序管理,把磁盤disk空間在內核映射為一種軟件結構,通過文件系統FS管理工具(mke2fs)將磁盤格式為某分區格式(ext4),則disk被分為元數據區和數據區

對硬件操作只有內核,函數調用(或過程調用,內核輸出的函數read(),write())

一般講,本地應用程序application實現某個操作,都是本地調用(本地的兩個程序間或程序與內核間調用函數完成某種功能的過程)

centos手動分區,作為程序員開發某種能與其它模塊或其它組件交互的程序,只要其它組件提供了函數,就可與之交互,如shell中的函數就是本地過程調用(LPC,local procedure call)

程序員寫的程序需要在兩個主機間進行交互,完成程序協作,必須要完成在網絡上是如何通信的機制,以web服務為例:客戶端client本地程序所請求的內容在另一主機,瀏覽器browser初始化一個請求,自己定義向內核完成系統請求,由內核封裝請求報文轉給服務器端server-side,server-side通過內核中tcp/ip協議棧解碼將請求轉給httpd(http報文)

C/S,B/S,任何一個要通過網絡完成client和server協調的應用程序,client要能處理網絡請求的機制,server必須能提供解決網絡請求的機制(browser:http://IP:port/RESOURCES)

FS本身只是一個內核模塊,不具備網絡功能,之所以mkdir/touch能完成在遠端主機上操作,借助于其它網絡功能(RPC,remote procedure call)將兩個主機間建立起關聯關系,而client和server并不能意識到它是工作在網絡上的,整個過程隱藏于RPC背后的機制

client執行mkdir交至內核,內核發現要處理的設備并不是本地設備,于是將請求轉給本地RPC-client(stub存根調用),而RPC-client請求RPC-server,RPC-server在它的本地將請求(RPC

-client和RPC-server在中間協調工作)轉至相應程序,程序處理完又返回給RCP-server,若操作對象是FS,FS本身也需要某個程序監聽在某個套接字socket上

centos怎么分區?程序員在開發client和server應用程序時不用考慮網絡協議報文的封裝,RPC在底層已完成此功能

RPC只是個框架,是種編程技術(可理解為協議),為多個不想開發網絡功能的程序提供服務,簡化分布式應用程序的開發,僅負責幫助封裝網絡報文,linux提供RPC服務的程序是portmap(111/tcp,111/udp)

注:http服務的程序(httpd,nginx,lighttpd),ftp服務的程序(vsftpd)

兩種工作方式:

1、client(mkdir)-->RPC-client(stub)-->RPC-server-->portmap

2、client(mkdir)-->RPC-client(stub)-->RPC-server-->portmap

centos7手動分區方案、stub-->portmap(portmap會在RPC-server上注冊它的端口,RPC-server接受請求并初始化請求,初始化完成后stub直接與相應應用程序聯系完成數據傳輸,RPC僅完成初始化)

browser-->server(html格式)

NFS-client-->NFS-server

RPC:二進制格式;文本格式(XMLRPC,RPC基于http的實現,用http傳輸XML格式的報文,建立RPC數據交換通道,實現復雜)-->SOAP(simpleobject access protocol,輕量級的XMLRPC)

在本地主機兩個進程間通信或進程與內核間通信,通過進程間通信機制(IPC機制或系統調用(函數調用,本地函數調用));在同一OS內部兩個進程間數據交換,交換格式經內核協調后基于進程間通信就可完成數據交換(共享內存的進程間通信);兩個進程工作在不同主機上,內核借助于另一應用程序(RPC-client-->RPC-server)交至另一主機的進程對象,處理完返回(RPC-server-->RPC-client)

NFS(network file system,SUN開發,既是文件系統也是協議;NFSv1僅在SUN內部用,目前最新NFSv4(redhat6),NFSv3(redhat5);驗證機制簡單,僅IP驗證)

centos手動分區方案?NFS在用戶認證上的功能是薄弱的,NFS服務器僅根據IP來驗證,client向nfs-sever說他是誰那他就是誰,NFS僅用在linux間內網共享文件上,不建議在互聯網上使用

client-side的jerry(UID:510)在server-side上創建一文件,若server-side上并沒有jerry這個用戶,則文件的屬主顯示為jerry的UID號510;若server-side有jerry這個用戶且UID與client-side的UID相同,則文件屬主為jerry;若server-side端tom的UID與client-side jerry的UID相同,則文件屬主顯示為tom

#rpm?-ql? nfs-utils(有這個包就可配置為nfs-server)

/usr/sbin/{rpc.mountd,rpc.nfsd}(核心程序,rpc.mountd實現server-side認證,認證通過,client拿著mountd給它的令牌找nftd建立通信)

/etc/rc.d/init.d/{nfs,nfslock,rpc*}(每個主機所持有的鎖是在自己的內存中,是該主機內核所持有的鎖;若由多個主機訪問nfs-server,則由nfs服務提供鎖,分布式文件鎖)

#service?portmap? status(確定portmap是運行的)

centos分區方案?#service?nfs? start(nfs啟動會向portmap注冊使用一堆端口,quotad,daemon,mountd)

#netstat?-tunlp(111/tcp,111udp)

#rpcinfo?-p? localhost(本機RPC程序監聽的端口;其中nfsd注冊使用的端口號固定不變2049/tcp,2049/udp;mountd和quotad注冊的端口號每重啟服務都變,向RPC服務注冊,由portmap選取)

nfs三個進程:nfsd(主服務)、mountd(接受client掛載請求)、quotad(磁盤配額限定)

注:最好給mountd和quotad選取固定端口,否則若portmap隨機選取了80或3306,其它服務將不能啟動

#vim?/etc/sysconfig/nfs

centos磁盤分區?LOCKD_TCPPORT=

LOCKD_UDPPORT=

MOUNTD_PORT=

RQUOTAD_PORT=

#man?exports

#vim?/etc/exports

每一行包含一個共享出去的FS及哪些client能訪問該FS,例如:

/PATH/TO/SOME_DIR? CLIENT_LIST(指定目錄或分區??? 多個客戶端可用空格分開)

每個客戶端后必須跟一個小括號,里面定義了此客戶的訪問特性及訪問權限,例如:

/var/shared?? 172.16.0.0/16(ro,async)? 192.168.0.0/24(rw,sync)

FS導出屬性 :ro,rw,sync,async,root_squash,all_squash,anonuid,anongid

async(一般使用異步)

root_squash(映射root為匿名賬號,默認此項啟用,root在NFS中自動轉為anonymous,否則任何client端的root在服務器端導出的目錄下都有管理員權限)

all_squash(所有賬號都映射為匿名賬號,最安全)

anonuid=#,anongid=#(These? options?explicitly? set the uid and gid ofthe anonymous account.)

舉例:掛載的所有用戶都映射為指定設置

/var/shared??172.16.0.0/16(rw,all_squash,anonuid=510,anongid=510)

#showmount?-a ?NFS_SERVER(顯示服務器上所有導出的FS及客戶端的掛載記錄)

#showmount?-d? NFS_SERVER(服務器上導出的FS中被client掛載的記錄)

#showmount?-e? NFS_SERVER(查看指定服務器導出的各FS)

#mount?-t? nfs? NFS_SERVER:/PATH/TO/SOME_EXPORT? /PATH/TO/SOME_HERE(客戶端執行掛載)

#exportfs?-arv(此句表示重新輸出所有導出的目錄,此操作用于/etc/exports文件更改后不用重啟服務即可生效(防止已連接的client因重啟服務導致斷開);-a要與-r或-u同時使用,-a表示輸出或取消輸出所有導出的目錄,-r表示reexport重新輸出所有導出的目錄,-u表示unexport取消輸出導出的目錄,-v顯示詳細信息verbose)

#exportfs?-auv(此句表示取消導出所有目錄)

#vim?/etc/fstab

172.16.100.1:/var/shared?? /mnt/nfs ? ?nfs?? defaults,_rnetdev?? 0?? 0

注:_rnetdev表示開機自動掛載時,若能掛載上則掛載,否則跳過

==================================================================

nfs服務端可通過編輯/etc/exports導出共享的目錄,也可通過命令exportfs,如

[root@test-master ~]# man exportfs

NAME

exportfs - maintain table of exported NFS file systems

SYNOPSIS

/usr/sbin/exportfs [-avi] [-o options,..] [client:/path ..]

/usr/sbin/exportfs -r [-v]

/usr/sbin/exportfs [-av] -u [client:/path ..]

/usr/sbin/exportfs [-v]

/usr/sbin/exportfs -f

方法一:

[root@test-master ~]# exportfs -o rw,sync,all_squash,anonuid=65534,anongid=65534,mp,fsid=210.96.20.0/24:/drbd

方法二:

[root@test-master ~]# vim /etc/exports

/drbd??10.96.20.0/24(rw,sync,all_squash,anonuid=65534,anongid=65534,mp,fsid=2)

[root@test-master ~]# exportfs -arv

exporting 10.96.20.0/24:/drbd

無論使用哪種方式都會將設置的內容保存到/var/lib/nfs/etab中,該文件被nfs client的rpc.mountd進程使用(rhel5中client掛載使用后的狀態在nfs server-side是保存在/var/lib/nfs/rmtab這個文件中,而到rhel6中此文件不再保存client狀態)

[root@test-master ~]# cat /var/lib/nfs/etab

/drbd 10.96.20.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,fsid=2,mountpoint,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,all_squash)

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/137695.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息