前言
在Linux或Windows乃至其他的系统,我们经常会需要进行磁盘的挂载。通常从挂载的方式的上分为本地挂载和远程挂载。Linux的本地挂载就不介绍了,这篇文章介绍的是远程挂载网络磁盘。

远程挂载网络磁盘
实际上,这个操作与使用nfs共享一个文件的方法是相同的。思路是服务端将一块磁盘空间本地挂载到一个目录,然后通过网络使用nfs将这个目录进行共享,客户端最后将服务端共享的目录挂载到自己本地的一个目录,这样就使客户端拥有了一块网络磁盘。

优点是:服务端的同一块磁盘可以挂载到不同的客户端,实现文件的共享;可以扩充客户端的存储空间。
缺点是:依赖网络,当网络联通失败,客户端挂载的网络磁盘会无法使用。

做网络挂载,服务端与客户端网络要联通,最好是在同一局域网内,还要注意防火墙的设置。

NFS简介
Sun公司于1984年发布。

NFS 是一种可分散式的网络文件系统。

可以通过网络使不同的机器、不同的操作系统,能够分享资料,使客户端能通过网络访问并分享文件到位于服务端的磁盘中。

NFS在文件传送或信息传送过程中依赖于RPC协议。RPC负责负责信息的传输。

服务端操作
【1】安装NFS程序

yum -y install nfs*

rpcbind,在centos6以前自带的yum源中为portmap。
使用yum安装nfs时会下载依赖,因此只要下载nfs即可,无需再下载rpcbind.

【2】查看是否安装了nfs与rpcbind

rpm -qa |grep nfs
rpm -qa |grep rpcbind

【3】创建共享的目录并共享

如要共享的目录已存在请跳过创建

<1>mkdir /mnt/nfs01
<2>vim /etc/exports
 /mnt/nfs01 10.10.10.0/24 (rw,no_root_squash,no_all_squash,sync) 配置
 /mnt/nfs01      10.10.10.0/24    (rw,no_root_squash,no_all_squash,sync)
要共享的目录     要分享给的客户端   客户端对此共享目录的权限
 ----------
 客户端指定
 192.168.1.125           指定特定的的IP可以共享nfs目录
*                       指定所有网段及ip都可以共享nfs目录
192.168.1.0/24          指定子网中的所有主机都可以共享nfs目录
2018fs.wxyonghe.com     指定域名的主机可以共享nfs目录
 ----------
 权限
 rw                      可读可写     
ro                      只读(还与文件系统的rwx有关)
sync                   数据同步写入到内存与硬盘中
async                   数据先暂存于内存当中,不会直接写入硬盘
wdelay                  当有写操作,就会检查是否有相关的写操作,并在一起执行(默认设置)
no_wdelay               当有写操作就立即执行,通常要与sync配合使用
root_squash             当客户端登陆NFS的身份为root用户时,将客户端的root用户及所属组都映射为匿名用户或用户组(默认设置) 
no_root_squash         使客户端可以使用root身份及权限来操作共享的目录
all_squash              无论客户端登陆NFS的身份为何,都将映射为匿名用户
no_all_squash           无论客户端登陆NFS的身份为何,都将映射为root用户(默认设置)
anonuid                 将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户
anongid                 将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户
secure                  使客户端只能从小于1024的tcp/ip端口连接服务端(默认设置)
insecure                允许客户端从大于1024的tcp/ip端口连接服务端
subtree                 当共享的目录是一个子目录,服务端会检查其父目录的权限(默认设置)
no_subtree              当共享的目录是一个子目录,服务端不检查其父目录的权限
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 【4】启动nfs,rpcbind,并设为开机自启(centos7)
 systemctl start nfs
 systemctl start rpcbind
 systemctl enable nfs
 systemclt enable rpcbind(centos6)
 service nfs start
 service rpcbind start【5】查看是否共享成功
showmount -e localhost
可看到共享的目录及客户端,即为成功
客户端操作
 【1】安装NFS程序yum -y install nfs*
【2】启动nfs
(centos7)
 systemctl start nfs
 systemctl start rpcbind
 systemctl enable nfs
 systemctl enable rpcbind(centos6)
 service nfs start
 service rpcbind start
 chkconfig nfs on
 chkconfig rpcbind on【3】创建挂载目录
mkdir /data/nfsone
【4】查看是否共享成功
showmount -e nfs服务端IP
showmount -e 10.10.20.212
【5】网络挂载
mount -t nfs -o nolock 服务端IP:共享目录绝对路径 本地挂载目录
 mount -t nfs -o nolock 10.10.20.212:/mnt/nfs01 /data/nfsonecentos7的nfs默认使用的是nfs4,所以mount -t 无需指定nfs4也可以
【6】查看是否成功
df -Th
【7】卸载网络磁盘
与卸载本地挂载相同
umount /data/nfsone
 或
 umount 10.10.20.212:/mnt/nfs01 CentOS 7设置Samba共享目录
 1. 安装Samba服务
 yum -y install samba
 # 查看yum源中Samba版本
 yum list | grep samba
 # 查看samba的安装情况
 rpm -qa | grep samba
 Samba服务器安装完之后, 会生成配置文件目录/etc/samba, /etc/samba/smb.conf是samba的核心配置文件.2. 启动Samba服务
 Samba服务安装完成之后有两种方法启动:service smb start/stop/restart/status
 # 或者
 systemctl start/stop/restart/status smb.service# 设置smb服务开机启动
 systemctl enable smb.service
 3. 开放Samba服务使用到的端口号Samba服务会用到如下的一些端口号:
137(UDP): NetBIOS名字服务
 138(UDP): NetBIOS数据报服务
 139(TCP): 文件和打印共享
 389(TCP): 用于LDAP
 445(TCP): NetBIOS服务在windows 2000及以后使用此端口
 901(TCP): 用于SWAT, 网页管理Samba
 如果不想关闭防火墙的话, 就要在CentOS中放开Samba使用到的TCP端口号复制代码
 firewall-cmd --zone=public -add-port=139/tcp --permanent
 firewall-cmd --zone=public -add-port=389/tcp --permanent
 firewall-cmd --zone=public -add-port=445/tcp --permanent
 firewall-cmd --zone=public -add-port=901/tcp --permanentfirewall-cmd --reload
# 查看已经放开的端口号
 firewall-cmd --list-all
 复制代码
 4. 配置Samba服务配置匿名访问, 任何人都可以访问的共享目录
 创建共享目录
 mkdir /opt/shares# 因为需要设置匿名用户可以上传下载文件, 所以需要给shares目录授予nobody权限
 chown -R nobody:nobody /opt/shares
 修改/etc/samba/smb.conf文件
 cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
 vi /etc/samba/smb.conf
 修改配置如下:复制代码
 # See smb.conf.example for a more detailed config file or
 # read the smb.conf manpage.
 # Run 'testparm' to verify the config is correct after
 # you modified it.[global]
         workgroup = SAMBA
         security = user
         map to guest = Bad User
         log file = /var/log/samba/log.%m [public]
         comment = Public Stuff
         path = /opt/shares
         public = yes
         read only = No
 复制代码
 其中 path就是上边设置的共享目录, read only 表示是否有写权限修改完配置文件之后重启samba服务
 systemctl restart smb.service
 测试smb.conf配置是否正确
 # 使用testparm命令
 testparm
 至此就配置完成, 可以从Windows下访问samba的共享目录.
 配置指定用户可以访问的共享目录
 设置共享目录, 只允许指定用户组的用户访问添加工作组cnki和用户share
 复制代码
 groupadd cnki
 # useradd -g 组名 用户名
 useradd -g cnki share
 # 设置用户share的密码
 passwd share#删除用户
 userdel -r 用户名
 复制代码
 把要访问的账户添加到samba的账户中
 光添加系统账户还不够, 需要把已经存在的系统账户添加到samba中才可以访问共享目录# smbpasswd 参数: -a: 添加 -x: 删除 -d: 禁用 -e: 启用
 smbpasswd -a share
 创建共享目录
 mkdir /opt/shares1# chown -R 用户名:组名 目录
 chown -R share:cnki /opt/shares1
 设置samba服务
 修改配置文件/etc/samba/smb.conf如下复制代码
 # See smb.conf.example for a more detailed config file or
 # read the smb.conf manpage.
 # Run 'testparm' to verify the config is correct after
 # you modified it.[global]
         workgroup = SAMBA
         security = user
         map to guest = Bad User
         log file = /var/log/samba/log.%m[shares]
         comment = CNKI
         path = /opt/shares1
         # 表示用户组
         valid users = @cnki
         read only = No
 复制代码
 重启smb服务
 systemctl restart smb.service
 # 检查smb.conf文件是否配置正确
 testparm


至此配置完成, 可以在Windows平台下通过用户名share/share来访问共享目录了.