天天看點

通過nfs與samba實作檔案系統共享

    nfs和samba都是我們比較常見的檔案系統共享服務,nfs工作于系統核心之上,一般的系統并不需要安裝此服務的程式,而且其工具元件nfs-utils也一般都是自帶的,如果沒有,通過軟體包安裝就好;而samba的話,服務端需要yum install samba,用戶端則是samba-client。

    然後在服務端,我們隻需要修改nfs或samba的配置檔案,将需要分享的路徑和通路控制等資訊寫入配置檔案,挂載的準備工作就做好了。

通過nfs與samba實作檔案系統共享
通過nfs與samba實作檔案系統共享

上面兩圖是nfs和samba的配置檔案,nfs的配置檔案開始是空的,我們隻需要添加條目即可,而samba的配置,我主要修改的是圖中[netlogon]共享名稱下的資訊,[netlogon]是檔案中原有的類似配置示例的條目,開始時是被注釋的,我去掉注釋并在上面做了修改,就直接用了,自定義共享名稱當然是可以的,我[netlogon]下定義的是/data/fpm-vhosts/web,也可以多家幾個,定義成别的路徑;[homes]和[printers]是定義通路使用者的家目錄及列印選項的,這裡不用改。

    samba的配置檔案還提供的全局的通路控制

通過nfs與samba實作檔案系統共享

我基本沒改,但interfaces和hosts allow開始時是被注釋掉的,我啟用了,并做了修改;由此可見,我這台主機ip是172.16.0.214,并允許172.16網段的客戶機通路此共享檔案系統。

    此外,還有一些日志檔案配置和安全級别的配置,可以改一下max log size,調整一下日志檔案的滾動上限:

通過nfs與samba實作檔案系統共享

其他的都沒必要改;

    好,下面我們做一下總結及環境介紹:

         nfs的配置檔案為/etc/exports或/etc/exports.d/*,因為一開始都是空的,是以就直接在/etc/exports裡加條目就好;

        /PATH/TO/SOME_DIR   clients1(options,.....)

            ro:隻讀

            rw:讀寫;

            sync:同步;

            async:異步;

            root_squash:壓縮root使用者,一般指将其映射為nfsnobody;

            no_root_squash:不壓縮root使用者;

            all_squash:壓縮所有使用者;

            anonuid and anongid:将壓縮的使用者映射為此處指定的使用者;

    圖中我共享的是跟samba上一樣的/data/fpm-vhosts/web路徑及/data路徑,為了友善實驗,都設成了讀寫挂載及不壓縮root使用者。

    注意:現實中不壓縮root使用者就表示通路你共享檔案系統的使用者,如果在用戶端他自己的機器上用的是root使用者,在你的檔案系統中也是root,有着跟你的root一樣的權限,多危險就不用多說了。

    而samba的配置檔案為/etc/samba/smb.conf,主要定義的地方是共享檔案系統配置,也就是上文提到的“[]”裡面加共享名稱的地方

         它的常用指令有:

            comment:注釋資訊;

            path:目前共享所映射的檔案系統路徑;

            browseable:是否可浏覽,指是否可被使用者檢視;

            guest ok:是否允許來賓賬号通路;

            public:是否公開所有使用者;

            writable:是否可寫;

            write list:擁有寫權限的使用者清單;

              使用者名

              @組名

              +組名

    當然,圖中我設定的guest ok是yes的,允許匿名使用者通路,如果不允許的話,就需要使用系統使用者身份登入,但此處需注意的是:使用者是那個使用者,密碼卻是由samba自己管理的密碼,指令是:smbpasswd

        smbpasswd [options] USERNAME

            -a:添加

            -x:删除

            -d:禁用

            -e:啟用

    總之,我在172.16.0.214上已經做好了nfs和samba的分享且權限什麼的都沒問題,隻要開啟服務和端口,起碼我的另一台作為用戶端的主機172.16.0.215可以實作無阻力通路;

    /data/fpm-vhosts/web是我在服務端搭建的lamp的跟路徑,打算在其下放一個wordpress程式,用戶端挂載之後可以通路;

    /data路徑打算讓用戶端挂載之後,讓其做資料庫的儲存檔案路徑,samba中的共享名稱為[mys]。

    接下來就是在用戶端挂載了;

/data路徑:

    nfs挂載之前先看看服務端分享了哪些檔案系統路徑是個好習慣:showmount  -e  172.16.0.214;

得知/data路徑已被分享後:mount  -t  nfs  172.16.0.214:/data   /var/lib/mysql/;

這樣就挂上了,之後安裝上mariadb,它的存儲檔案的目錄預設為 /var/lib/mysql/,隻要授權之後就可以使用了。

    samba中檢視服務端共享的方法是:smbclient  -L  172.16.0.214;

值得一提的是,samba還能像lftp一樣進行互動式通路:smbclient  //172.16.0.214/mys(這裡隻是舉例,此次試驗無需用到互動通路);

    挂載的話:mount  -t  cifs  //172.16.0.214/mys  /var/lib/mysql/

注意:上述通路和挂載都是匿名的,如果挂載時以使用者身份來完成的話,可以在後面跟上:

            -o  username=USERNAME,password=PASSWORD

    使用者與-o選項中指定使用者直接産生映射關系,此時,通路挂載點,是以-o選項中的username指定的使用者身份進行,與本地使用者無關;

/data/fpm-vhosts/web路徑:

    首先,我的服務端與用戶端兩台主機上都搭建了lamp,并且都部署了wordpress。因為wordpress能通過windows上的浏覽器來通路,很直覺,是以友善對比;

通過nfs與samba實作檔案系統共享

這是我用戶端之下自己的wordpress,叫jiangzhi's  wordpress,可以看到,這台主機ip尾号是215;

通過nfs與samba實作檔案系統共享

在服務端部署的wordpress,叫jz's  wordpress,測試上傳圖檔和發送文章,上傳的圖檔就是自己本頁面,開始上傳圖檔時就報錯了,于是我根據提示修改了wp-content目錄的屬主屬組都為apache,而且是遞歸修改(為了保險);之後圖檔上傳成功,于是我将這句話寫到文章中當内容;

通過nfs與samba實作檔案系統共享

文章上傳成功,标題為:《世界,您好不好?》

    最後在215上挂載之:mount  -t  nfs  172.16.0.214:/data/fpm-vhosts/web  /var/www/html/;

    重新開機httpd服務後,在浏覽器上輸入用戶端(215)的位址

再看:

通過nfs與samba實作檔案系統共享

此時,不在是jiangzhi‘s wordpress了,而是nfs服務端的部署;

    由于我權限放的比較松,是以samba上除了挂載指令以外,其他操作大同小異,總體來說,測試成功!

繼續閱讀