Linux 中网络文件系统(samba 、nfs 和 iscsi)

1. samba

1.1 samba 服务简介

  1. smb = Server Message Block(服务器消息块);
  2. cifs = Common Internet File System(通用因特网文件系统);
  3. Windows系统共享文件时用到的协议是smb;
    Linux使用的协议是cifs;
  4. smb服务主要的作用是是使客户机可以通过该服务访问服务器上的文件共享系统;
  5. cifs 客户端可以访问服务器上的文件并要求服务器提供服务,cifs是 smb 的一种特殊实现,所以 smb 和 cifs 的客户端之间可以相互访问,但是 ntf 客户端是无法直接和 smb 服务器交互的;
  6. nfs用于linux系统和客户端之间的连接,而windows和linux客户端混合使用时,就应该用samba;
  7. apache和ftp的文件共享都需要依赖于客户端使用工具去访问,不能在客户端直接挂载。要实现挂载就需要把整个文件系统共享,samba 和 nfs 可以实现文件系统共享,而 iscsi 可以实现整个设备的共享。这就是企业中的存储分离,举个简单的例子,就像是我们在某台主机上注册了账号等信息,若这台主机突然宕机,我们依旧可以实现在另一台主机上使用之前注册的账号登陆。

1.2 samba 基本信息

基本信息含义
smb.service服务启动脚本
/etc/samba主配置目录
/etc/smb.conf主配置文件
samba_share_t安全上下文
139、445端口
samba、samba-common安装包

1.3 samba 的安装与启用

做本节实验时,selinux 是开启的强制状态。

  1. samba 服务端、客户端以及工具包安装
[root@kkk ~]# getenforce
Enforcing
[root@kkk ~]# dnf install samba.x86_64 samba-common.noarch samba-client.x86_64 -y
##安装
  1. 服务的开启以及将 samba 服务添加到火墙策略中
[root@kkk ~]# systemctl enable --now smb.service 
Created symlink /etc/systemd/system/multi-user.target.wants/smb.service → /usr/lib/systemd/system/smb.service.
[root@kkk ~]# firewall-cmd --permanent --add-service=samba
success
[root@kkk ~]# firewall-cmd --reload 
success
[root@kkk ~]# firewall-cmd --list-all 
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp1s0
  sources: 
  services: cockpit dhcpv6-client samba ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

1.4 samba用户的建立

samba 用户必须是本机用户;

命令含义
smbpasswd -a zxk添加用户
pdbedit -L查看用户列表
pdbedit -x westos删除用户
  1. 创建
[root@kkk ~]# id zxk
uid=1000(zxk) gid=1000(zxk) groups=1000(zxk)
[root@kkk ~]# id westos
uid=1001(westos) gid=1001(westos) groups=1001(westos)
[root@kkk ~]# id kkk
id: ‘kkk’: no such user
[root@kkk ~]# smbpasswd -a kkk		##不是本地用户创建不了
New SMB password:
Retype new SMB password:
Failed to add entry for user kkk.
[root@kkk ~]# smbpasswd -a zxk
New SMB password:
Retype new SMB password:
Added user zxk.
[root@kkk ~]# smbpasswd -a westos
New SMB password:
Retype new SMB password:
Added user westos.
  1. 列出
[root@kkk ~]# pdbedit -L
zxk:1000:zxk
westos:1001:
  1. 删除
[root@kkk ~]# pdbedit -L
zxk:1000:zxk
westos:1001:
[root@kkk ~]# pdbedit -x westos
[root@kkk ~]# pdbedit -L
zxk:1000:zxk

1.5 samba 用户访问家目录

先用命令来列出:

在这里插入图片描述
从上图中可以看出,当不添加用户时,此时没有可用的信息,当用 zxk 用户访问时,有可用的信息;

此时来访问用户的家目录,ip 后面的目录,就是该smb用户的家目录,可以直接登陆查看;

[root@kkk ~]# smbclient  //172.25.254.150/zxk -U zxk
Enter SAMBA\zxk's password: 
Try "help" to get a list of possible commands.
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \*
smb: \> 

进入后可以看到在列出文件时,受到了权限限制,无法访问加目录,这是因为 selinux 默认不允许samba访问自己的家目录,需要设定为开启;

在这里插入图片描述

1.6 samba 服务共享目录

默认情况下用户的家目录是共享出去的,此时如果需要共享自己新建的目录,就需要做如下设定;

  1. 共享自己创建的目录
    (1)建立新的共享目录,并在文件中写入一定的内容;
[root@kkk ~]# mkdir /westos
[root@kkk ~]# cd /westos/
[root@kkk westos]# touch westosfile{1..5}
[root@kkk westos]# ls
westosfile1  westosfile2  westosfile3  westosfile4  westosfile5

(2)此时 selinux 处于开启状态时,若想共享自己建立的目录,必须修改安全上下文支持 smb 服务,修改完成后刷新/westos目录:

[root@kkk westos]# semanage fcontext -a -t samba_share_t '/westos(/.*)?'
[root@kkk westos]# restorecon -RvvF /westos
Relabeled /westos from unconfined_u:object_r:default_t:s0 to system_u:object_r:samba_share_t:s0
Relabeled /westos/westosfile1 from unconfined_u:object_r:default_t:s0 to system_u:object_r:samba_share_t:s0
Relabeled /westos/westosfile2 from unconfined_u:object_r:default_t:s0 to system_u:object_r:samba_share_t:s0
Relabeled /westos/westosfile3 from unconfined_u:object_r:default_t:s0 to system_u:object_r:samba_share_t:s0
Relabeled /westos/westosfile4 from unconfined_u:object_r:default_t:s0 to system_u:object_r:samba_share_t:s0
Relabeled /westos/westosfile5 from unconfined_u:object_r:default_t:s0 to system_u:object_r:samba_share_t:s0

(3)修改完安全上下文后,进入主配置目录,将smb.conf主配置文件复制成smb.conf.bak,再将将模板复制成 smb.conf 主配置文件,防止想恢复时不好恢复:

[root@kkk westos]# cd /etc/samba/
[root@kkk samba]# ls
lmhosts  smb.conf  smb.conf.example
[root@kkk samba]# mv smb.conf smb.conf.back
[root@kkk samba]# ls
lmhosts  smb.conf.back  smb.conf.example
[root@kkk samba]# mv smb.conf.example samba.conf
[root@kkk samba]# ls
lmhosts  smb.conf  smb.conf.back

(4)编辑配置文件
其中 ’[ ]’ 里的内容是共享时可以被客户端看到的名称;comment 是对该目录的说明;path是共享目录的路径:

[root@kkk samba]# vim samba.conf
315         [WESTOS]
316         comment = local dir westos
317         path = /westos

在这里插入图片描述
在这里插入图片描述

(5)重启服务
使用之前添加的 smb 用户查看服务器共享的目录;然后再进入该共享目录查看内容:

[root@kkk samba]# systemctl restart smb.service 
[root@kkk samba]# smbclient  -L //172.25.254.150  -U zxk

在这里插入图片描述

  1. 共享系统中存在的目录

编辑配置文件,添加一个系统级的共享目录:

[root@kkk samba]# vim smb.conf
319         [MNT]
320         comment = /mnt dir
321         path = /mnt
[root@kkk samba]# ls /mnt/
[root@kkk samba]# touch /mnt/zxkll{1..4}
[root@kkk samba]# ls /mnt/
zxkll1  zxkll2  zxkll3  zxkll4
[root@kkk samba]# ls -Z /mnt/
unconfined_u:object_r:mnt_t:s0 zxkll1  unconfined_u:object_r:mnt_t:s0 zxkll3
unconfined_u:object_r:mnt_t:s0 zxkll2  unconfined_u:object_r:mnt_t:s0 zxkll4

在这里插入图片描述
访问测试:
(1)重启服务后,查看共享目录:

[root@kkk samba]# systemctl restart smb.service 
[root@kkk samba]# smbclient  -L //172.25.254.150  -U zxk
[root@kkk samba]# smbclient   //172.25.254.150/MNT  -U zxk

可以看到如图所示,可以看到 MNT 共享目录名,但是进入后无显示内容;
这也是因为 selinux 造成的原因,但是由于是系统目录,不能修改目录安全上下文,会造成一些系统问题;

在这里插入图片描述
解决方法是打开 selinux 的 samba_export_all_ro 功能,表示smb开启对所有文件读的功能,不管是否符合安全上下文,开启后 samba 服务将不再受安全上下文的影响;

[root@kkk samba]# getsebool -a | grep samba
[root@kkk samba]# setsebool -P samba_export_all_ro on

在这里插入图片描述
此时再次查看 /MNT 内容时,便可以看到:

在这里插入图片描述

1.7 samba 的访问控制

在生产环境中,默认情况下 samba 服务允许任何用户访问,这是不合理的;通过对对不同 ip 进行访问控制,用设置用户的黑白名单的方式来进行限制;
此处用用另一台 samba 客户端进行测试,客户端需要安装 samba-client 软件。

  1. 全局访问控制
    (1)可以使用不同 ip 的主机去访问smb服务器共享出来的目录,在没有设置访问控制前默认任何主机都是可以访问到的:
[root@localhost ~]# dnf install samba-client -y
[root@localhost ~]# smbclient -L //172.25.254.150 
Enter SAMBA\root's password: 
Anonymous login successful

	Sharename       Type      Comment
	---------       ----      -------
	WESTOS          Disk      local dir westos
	MNT             Disk      /mnt dir
	IPC$            IPC       IPC Service (Samba Server Version 4.11.2)
SMB1 disabled -- no workgroup available
[root@localhost ~]# smbclient  //172.25.254.150/MNT -U zxk
Enter SAMBA\zxk's password: 
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Tue May  4 15:57:51 2021
  ..                                  D        0  Tue May  4 15:04:19 2021
  zxkll1                              N        0  Tue May  4 15:57:51 2021
  zxkll2                              N        0  Tue May  4 15:57:51 2021
  zxkll3                              N        0  Tue May  4 15:57:51 2021
  zxkll4                              N        0  Tue May  4 15:57:51 2021

		19936256 blocks of size 1024. 15425480 blocks available
smb: \> 

(2)编辑主配置文件
在全局配置部分,写入如图所示的内容,表示所有 smb 共享只允许在该主机上访问,然后重启服务;若有多个想要设置的用户,就输入空格,将 ip 写在后面;

白名单

[root@kkk samba]# pwd
/etc/samba
[root@kkk samba]# vim smb.conf		##全局配置,白名单

 91         hosts allow = 172.25.254.150

此时再次访问时,只有该主机可以访问,其他的不能访问;

[root@kkk samba]# smbclient   //172.25.254.150/MNT  -U zxk
Enter MYGROUP\zxk's password: 
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Tue May  4 15:57:51 2021
  ..                                  D        0  Tue May  4 15:04:19 2021
  zxkll1                              N        0  Tue May  4 15:57:51 2021
  zxkll2                              N        0  Tue May  4 15:57:51 2021
  zxkll3                              N        0  Tue May  4 15:57:51 2021
  zxkll4                              N        0  Tue May  4 15:57:51 2021

		19936256 blocks of size 1024. 15425464 blocks available
		
[root@localhost ~]# smbclient  //172.25.254.150/MNT -U zxk	
Enter SAMBA\zxk's password: 
tree connect failed: NT_STATUS_ACCESS_DENIED

黑名单

[root@kkk samba]# pwd
/etc/samba
[root@kkk samba]# vim smb.conf		##全局配置,白名单
 91         hosts deny = 172.25.254.150

在这里插入图片描述

[root@kkk samba]# smbclient   //172.25.254.150/MNT  -U zxk
Enter MYGROUP\zxk's password: 
tree connect failed: NT_STATUS_ACCESS_DENIED

[root@localhost ~]# smbclient  //172.25.254.150/MNT -U zxk
Enter SAMBA\zxk's password: 
tree connect failed: NT_STATUS_ACCESS_DENIED
[root@localhost ~]# smbclient  //172.25.254.150/MNT -U zxk
Enter SAMBA\zxk's password: 
Try "help" to get a list of possible commands.
smb: \> ls
 .                                   D        0  Tue May  4 15:57:51 2021
 ..                                  D        0  Tue May  4 15:04:19 2021
 zxkll1                              N        0  Tue May  4 15:57:51 2021
 zxkll2                              N        0  Tue May  4 15:57:51 2021
 zxkll3                              N        0  Tue May  4 15:57:51 2021
 zxkll4                              N        0  Tue May  4 15:57:51 2021

   	19936256 blocks of size 1024. 15425396 blocks available
smb: \> 

此时再次访问时,其他主机都可以访问,只有写入的 ip 用户不能访问;

  1. 局部访问控制
    以上的控制都是针对全局的共享限制;当将访问权限写到单独共享处时,则只对此目录共享生效,将之前全局部分写入的内容注释掉;
[root@kkk samba]# vim smb.conf
316         [WESTOS]
317         comment = local dir westos
318         path = /westos
319         hosts allow = 172.25.254.150
320         [MNT]
321         comment = /mnt dir
322         path = /mnt

在这里插入图片描述表示只对 westos 目录做了限制,只允许 150 号主机访问 westos,其他主机都不可以;

在这里插入图片描述
在这里插入图片描述
除了以上的权限设定之外还有对于用户的限定 valid users = zxk 以及针对组的限定 valid users = +zxk

1.8 samba 的常用配置参数

配置参数含义
writable = yes可写(建立、删除)
write list = westos指定用户可写
write list = +westos/@westos指定组可写
valid users = lee指定访问用户
valid users = +lee/@lee前面加+/@符号,表示指定访问组
browseable = yes/no是否隐藏共享,不需要重启服务
map to guest = bad user允许匿名用户访问,写到全局设定中
guest ok = yes允许匿名用户访问,写在某个设定的目录中
admin users = westos指定此共享的超级用户身份
  1. 基于用户的权限
    在系统级共享目录下写入 valid users = zxk,表示基于用户的共享,也就是只有该用户可以访问该共享,其他用户不能访问:
[root@kkk samba]# vim smb.conf
316         [WESTOS]
317         comment = local dir westos
318         path = /westos
319 ;       hosts allow = 172.25.254.150    
320         valid users = zxk
321         [MNT]
322         comment = /mnt dir
323         path = /mnt

重启服务,使用 zxk 用户访问 WESTOS 目录,可以访问,使用其他 smb 用户无法访问该目录的;

[root@localhost ~]# smbclient  //172.25.254.150/WESTOS -U zxk
Enter SAMBA\zxk's password: 
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Tue May  4 15:04:38 2021
  ..                                  D        0  Tue May  4 15:04:19 2021
  westosfile1                         N        0  Tue May  4 15:04:38 2021
  westosfile2                         N        0  Tue May  4 15:04:38 2021
  westosfile3                         N        0  Tue May  4 15:04:38 2021
  westosfile4                         N        0  Tue May  4 15:04:38 2021
  westosfile5                         N        0  Tue May  4 15:04:38 2021

		19936256 blocks of size 1024. 15425464 blocks available
smb: \> quit
[root@localhost ~]# smbclient  //172.25.254.150/WESTOS -U westos
Enter SAMBA\westos's password: 
tree connect failed: NT_STATUS_ACCESS_DENIED
  1. 基于用户组的权限
    编辑主配置文件,在系统级共享目录下写入valid users = +zxk 或者valid users = @zxk,都表示只有该组的用户可以访问该共享,其他组用户不能访问。
[root@kkk samba]# vim smb.conf
316         [WESTOS]
317         comment = local dir westos
318         path = /westos
319 ;       hosts allow = 172.25.254.150    
320         valid users = +zxk
321         [MNT]
322         comment = /mnt dir
323         path = /mnt

如图,当 zxk 组不属于 westos用户时,此时没有访问权限;当为其增加附加组身份之后,此时便可以成功访问;

在这里插入图片描述

修改权限,为了说明 samba 服务的问题,排除本地文件系统的干扰。

[root@kkk ~]# ls -ld /mnt/
drwxr-xr-x. 2 root root 62 May  4 15:57 /mnt/
[root@kkk ~]# ls -ld /westos/
drwxr-xr-x. 2 root root 101 May  4 15:04 /westos/
[root@kkk ~]# chmod 777 /westos/
[root@kkk ~]# ls -ld /westos/
drwxrwxrwx. 2 root root 101 May  4 15:04 /westos/
  1. 写的权限

虽然文件系统的权限已经设定为了 777,但此时还是不能写;

在这里插入图片描述
编辑主配置文件,设定“writable = yes ”所有用户对/westos目录可写;
:可写指的是smb用户可写,目录本身是否可写要看本地文件系统的权限。

[root@kkk samba]# vim smb.conf
        [WESTOS]
        comment = local dir westos
        path = /westos
;       hosts allow = 172.25.254.150    
;       valid users = +zxk
        writeable = yes
        [MNT]
        comment = /mnt dir
        path = /mnt

修改之后,此时在重新挂载之后,便可写;如图所示:

在这里插入图片描述

  1. 指定用户写的权限
    编辑主配置文件,设定“write list = westos”表示 westos 目录对指定用户可写,其他用户不可以;
[root@kkk samba]# vim smb.conf
        [WESTOS]
        comment = local dir westos
        path = /westos
;       hosts allow = 172.25.254.150    
;       valid users = +zxk
;       writeable = yes
        write list = westos
        [MNT]
        comment = /mnt dir
        path = /mnt

如图所示,当用 zxk 用户写入时不可以,只有 westos 用户可写;

在这里插入图片描述
除了指定用户写的权限外,和上面类似还有指定用户组写的权限。

  1. 隐藏共享资源
    在 samba 服务中,默认是不会隐藏共享资源的;编辑主配置文件,设定"browseable = no"表示隐藏共享资源;

        [WESTOS]
        comment = local dir westos
        path = /westos
;       hosts allow = 172.25.254.150    
;       valid users = +zxk
;       writeable = yes
        write list = westos
        [MNT]
        comment = /mnt dir
        path = /mnt
        browseable = no

如图所示,再没有更改文件之前,是可以访问所有的;当加入内容之后,就隐藏了 /MNT 目录;

在这里插入图片描述

  1. 允许匿名用户访问
    编辑主配置文件,在[global]全局里面输入 “map to guest = bad user”,表示所有匿名身份指向为 guest,不能在非全局处写该参数,否则会出现问题无法挂载。在 WESTOS 共享资源处输入 “guest ok = yes”,表示允许匿名用户访问,当这两个参数设置后,才表示匿名用户允许访问;

在这里插入图片描述

在这里插入图片描述

此时便可用匿名用户进行挂载;

在这里插入图片描述

1.9 samba 的多用户挂载

在客户端如果用以上的挂载方式,没有j经过 samba 服务认证的其他用户也可以访问已认证用户挂载的 samba 中的内容,而且smb用户的用户名和密码也直接显示在外面,这种方式不安全;
所以就需要通过设置特殊参数,使用户名密码等信息不会被直接看到,并且其他用户在没有 samba 认证时不能看已认证用户挂载的samba 内容。

在这里插入图片描述

恢复前面的配置,此处来观察效果;

在这里插入图片描述

  1. 挂载安全设定
    (1)在客户端安装 samba 认证的安全插件
[root@localhost ~]# dnf install cifs-utils -y

用命令 man mount-cifs查看帮助
(2)编辑文件 /root/smb_auth,该文件名可自定义,将用户名和密码存入;

如图所示,将用户名和密码写入文件,给文件修改权限,只有文件的所有人有权限,在挂载的时候便可以用参数来指定文件来挂载,而不用将用户名和密码显示在 history 中;

在这里插入图片描述

(3)但是这种方法还是没有解决挂载用户只能浏览自己挂载的问题,那么接下来就要设定多用户挂载

[root@localhost ~]# umount /media 
[root@localhost ~]# mount //172.25.254.150/WESTOS /media  -o credentials=/root/smb_auth,multiuser
[root@localhost ~]# df
[root@localhost ~]# su - zxk
[zxk@localhost ~]$ cd /media 
[zxk@localhost media]$ ls
[zxk@localhost media]$ exit
logout
[root@localhost ~]# cd /media/
[root@localhost media]# ls
westosfile1  westosfile2  westosfile3  westosfile4  westosfile5  zxk111  zxk222

用参数 multiuser 进行多用户挂载之后,此时只有挂载的用户可以访问信息,其他用户访问不到信息;

在这里插入图片描述
以上设定虽然其他用户访问不到信息,其他用户有账号时也无法挂载,所以应该在加一个参数,让其他用户也可以认证;

[root@localhost ~]# mount //172.25.254.150/WESTOS /media  -o credentials=/root/smb_auth,multiuser,sec=ntlmssp
[root@localhost ~]# su - zxk
[zxk@localhost media]$ cifscreds add -u westos 172.25.254.150

在这里插入图片描述

当认证错误时,需要删除时用 cifscreds clear -u westos 172.25.254.150

多用户认证结束之后,当有写的权限时,用那个用户新建的文件,在服务端查看时就属于那个用户。

2 NFS

Net File System

2.1 nfs 基本信息

基本信息含义
nfs-utils安装包
nfs-server服务脚本
/etc/exports共享配置文件

2.2 nfs 的启用

  1. 在服务端安装nfs软件
    在系统中默认是已经安装过的;

在这里插入图片描述

  1. 开启
[root@kkk ~]# systemctl enable --now nfs-server.service 
[root@kkk ~]# showmount -e 172.25.254.150

在这里插入图片描述

  1. 在火墙策略中添加 rpc-bind、mountd、nfs服务。
    rpc-bind 是分发端口,mountd 来挂载,nfs 来共享;
[root@localhost ~]$ showmount -e 172.25.254.150
clnt_create: RPC: Unable to receive

[root@kkk ~]# firewall-cmd --permanent --add-service=rpc-bind 
success
[root@kkk ~]# firewall-cmd --reload 
success

[root@localhost ~]$ showmount -e 172.25.254.150
rpc mount export: RPC: Unable to receive; errno = No route to host

[root@kkk ~]# firewall-cmd --permanent --add-service=mountd 
success
[root@kkk ~]# firewall-cmd --reload 
success

[root@localhost ~]$ showmount -e 172.25.254.150		##此时 虽然可以看到,但是不能挂载
Export list for 172.25.254.150:

[root@kkk ~]# firewall-cmd --permanent --add-service=nfs
success
[root@kkk ~]# firewall-cmd --reload 
success
  1. 编辑共享文件/etc/exports
    写入以下内容,其中 ro 表示只读挂载,* 表示将该目录共享给所有人,此处也可以指定 ip;
[root@kkk ~]# vim /etc/exports
[root@kkk ~]# cat /etc/exports
/westos	*(ro)
[root@kkk ~]# exportfs -rv		##刷新
exporting *:/westos
  1. 在客户端查看挂载
[root@localhost ~]# showmount -e 172.25.254.150
Export list for 172.25.254.150:
/westos *
[root@localhost ~]# mount  172.25.254.150:/westos /media
[root@localhost ~]# cd /media/
[root@localhost media]# ls
westosfile1  westosfile2  westosfile3  westosfile4  westosfile5

2.3 nfs 配置

参数含义
anonuid=1000,anongid=1000指定用户身份
sync更改生成后同步数据到服务器
async时时同步数据到服务器
rw读写
ro只读
no_root_squashroot用户挂载不转换身份
  1. 读写
    默认情况下 nfs 新建时用户时 nobady;

在挂载时,文件 /etc/exports中写入的时ro 只读,并不能新建;此时修改文件内容为 rw,再次新建来观察效果:

[root@kkk ~]# vim /etc/exports
[root@kkk ~]# cat /etc/exports
/westos	*(rw)
[root@kkk ~]# exportfs -rv
exporting *:/westos

在客户端效果如图:

在这里插入图片描述
此时新建文件默认是 nobody 身份;

  1. 身份不转换
    在服务端,编辑 /etc/exports文件,
[root@kkk ~]# vim /etc/exports
[root@kkk ~]# cat /etc/exports
/westos	*(rw,no_root_squash)
##表示用root用户挂载不转换身份
[root@kkk ~]# exportfs -rv
exporting *:/westos

在这里插入图片描述

  1. 指定用户身份新建文件
    在服务端,编辑/etc/exports文件;
[root@kkk ~]# vim /etc/exports
[root@kkk ~]# cat /etc/exports
/westos	*(rw,anonuid=1000)		##只更改用户身份
[root@kkk ~]# exportfs -rv
exporting *:/westos

在这里插入图片描述

[root@kkk ~]# vim /etc/exports
[root@kkk ~]# cat /etc/exports
/westos	*(rw,anonuid=1000,anongid=1000)		##更改用户和组
[root@kkk ~]# exportfs -rv
exporting *:/westos

在这里插入图片描述

  1. 还有两个另外两个常用参数,
    (1)sync,表示在客户端更改文件,等更改完保存后才同步到服务端;其缺点是遇到断电等问题,文件未同步时,造成文件内容损失;
    (2)async,表示实时更新,边写边更新,其缺点是消耗资源大。

3. autofs

在前面我们已经将其挂载,但是不使用的时候还是处于挂载的状态,这就相当于对于资源的一部分浪费;当使用的时候自动挂载,不使用的时候就卸载掉,这才是最优的设置;下面我们就需要在客户端做一些操作来实现自动挂载。

  1. 安装软件
[root@localhost ~]# dnf install autofs -y
[root@localhost ~]# ls -ld /net
ls: cannot access '/net': No such file or directory
[root@localhost ~]# systemctl enable --now autofs.service 
Created symlink /etc/systemd/system/multi-user.target.wants/autofs.service → /usr/lib/systemd/system/autofs.service.
[root@localhost ~]# ls -ld /net
drwxr-xr-x. 2 root root 0 May  5 09:27 /net
  1. 自动挂载
    当服务开启之后会新建一个目录 /net ,当进入这个目录时,便可实现自动挂载;
[root@localhost ~]# cd /net/
[root@localhost net]# ls
[root@localhost net]# cd 172.25.254.150
[root@localhost 172.25.254.150]# ls
westos
[root@localhost 172.25.254.150]# cd westos/
[root@localhost westos]# ls
1111  westosfile1  westosfile3  westosfile5  zxk333
2222  westosfile2  westosfile4  zxk11
[root@localhost westos]# df
Filesystem             1K-blocks    Used Available Use% Mounted on
devtmpfs                  391196       0    391196   0% /dev
tmpfs                     419040       0    419040   0% /dev/shm
tmpfs                     419040    6448    412592   2% /run
tmpfs                     419040       0    419040   0% /sys/fs/cgroup
/dev/vda2               19936256 4473728  15462528  23% /
/dev/vda1                 506528  218860    287668  44% /boot
tmpfs                      83808    1180     82628   2% /run/user/42
tmpfs                      83808       4     83804   1% /run/user/0
172.25.254.150:/westos  19936256 4470144  15466112  23% /net/172.25.254.150/westos

当退出目录之后,默认会等 300s 之后自动卸载,通过对配置文件的更改来缩短自动卸载的时间;

[root@localhost ~]# vim /etc/autofs.conf 
timeout = 10

[root@localhost ~]# systemctl restart autofs.service 

在这里插入图片描述

修改完配置文件之后,重启服务,来观察效果;

在这里插入图片描述

3.1 autofs+samba

在客户端编辑 /etc/auto.master 文件,写入/media /etc/auto.samba,其中 auto.nfs 文件名是自定义,表示将该文件挂载在 media 下,这叫最终挂载子策略文件;

[root@localhost ~]# vim /etc/auto.master

 14 /media  /etc/auto.samba
[root@localhost ~]# ll /etc/auto.samba
ls: cannot access '/etc/auto.samba': No such file or directory
[root@localhost ~]# vim /etc/auto.samba
[root@localhost ~]# ll /etc/auto.samba
-rw-r--r--. 1 root root 73 May  5 09:53 /etc/auto.samba

在这里插入图片描述

子策略文件内容为,表示将 172.25.254.150 下面的 WESTOS 以 zxk 的身份挂载到 /media/samba 中;编辑一个注配置文件,一个子策略文件;

在这里插入图片描述
重启服务之后,来观察效果:

在这里插入图片描述

3.2 nfs+autofs

在客户端编辑 /etc/auto.master 文件,写入/media /etc/auto.nfs,其中 auto.nfs 文件名是自定义,表示将该文件挂载在 media 下,这叫最终挂载子策略文件;

[root@localhost ~]# vim /etc/auto.master
 13 /net    -hosts
# 14 /media  /etc/auto.samba
 15 /media  /etc/auto.nfs
[root@localhost ~]# vim /etc/auto.nfs
[root@localhost ~]# cat /etc/auto.nfs
nfs		172.25.254.150:/westos

在这里插入图片描述

测试结果如图所示:

在这里插入图片描述

3.3 autofs+samba+nfs

以上一个目录都是一个目录写一个挂载点,那么一个目录写入两个挂载点就需要修改配置文件内容如下所示:

[root@localhost ~]# vim /etc/auto.master
 12 #
 13 /net    -hosts
 14 /media  /etc/automount		##子策略文件名自定义
 15 #
[root@localhost ~]# vim  /etc/automount
[root@localhost ~]# cat /etc/automount
samba	-fstype=cifs,username=zxk,password=westos	://172.25.254.150/WESTOS
nfs		172.25.254.150:/westos

测试结果入下所示:

在这里插入图片描述

4. iscsi

使用 nfssamba 都会在设备之上的软件;以软件的方式将文件系统共享出去,而 iscsi主要用于共享硬盘,直接共享设备权限。

此处用两台主机来观察效果,其中一台上有两块硬盘,准备将其中一块共享出去。

4.1 划分文件系统

在有两块硬盘的服务端,划分分区,此处只划分了一块分区,将整个存储的内容都划分进去;

[root@kkk ~]# fdisk -l		##查看设备情况
[root@kkk ~]# fdisk /dev/vdb 	##划分设备
[root@kkk ~]# udevadm settle 	##同步分区信息表

在这里插入图片描述

4.2 安装插件

  1. 服务端
[root@kkk ~]# dnf install targetcli -y
[root@kkk ~]# systemctl status target.service 
● target.service - Restore LIO kernel target configuration
   Loaded: loaded (/usr/lib/systemd/system/target.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
[root@kkk ~]# systemctl enable --now target.service 		##设定开启自启,打开服务
Created symlink /etc/systemd/system/multi-user.target.wants/target.service → /usr/lib/systemd/system/target.service.

启动服务之后,输入 targetcli 命令,即可进入交互界面,输入 ls 可以查看;

在这里插入图片描述
设定:
/backstores/block create westos_storage /dev/vdb1表示建立共享的设备,westos_storage是自定义的网络磁盘名称;
/iscsi create iqn.2021-05.org.westos:storage 表示创建一个 iqn 的链,用于时别单个iscsi目标,建立共享名称;
/iscsi/iqn.2021-05.org.westos:storage/tpg1/luns create /backstores/block/westos_storage表示关联设备 ;
/iscsi/iqn.2021-05.org.westos:storage/tpg1/acls create iqn.2021-05.org.westos:westoskey 表示设置密码;

在这里插入图片描述
设定完成之后,结果查看,除了可以看到其设定的信息之外,还有其端口信息 3260;

在这里插入图片描述
设定火墙策略添加端口号:

在这里插入图片描述

  1. 客户端使用共享

(1)安装插件

[root@localhost ~]# dnf install iscsi-initiator-utils.x86_64 -y
[root@localhost ~]# iscsiadm -m discovery -t st -p 172.25.254.150
##表示列出服务端可用的网络磁盘,此处若没有在火墙策略处允许端口,就会无法链接
172.25.254.150:3260,1 iqn.2021-05.org.westos:storage

(2)修改认证方式

[root@localhost ~]# vim /etc/iscsi/initiatorname.iscsi 
[root@localhost ~]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2021-05.org.westos:westoskey	##此为服务端设定的认证方式
[root@localhost ~]# systemctl restart iscsid
[root@localhost ~]# systemctl enable --now iscsid.service 	##设定开启自启
Created symlink /etc/systemd/system/multi-user.target.wants/iscsid.service → /usr/lib/systemd/system/iscsid.service.

(3)认证

[root@localhost ~]# iscsiadm -m discovery -t st -p 172.25.254.150
172.25.254.150:3260,1 iqn.2021-05.org.westos:storage
[root@localhost ~]# iscsiadm -m node -T iqn.2021-05.org.westos:storage -p 172.25.254.150 -l
##启用服务端的存储设备,-l表示登陆
[root@localhost ~]# fdisk -l

-m:操作模式 ,node 为结点认证;
-l 登陆;
-p 设备IP端口;
-T:目标设备名称;
-t:发现设备的类型;

在这里插入图片描述
(4)挂载
新建分区:

在这里插入图片描述

格式化分区并挂载:

在这里插入图片描述

4.3 iscsi 设备删除

客户端

卸载设备,退出,

[root@localhost ~]# umount /mnt 
[root@localhost ~]# iscsiadm -m node -T iqn.2021-05.org.westos:storage -p 172.25.254.150 -u
[root@localhost ~]# fdisk -l

此时虽然已经卸载了设备并且登出,分区信息已经看不到,但是并没有删除;
当再次重启设备时,就会恢复;

在这里插入图片描述

所在在登出之后,还需要执行删除动作;

在这里插入图片描述
服务端
单个信息的删除:

在这里插入图片描述
全部信息的删除:

在这里插入图片描述
当不知道用什么参数时,输入 help 来获得帮助:

在这里插入图片描述

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值