Linux共享文件夹目录三种方法-NFS远程挂载,GlusterFS共享存储和samba共享目录

因为喜欢寻找便宜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共享服务器还可以用于文件协作、服务器镜像等,总之可扩展性非常强。

Linux共享文件夹目录三种方法-NFS远程挂载,GlusterFS共享存储和samba共享服务器

本文就来简单地分享一下NFS远程挂载、GlusterFS共享存储和samba共享服务器操作方法,更多的关于云存储站长工具,还可以了解:

  1. Nextcloud个人云存储绝佳选择:一键自动安装方法和云盘使用体验
  2. Lsyncd搭建同步镜像-用Lsyncd实现本地和远程服务器之间实时同步
  3. 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 modeforce 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实现树莓派与其它设备共享。

发表评论