因為喜歡尋找便宜VPS和要經常更換伺服器的問題,所以網站搬家就成了家常便飯的事情了。對於大型的網站數據,最好直接在機房與機房之間進行數據傳遞,常用的三個命令工具Rsync,SCP,Tar,可以幫助我們快速解決VPS遠端網站搬家與數據同步。
不過,多虧小Z部落格提醒,我們除了使用指令工具來實現資料傳輸,還可以使用硬碟掛載的方式來解決資料遷移的問題。利用NFS,即網路檔案系統(Network File System)分散式檔案系統協議,我們可以將不同的VPS主機的目錄實現遠端掛載,這樣拷貝複製檔案就方便多了。
GlusterFS是Scale-Out儲存解決方案Gluster的核心,它是一個開源的分散式檔案系統,具有強大的橫向擴充能力,透過擴充能夠支援數PB儲存容量和處理數千客戶端。 GlusterFS一般用作企業級的檔案儲存方案,但我們也可以利用GlusterFS在不同的VPS主機之間共用儲存。
最後一個就是samba了。 SAMBA 最初發展的主要目就是要用來溝通Windows 與 Unix Like 這兩個不同的操作平台之間的共享,Samba配置簡單,操作直觀。 NFS遠端掛載、GlusterFS共享儲存和samba共享伺服器也可以用於檔案協作、伺服器鏡像等,總之可擴充性非常強。
本文就來簡單分享NFS遠端掛載、GlusterFS共享儲存和samba共享伺服器操作方法,更多的關於雲端儲存和站長工具,還可以了解:
- Nextcloud個人雲端儲存絕佳選擇:一鍵自動安裝方法和雲端磁碟使用體驗
- Lsyncd搭建同步鏡像-用Lsyncd實現本地和遠端伺服器之間即時同步
- Linux VPS掛載Google Drive與Dropbox-實作VPS主機資料同步備份
一、NFS遠端掛載
示範環境,服務端A:172.104.184.98,客戶端B:107.161.18.176,如果你沒有VPS,可以看看我自己用過的VPS主機清單:VPS主機排行榜單。
相關的命令操作如下:
#在两台VPS上安装执行安装
sudo apt-get install -y nfs-kernel-server
#在A上创建文件夹
mkdir -p /media/wzfou/asus
#在A上编辑并添加授权B读写
vim /etc/exports
/media/wzfou/asus 107.161.18.176(rw,no_root_squash,async)
#在A上重启
sudo systemctl restart nfs-server.service
#在B上创建文件夹
sudo mkdir -p /home/wzfou/share
#在B上将刚刚创建的文件夹挂载到A上共享文件夹
sudo mount -t nfs 172.104.184.98:/media/wzfou/asus /home/wzfou/share
如果沒有任何提示,就表示掛載成功了。
現在A和B上共享檔案就已經實現掛載並即時同步了,往共享資料夾上傳或刪除檔案就可以看到雙向同步了。
二、GlusterFS共享存儲
2.1 GlusterFS Repository
Debian:
sudo apt-get install -y lsb-release sudo apt-get install -y apt-transport-https
Add the public key for GlusterFS repository.
wget -O - http://download.gluster.org/pub/gluster/glusterfs/LATEST/rsa.pub | sudo apt-key add - echo deb https://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/$(lsb_release -sc)/apt $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/gluster.list
Ubuntu 16.04 / 14.04:
sudo apt-get install -y software-properties-common sudo add-apt-repository ppa:gluster/glusterfs-3.8
2.2 安裝 GlusterFS
更新 repository cache.
sudo apt-get update
安裝 GlusterFS package.
sudo apt-get install -y glusterfs-server
啟動glusterfs-server service .
sudo service glusterfs-server start
確認 glusterfs service 是否執行.
sudo service glusterfs-server status
以下指令在服務端執行,新增客戶端節點(107.161.18.176).
raj@gluster1:~$ sudo gluster peer probe 107.161.18.176 peer probe: success.
確認狀態.
sudo gluster peer status
列出節點.
sudo gluster pool list
配置 Firewall。停用防火牆或將客戶端的IP新增至允許範圍內.
sudo iptables -I INPUT -p all -s <ip-address> -j ACCEPT
安裝成功如下:
2.3 建立共享儲存卷
現在我們就需要建立好了共用儲存卷,首先是在服務端上進行以下操作:
#创建文件夹
sudo mkdir -p /data/gluster/gvol0
#创建共享卷volume,并分别挂载服务端(139.162.175.85)和客户端(107.161.18.176)
sudo gluster volume create gvol0 replica 2 139.162.175.85:/data/gluster/gvol0 107.161.18.176:/data/gluster/gvol0 force
#启用卷
sudo gluster volume start gvol0
#查看卷
sudo gluster volume info gvol0
現在到客戶端(107.161.18.176)掛載服務端(139.162.175.85),指令如下:
#安装客户端
apt-get install -y glusterfs-client
#创建文件夹
mkdir -p /mnt/glusterfs
#挂载服务端(139.162.175.85)
mount -t glusterfs 139.162.175.85:/gvol0 /mnt/glusterfs
#开机自动挂载
vim /etc/fstab
139.162.175.85:/gvol0 /mnt/glusterfs glusterfs defaults,_netdev 0 0
執行指令:df -hP /mnt/glusterfs
,你就可以看到掛載成功了。
使用df指令也能看出來。
現在你就可以實現不同的VPS主機共享儲存了,新增或是修改檔案都可以看到同步。
三、samba實作Linux與Windows共享
上面說到了兩種共享方法適用於Linux之間,那麼Windows與Linux如何分享呢?目前比較流行的方式就是透過一個跨平台網路檔案共享協定:SMB/CIFS。 Windows原生的支援SMB/CIFS,Linux也透過開源的軟體Samba實作了SMB/CIFS協定。
3.1 安裝samba
sudo apt-get install samba
3.2 建立共享目錄
// 创建的目录即之后能够在Windows主机上直接访问的目录。
// 例如:在用户wzfou的主目录下新建share文件夹为共享目录
mkdir /home/wzfou/smbshare
// 由于Windows下的文件夹需可读可写可执行,需更改权限为777
sudo chmod 777 /home/wzfou/smbshare
3.3 修改samba設定檔
// 修改 /etc/samba/smb.conf
sudo vim /etc/samba/smb.conf
// 在smb.conf文件最后加上以下内容
[share]
path = /home/wzfou/smbshare
public = yes
writable = yes
valid users = wzfou
create mask = 0644
force create mode = 0644
directory mask = 0755
force directory mode = 0755
available = yes
關於smb.conf說明如下:
(1) [share]表示共享資料夾的別名,之後將直接使用這個別名。
(2) force create mode
與force directory mode
的設定是因為Windows下與Linux下檔案和資料夾的預設權限不同造成的,Windows下新建的檔案是可執行的,必須強制設定其檔案權限。
(3) valid users 設定為你目前的Linux使用者名,例如我的是wzfou,因為第一次開啟共用資料夾時,需要驗證權限。
3.4 設定登入密碼
// 新建/etc/samba/smbpasswd文件
sudo touch /etc/samba/smbpasswd
// 根据3.3设置的valid users,设置用户密码
// wzfou 替换为你在3.3中设置的用户名
sudo smbpasswd -a wzfou
//输入两次密码后,会提示 Added user wzfou. 表示设置成功
// 若用户名非当前登录系统的用户名,可能会提示Failed
3.5 啟動samba伺服器
sudo /etc/init.d/samba restart
3.6 測試是否共享成功
sudo apt-get install smbclient
smbclient -L //xx.xx.xx.xx/share
//还记得吗?share为3.3中设置的共享文件夹的别名
//如果共享成功,将要求输入之前设置的密码
3.7 在windows和Linux上使用samba
Windows 資源管理器->映射網路磁碟機。輸入格式是: ip位址設定的名稱,然後輸入帳號密碼就連線成功。
如果是Windows 7可能出現無法連接Samba的情況,你可以採取以下方法解決:
1.修改本機安全性原則:執行secpol.msc開啟「本機安全性原則」窗體,依序點開啟「本機原則」-」「安全選項”,修改「網路安全: LAN 管理器驗證等級」的值為“發送LM 和NTLM – 如果已協商,則使用NTLMv2 會話安全性”,一路確定即可。
2.修改登錄:修改HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa下的LmCompatibilityLevel的值為1。
Linux的話,在Thunar中透過 smb://<samba-server-IP-address>/share
這個位址來存取。
四、總結
Linux共享資料夾方法中,NFS遠端掛載方法是最方便的,特別適合在不同的VPS主機伺服器之間遷移網站數據,一旦遠端掛載成功了我們就可以像本地複製數據一樣方便了,這個比三個指令工具Rsync,SCP,Tar-快速解決VPS遠端網站搬家與資料同步還要方便。
GlusterFS建立共享磁碟區的方法特別適合叢集伺服器,GlusterFS叢集檔案系統也可以套用到企業級的Docker分散式儲存。 samba則實現了Linux與Windows之間的文件共享,之前我們分享了樹莓派Raspberry Pi安裝NextCloud教程-自建家庭私有雲局域網共享,實際上我們也可以samba實現樹莓派與其它設備共享。