Linux系统工程师
实验所用系统为Redhat-rhel8.2。
目录
Linux系统工程师–网络文件系统
实验环境:两台配置好网络软件仓库的虚拟机,ip为109和209
nm-connection-editor
vim /etc/yum.repos.d/westos.repo
#此处不再赘述
一、samba服务简介
当一个服务,有很多人访问的时候,需要多台主机来同时维持该服务运行,所有主机链接后端存储服务器,在主机上存储的数据,最终会存储到后端存储服务器,避免因客户端主机瘫痪导致用户数据丢失,称之为存储分离。这一技术的本质是共享文件系统的读写权限,而不是将文件系统下载到客户端主机后共享。通过后端存储服务器,可以将不同主机的文件、权限等共享出去。
SMB(全称是Server Message Block)是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通。
CIFS 是一个新提出的协议,它使程序可以访问远程Internet计算机上的文件并要求此计算机提供服务。CIFS 使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS是公共的或开放的SMB协议版本,并由Microsoft使用。
二、samba基本信息
服务启动脚本:
smb.service
主配置目录:
/etc/samba
主配置文件:
/etc/samba.conf ##配置文件模板:/etc/samba.conf.example
安全上下文:
samba_share_t
端口:
139
445
安装包:
samba
samba-common
三、samba的安装与启用
- 安装
dnf install samba samba-common samba-client -y
#samba 服务主体
#samba-common 服务用到的配置文件
#samba-client samba服务的客户端
- 启动
systemctl enable --now smb.service
- 启用
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
- 查看
smbclient -L //172.25.254.109 ##当前没有密码,直接回车
实验准备:
在真机,samba服务器(wetsosa主机),客户端(westosb主机)都安装samba服务。
- windows下的目录共享
建立一个目录,右键点击属性,选择共享,点击共享,添加用户everyone,点击共享。高级共享,勾选共享此文件,点击权限进行权限控制,点击应用并确定,逐步退出。
windows+r
,输入cmd
进入命令控制行,输入命令ipconfig
/all
查看本机ip,在计算机中点击网络输入\\真机ip
可以看到共享的目录。
- 将win资源共享到linux,在linux下访问时
smbclient -L //192.168.112.1 ##输入指定用户密码访问windows系统中的共享资源westos目录(当要输入root密码时直接回车)
smbclient -L //192.168.112.1 -U administrator ##-L 列出目标主机共享的资源,-U指定用户身份访问
四、账号管理
1、添加账号
smbpasswd -a westos ##必须是本机存在的用户,密码随意,与westos登录系统密码无关
smbpasswd -a lee ##lee用户在服务器中不存在,添加失败
useradd -s /sbin/nologin lee -M ##添加用户后重新添加账号
2、删除与查看账号
pdbedit -x lee ##删除smb用户
pdbedit -L ##查看smb用户
3、登录账号
smbclient -L //172.25.254.109 -U westos ##指定用户登录账号
## 报错NT_STATUS_LOGON_FAILURE为密码错误
登录速度慢的话可以做本地解析
vim /etc/hosts
///
172.25.254.109 westosa.westos.org ##Ip+hostname
///
#此时samba服务器主机westosa须存在samba账号westos,才能在客户端westosb主机访问到
五、samba用户访问家目录
cd /etc/samba/ ##主配置目录
cp -p smb.conf.example smb.conf ##将配置文件模板复制到主配置文件中,重新生成配置文件,-p 复制权限
smbclient //172.25.254.109/westos -U westos
smb: \> ls
## 报错NT_STATUS_ACCESS_DENIED listing \* ##因为selinux,smb用户不能浏览自己的家目录
setsebool -P samba_enable_home_dirs on ##调整selinux中的smb波尔值使用户可以访问家目录
smbclient //172.25.254.109/westos -U westos ##访问成功
六、samba服务共享目录
1、共享自建目录
在samba服务器即westosa主机建立一个目录,目录对所有人可读可执行,编辑主配置文件,设定共享该目录,重启服务,在服务端即westosb主机查看是否共享成功。
mkdir /westos_share
ls -ld /westos_share ##查看权限
vim /etc/samba/smb.conf ##主配置文件
///
最后面
[westos_share] ##共享的名字
comment = westos share ##共享说明
path = /westos_share ##指定共享的本机路径
///
systemctl restart smb.service ##重启服务
smbclient -L //172.25.254.109 -U westos ##查看,共享成功
#设定westos_share目录共享
#客户端查看共享成功
在samba服务器(westosa)的westos_share目录中建立文件,在客户端(westosb)查看新建的文件,但时会被selinux拒绝,此时设定新建文件的安全上下文,再重新访问。
touch /westos_share/westosfile{1..3}
smbclient //172.25.254.109/westos_share -U westos ##查看新建的文件
smb: \> ls
##NT_STATUS_ACCESS_DENIED listing \* ##仍被selinux拒绝
semanage fcontext -a -t samba_share_t '/westos_share(/.*)?' ##修改安全上下文
restorecon -RvvF /westos_share/ ##读取设定
smbclient //172.25.254.109/westos_share -U westos
smb: \> ls ##访问成功
[注意] 用户自己建立的目录如果需要通过smb共享,那么安全上下文必须指定为samba_share_t
#在samba服务器先建立文件,因为客户端访问被selinux拒绝,修改安全上下文
#修改安全上下文之后访问成功
2、共享系统目录
在samba服务器(westosa)配置文件中设定共享系统目录/mnt,重启服务,在客户端(westosb)访问samba服务,/mnt被共享,但是不能访问内容。此时设定selinux不再对samba服务访问文件时的安全上下文进行限制,客户端可以访问内容。
vim /mnt/samba/smb.conf
///
[mnt]
comment = mnt dir
path = /mnt
///
systemctl restart smb.service
smbclient -L //172.25.254.109 -U westos ##/mnt被共享成功
smbclient //172.25.254.109/mnt -U westos ##ls不能访问内容
getsebool -a | grep samba
setsebool samba_export_all_ro off ##selinux将不再对samba服务访问文件时的安全上下文进行限制(关闭只读权限)
setsebool samba_export_all_rw off ##关闭读写权限
打开权限后重新访问
smbclient //172.25.254.109/mnt -U westos ##ls访问成功
#设定/mnt目录共享
#selinux将不再对samba服务访问文件时的安全上下文进行限制
#访问成功
七、samba的访问控制
1、全局白名单
在samba服务器(westosa)配置文件中设定只允许209号主机(客户端westosb)访问samba服务器,重启服务。
vim /etc/samba/smb.conf
///
91 hosts allow = 172.25.254.209 ##只允许209主机访问主机的samba服务器
##可以有多个,空格隔开
///
systemctl restart smb.service
在客户端(westosb)访问samba服务器,访问成功,在真机(9号)访问失败。
2、全局黑名单
在samba服务器(westosa)编辑主配置文件,“;”注释掉白名单,设定拒绝209主机访问主机的samba服务器,重启服务。
vim /etc/samba/smb.conf
///
91; hosts allow = 172.25.254.209 ##;注释掉白名单
92 hosts deny = 172.25.254.209 ##黑名单,拒绝209主机访问主机的samba服务器
///
systemctl restart smb.service
在客户端(westosb)访问samba服务器,访问失败,在真机(9号)访问成功。
[注意] 此位置设定的访问控制为全局访问控制,影响本台smb服务的所有共享
3、目录白名单
在samba服务器(westosa)编辑主配置文件,“;”注释掉全局设定,设定westos_share这个共享只能被209主机访问,重启服务。
vim /etc/samba/smb.conf
///
319 hosts allow = 172.25.254.209 ##westos_share这个共享只能被209主机访问,此访问设定只针对westos_share
///
systemctl restart smb.service
在客户端(westosb)访问samba服务器westos_share目录,访问成功,在真机(9号)可以列出,但不能访问。
八、samba的常用配置参数
writable = yes ##可写
write list = westos ##指定用户可写
write list = +/@westos ##指定用户组可写
valid users = lee ##指定用户访问
valid users = +/@lee ##指定用户组访问
browseable = yes|no ##是否隐藏共享
map to guest = bad user ##把没有身份的用户都映射为guest账号
guest ok = yes ##此共享允许guest用户访问
admin users = lee ##指定此共享的超级用户身份呢
1、隐藏共享资源
在samba服务器(westosa)编辑主配置文件,“;”注释掉目录访问控制,设定隐藏westos_share这个共享,无需重启。在客户端(westosb)列出时看不到westos_share。
vim /etc/samba/smb.conf
///
browseable = no ##隐藏共享目录
///
无需重启
###westosb
smbclient -L //172.25.254.109 -U westos ##列出时没有westos_share
2、显示共享资源
在samba服务器(westosa)编辑主配置文件,设定显示westos_share这个共享,无需重启。在客户端(westosb)列出时可以看到westos_share。
vim /etc/samba/smb.conf
///
browseable = yes ##显示共享资源
///
无需重启
smbclient -L //172.25.254.109 -U westos ##列出时有westos_share
3、访问用户控制
在samba服务器(westosa)编辑主配置文件,设定显示westos_share这个共享只能通过samba用户westos登录,无需重启。
vim /etc/samba/smb.conf
///
320 valid users = westos ##此共享只能通过samba用户westos登录
///
在客户端(westosb)访问时,westso用户可以访问,lee用户被拒绝。
smbclient //172.25.254.109/westos_share -U westos ##westso用户可以访问
smbclient //172.25.254.109/westos_share -U lee ##lee用户被拒绝
在samba服务器(westosa)编辑主配置文件,设定显示westos_share这个共享只能通过samba用户westos组成员登录,无需重启,添加lee用户附属组westos,于是lee用户也可以访问。
vim /etc/samba/smb.conf
///
320 valid users =@westos ##+/@都可以,允许westos组成员可以使用此共享
///
usermod -G westos lee ##在samba服务器中添加lee用户附属组
smbclient //172.25.254.109/westos_share -U lee ##lee用户可以访问
[注意] 新建用户不能使用,因为此时还不是samba用户
4、写权限管理
1)共享资源可写
在samba服务器中,设定目录权限对所有用户可写,在samba服务配置文件中,注释掉访问控制,设定westos_share以读写方式共享。
chmod 777 /westos_share/ ##指定目录权限对所有用户可写
vim /etc/samba/smb.conf
///
320; valid users =@westos
321 writable = yes ##westos_share以读写方式共享
///
在客户端中使用lee用户挂载samba共享资源到/mnt目录中,查看挂载状态,在/mnt里建立文件,并在samba服务器中查看建立的文件。
###westosb
mount //172.25.254.109/westos_share /mnt/ -o username=lee,password=lee ##lee用户挂载samba共享资源到westosb主机/mnt目录中
df
touch /mnt/file ##建立文件成功
###westosa
ls /westos_share ##可以看到建立的文件
[注意] 挂载之后westosb主机/mnt目录中建立文件存储的真实位置为samba服务器共享出来的westos_share目录
2)指定用户可写
在samba服务器配置文件中,注释读写方式共享,设定westos_share此共享只对lee用户可写。
vim /etc/samba/smb.conf
///
321; writable = yes
322 write list = lee ##此共享只对lee用户可写
///
在客户端卸载samba服务器,以用户lee身份重新挂载,建立文件。
umount /mnt
mount //172.25.254.109/westos_share /mnt/ -o username=lee,password=lee
touch /mnt/file1 ##建立文件成功
卸载samba服务器,以用户westos身份重新挂载,建立文件失败,因为只有lee用户可写。
umount /mnt
mount //172.25.254.109/westos_share /mnt/ -o username=westos,password=westos
touch /mnt/file2 ##westos用户写功能被拒绝
3)指定用户组可写
在samba服务器配置文件中,设定westos_share此共享只对lee组成员可写,添加westos用户附属组为lee。
vim /etc/samba/smb.conf
///
322 write list = +lee ##此共享只对lee组成员可写
///
usermod -G lee westos ##添加westos用户附属组为lee
在客户端,卸载并使用westos用户重新挂载,重新建立文件,建立成功,在服务端可以查看。
###westosb
umount /mnt
mount //172.25.254.109/westos_share /mnt/ -o username=westos,password=westos
touch /mnt/file2 ##建立文件成功
###westosa
ls -l /westos_share/file2 ##查看file2的所有人所有组为westos
5、匿名用户登录控制
samba服务器默认拒绝匿名用户登录,在配置文件中注释写入动作,把没有身份的用户都映射为guest账号,设定westos_share此共享允许guest用户访问,重启服务。
smbclient //172.25.254.109/westos_share ##默认拒绝匿名用户登录samba服务
##此访问方式没有指定用户,则为匿名用户。不需要输入密码,直接回车
vim /etc/samba/smb.conf
///
322; write list = lee ##注释写入动作
119 map to guest = bad user ##把没有身份的用户都映射为guest账号
323 guest ok = yes ##此共享允许guest用户访问
///
systemctl restart smb.service
在客户端使用匿名用户登录,可以访问,并且可以挂载。
smbclient //172.25.254.109/westos_share ##可以访问
umount /mnt
mount //172.25.254.109/westos_share /mnt/ -o username=guest
九、autofs+samba
如果用手动挂载samba服务到客户端的某个目录,当没有向服务器中写入数据,或浏览数据时,这个挂载依然存在,那么在闲置时依然使用服务器资源,就是资源浪费
现在应该设定客户端使用时自动挂载,不用时自动卸载,这样才能最大化使用服务器资源
在客户端安装autofs实现自动挂载与卸载,编辑默认策略文件,设定最终挂载点的上层目录和子挂载策略文件(名称自定义,系统中默认不存在)。编辑子挂载策略文件,设定挂载策略。开启autofs服务。
###客户端
dnf install autofs -y ##实现自动挂载和卸载
vim /etc/auto.master ##默认策略文件
///
/westos /etc/auto.share ##最终挂载点的上层目录和子挂载策略文件(名称自定义,系统中默认不存在)
///
vim /etc/auto.share ##子挂载策略文件
///
samba -fstype=cifs,username=westos,password=westos ://172.25.254.109/westos_share
#最终挂载点的相对路径 挂载参数(挂载资源的文件系统类型,使用samba用户的名称,密码) 挂载服务器ip与资源共享
///
systemctl enable --now autofs
在客户端切到/westos/samba(ls是不存在的,但是可以切进去),df查看,自动挂载。默认300s后自动卸载。为了实验效果,编辑autofs的配置文件,设定挂载资源5s以上无任何程序使用则自动卸载,重启服务。再次切入/westos/samba,df自动挂载,切出,等待5s,df查看,自动卸载。
测试:
cd /westos/samba
df ##自动挂载
cd(300s后)
df ##自动卸载
如果需要时间更短,则可以更改配置文件
vim /etc/autofs.conf ##配置文件
///
timeout = 5 ##挂载资源5s以上无任何程序使用则自动卸载,默认300s自动卸载
///
systemctl restart autofs
cd /westos/samba
df ##自动挂载
cd(5s后)
df ##自动卸载
十、samba的多用户挂载
在客户端中,超级用户用自己的samba账号挂载了服务器资源,自己是可以浏览并使用的,但是,客户端的普通用户没有通过任何samba认证,也可以浏览root用户挂载的samba服务器上的资源,这样客户端就出现了很严重的越级漏洞。
在samba服务器配置文件里注释匿名用户访问权限,重启服务。
vim /etc/samba/smb.conf
///
119; map to guest = bad user
323; guest ok = yes
///
systemctl restart smb.service
在客户端安装多用户认证安全插件,并手动挂载samba服务。
dnf install cifs-utils -y ##安装多用户认证安全插件
man mount.cifs ##查看安全插件的用法
mount //172.25.254.109/westos_share /mnt/ -o username=westos,password=westos ##手动挂载
当用户挂载smb资源时需要输入帐号和密码,如果直接书写账号密码,-o参数指定帐号和密码,会被其他人看到,所以写到文件中并设定安全权限。
vim /root/smbpass ##设定samba账号和密码,文件名称自定
///
username=westos
password=westos
///
chmod 600 /root/smbpass ##只有自己可读
卸载资源,使用credentials=/root/smbpass
,multiuser
,sec=ntlmssp
参数挂载。参数credentials
指定密码文件后密码就会被隐藏,不会泄漏;multiuser
多用户认证参数,挂载时添加此参数,没有通过认证的用户不可以使用smb上的资源;sec=ntlmssp
,用户使用的认证方式。
umount /mnt
mount -o credentials=/root/smbpass,multiuser,sec=ntlmssp //172.25.254.109/westos_share /mnt/
[注意] 当卸载时出现报错target is busy.使用命令
fuser-kvm
切换到westos用户下,访问samba服务,如果密码输入错误,需要清空添加的密码,重新输入。
su - westos
cifscreds add -u westos 172.25.254.109
cifscreds clearall
ls /mnt
[注意] 出现报错key search failed:key has expired则删除该用户重新建立,userdel -r westos,useradd westos
十一、NFS
Net File System
网络文件系统,Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),是文件系统之上的一个网络抽象,来允许远程客户端以与本地文件系统类似的方式,来通过网络进行访问。虽然 NFS 不是第一个此类系统,但是它已经发展并演变成 UNIX系统中最强大最广泛使用的网络文件系统。NFS 允许在多个用户之间共享公共文件系统,并提供数据集中的优势,来最小化所需的存储空间。
NFS是基于UDP/IP协议的应用,其实现主要是采用远程过程调用RPC机制,RPC提供了一组与机器、操作系统以及低层传送协议无关的存取远程文件的操作。
1、nfs基本信息
nfs-utils ##安装包(客户端与服务端都是)
nfs-server ##服务脚本
/etc/exports ##共享配置文件
netstat -antlupe | grep 2049
2049 ##默认端口
2、nfs的启用
在服务器(westosa)和客户端(westosb)都安装nfs服务器并开启服务,在我的系统里nfs是默认安装好的。nfs的访问机制很特殊,先访问rpc-bind
,由rpc-bind
分配端口,找到mountd
,再查找nfs
,传递访问请求。因此,在服务器端(westosa)的火墙策略里要允许它们的访问请求,重启火墙。
dnf install nfs-utils -y ##安装nfs
systemctl start nfs-server ##启用
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
firewall-cmd --reload
在客户端测试时,列出nfs服务器中的共享资源,如果报错Unable to receive;是因为没有开启rpc-bind
和mountd
,全部开启后,可以访问nfs服务。
showmount -e 172.25.254.109 ##列出nfs服务器中的共享资源
#报错clnt_create: RPC: Unable to receive ##没有开启rpc-bind和mountd
全部开启后
#Export list for 172.25.254.20: ##此时没有资源
3、nfs配置
1)nfs配置参数
anonuid=1000,anongid=1000 ##指定用户身份
sync ##更改生成后同步数据到服务器(占用资源少,存储效率高)
async ##时时同步数据到服务器(数据完整性更高,占用资源更多,存储效率低)
rw ##读写
ro ##只读
no_root_squash ##root用户挂载不转换身份
2)实验–只读共享
在服务器(westosa)建立目录/westosdir
,设定满权限,为了实验效果,不符合安全要求,编辑共享策略文件,设定只读共享,并在数据真实改变后才同步数据到nfs共享目录,不重启服务,执行exportfs
-rv
使设定的策略生效。
mkdir /westosdir
ls -ld /westosdir ##查看原有权限
chmod 777 /westosdir ##设定满权限,是为了实验效果,不符合安全要求
vim /etc/exports
///
/westosdir *(ro,sync) ##只读共享,并在数据真实改变后才同步数据到nfs共享目录
///
不能重启服务
exportfs -rv ##使设定的策略生效
在客户端查看共享,通过挂载在/mnt
下使用共享,df
查看挂载状态。在服务器上/westosdir
下建立文件,在客户端/mnt
里可以浏览到该文件。
###westosb
showmount -e 172.25.254.109 ##查看共享
mount 172.25.254.109:/westosdir /mnt ##使用共享,挂载在/mnt下
df
在westosa建立文件westosdir/file{1..3}
ls /mnt ##在客户端可以看到文件
3)实验–指定共享权限
在服务器(westosa)编辑共享策略文件,设定对除209以外的主机只读共享,对209(westosb)读写共享,并在数据真实改变后才同步数据到nfs
共享目录,不重启服务
,执行exportfs
-rv
使设定的策略生效。
vim /etc/exports
///
/westosdir *(ro,sync) 172.25.254.209(rw,sync)
##对除209以外的主机只读共享,对209读写共享
///
exportfs -rv
在客户端先卸载共享服务,重新挂载在/mnt
下使用共享,df
查看挂载状态。在/mnt
里建立文件,可以在服务器里查看到该文件的用户身份。
###westosb
umount /mnt
mount 172.25.254.109:/westosdir /mnt
df
touch /mnt/file4
###westosa
ls -l /westosdir ##查看file4用户身份
[注意] 不使用用户挂载到本地目录的情况下,使用到的用户身份是服务器上的
nobody
4)实验–指定挂载身份
在服务器(westosa)编辑共享策略文件,设定客户端在挂载时使用用户为1000,不是默认的nobody
。
vim /etc/exports
///
/westosdir *(ro,sync) 172.25.254.209(rw,sync,anonuid=1000,anongid=1000)
##指定客户端在挂载时使用用户为1000,不是默认的nobody
///
exportfs -rv
[注意] 指定的ip必须在服务器真实存在,如果只指定
uid
,那么只影响用户身份,用户组还是nobody。
在客户端先卸载共享服务,重新挂载在/mnt
下使用共享。在/mnt
里建立文件,可以在服务器里查看到该文件的用户身份为策略文件中指定的用户。
###westosb
umount /mnt
mount 172.25.254.109:/westosdir /mnt
touch /mnt/file5
###westosa
ls -l /westosfir ##查看file5用户身份
5)实验–设定延用客户端挂载身份
在服务器(westosa)编辑共享策略文件,设定当客户端使用root
身份进行nfs
资源挂载后沿用自己的root
身份到服务器中。
vim /etc/exports
///
/westosdir *(ro,sync) 172.25.254.209(rw,sync,no_root_squash)
##当客户端使用root身份进行nfs资源挂载后沿用自己的root身份到服务器中
///
exportfs -rv
在客户端先卸载共享服务,重新挂载在/mnt
下使用共享。在/mnt
里建立文件,可以在服务器里查看到该文件的用户身份为客户端挂载时的身份。
###westosb
umount /mnt
mount 172.25.254.109:/westosdir /mnt
touch /mnt/file6
###westosa
ls -l /westosfir ##查看file6用户身份
4、nfs+autofs
手动挂载nfs服务到客户端的某个目录,当没有向服务器中写入数据,或浏览数据时,这个挂载依然存在,那么在闲置时依然使用服务器资源,就是资源浪费。
设定客户端使用时自动挂载,不用时自动卸载,这样才能最大化使用服务器资源
在客户端安装autofs
实现自动挂载与卸载,编辑主策略文件,注释samba
服务的挂载策略,不然会挂载冲突,写入最终挂载点的上层目录与子策略文件。编辑子策略文件(默认不存在,自行建立),设定挂载策略,重启autofs
服务。
###客户端
dnf install autofs -y ##实现自动挂载和卸载
vim /etc/auto.master ##主挂载策略文件
///
注释掉samba的策略文件,不然会挂载冲突
#/westos /etc/auto.share
/westos /etc/auto.nfs
#最终挂载点的上层目录 子策略文件
///
vim /etc/auto.nfs ##编辑子策略文件,默认不存在,自行建立
///
nfs -rw 172.25.254.109:/westosdir
#最终挂载点的相对路径 挂载参数 nfs服务器上共享出来的资源
///
systemctl restart autofs.service
在客户端查看/westos
目录为空,但是可以切入,切入后nfs服务自动挂载,如果没有服务占用目录,切出则自动卸载。
ls /westos/ ##目录为空
cd /westos/nfs ##可以切入
df ##自动挂载
十二、iscsi
samba服务和nfs服务共享目录文件
iscsi服务共享设备
1、对服务器进行设备管理
在真机执行virt-manager
,选择服务器westosa
,选择add
hardware
,选择storage
,添加5g的设备,点击finish
。
在服务器查看设备,进行分区管理。安装共享策略管理软件,并开启服务。
fdisk -l ##查看设备
fdisk /dev/vdb ##对设备进行分区管理,n--p--回车--回车--+2g--p查看--wq
dnf install targetcli -y ##共享策略管理软件
systemctl enable --now target ##开启服务
在服务器编写共享策略。
targetcli
##使用此命令编写共享策略
/> ls
##ls查看。蓝色的为目录,紫色的为目录中的命令
/> /backstores/block create westos:storage1 /dev/vdb1
##设定系统中真实设备在此软件中设备的别名
/> /iscsi create iqn.2021-08.org.westos:stroage1
##IQN Iscsi Qualified Name(Iscsi限定名称,格式为iqn.XXX-MM.域名反写.别名)
##建立对外的共享名称,ipn的命名方式
/> /iscsi/iqn.2021-08.org.westos:stroage1/tpg1/luns create /backstores/block/westos:storage1
##把共享名称和内部指定设备关联
/> /iscsi/iqn.2021-08.org.westos:stroage1/tpg1/acls create iqn.2021-08.org.westos:westoskey
##为共享设定访问密码,此处的westoskey应该是一段加密字符
/> exit
##保存在/etc/target/saveconfig.json
2、在客户端进行设备管理
1)挂载从服务器共享的设备
在客户端安装软件,发现资源主机要识别的设备,此时连接109失败,需要设定109主机火墙。
dnf install iscsi-initiator-utils.x86_64 -y ##客户端软件
systemctl status iscsid ##对客户端配置控制服务生效
systemctl status iscsi ##客户端对于资源利用的服务
iscsiadm -m discovery -t st -p 172.25.254.109
##-m:类型 discovery:发现 -t:指定要识别的设备类型 st:send target -p:指定资源主机ip
##此时连接109失败,需要设定109主机火墙
###westosa
firewall-cmd --permanent --add-port=3260/tcp ##在westosa主机中,开放服务的端口让客户端可以访问
firewall-cmd --reload
iscsiadm -m discovery -t st -p 172.25.254.109 ##在客户端重新访问,共享信息可以查询
设定完成后,登录共享设备,此时无法登录,因为在客户端未指定服务端的共享key。要在文件中指定服务器中的共享key。重启服务。重新登录。
iscsiadm -m node -T iqn.2021-08.org.westos:storage1 -p 172.25.254.109 -l
##-T:指定要访问的共享设备名称 -l:登录共享设备
##此时无法登录,因为在客户端未指定服务端的共享key
vim /etc/iscsi/initiatorname.iscsi ##在此文件中指定共享key
///
InitiatorName=iqn.2021-08.org.westos:westoskey ##服务器中的共享key
///
systemctl restart iscsid
iscsiadm -m node -T iqn.2021-08.org.westos:strage1 -p 172.25.254.109 -l
##重新登录,登录成功
设定完成后,在系统中会出现一个新的硬盘,大小为服务器中共享的设备大小,对设备进行分区管理,初始化与挂载。
fdisk -l ##在系统中会出现一个新的硬盘,大小为服务器中共享的设备大小
fdisk /dev/sda
mkfs.xfs /dev/sda1
mount /dev/sda1 /mnt
[注意] 在客户端使用设备存储的数据实际上在服务端的设备中。
但是因为网络通信可能会导致设备名发生改变,所以建议使用设备id挂载,blkid
查看设备id,将挂载策略写进挂载策略文件里,重启。
blkid ##使用设备id挂载,因为网络通信可能会导致设备名发生改变
vim /etc/fstab ##挂载策略文件
///
UUID=62f69d75-abe0-4c6b-a59c-dd69b6f80965 /mnt xfs defaults 0 0
///
reboot
因为该文件的挂载策略优先于网络和iscsi服务启动,刚开机时,网络和服务还没有启动,这样挂载会导致识别不到设备从而挂载失败,最终导致超时,系统不能启动。因此要设定此设备在挂载时,先启动网络和iscsi服务后生效
解决:输入超级用户密码,进入shell,编辑挂载策略文件,修改有问题的行。
vim /etc/fstab ##挂载策略文件
///
UUID=62f69d75-abe0-4c6b-a59c-dd69b6f80965 /mnt xfs defaults,_netdev 0 0
##指定此设备在挂载时,先启动网络和iscsi服务后生效
///
reboot
在真机shell里ssh连接客户端,df查看是否自动挂载。
ssh -l root 172.25.254.209 ##当前在真机shell
df ##查看
2)删除设备
在客户端编辑自动挂载策略文件,删除网络设备的自动挂载信息,卸载设备,并退出登录。但此时重启iscsi服务,设备被还原,因为数据未被删除。
vim /etc/fstab ##删除网络设备的自动挂载信息
umount /mnt ##卸载设备
tree /var/lib/iscsi ##在客户端读取到的服务器的所有数据存放目录
iscsiadm -m node -T iqn.2021-08.org.westos:storage1 -p 172.25.254.109 -u ##退出登录
fdisk -l ##退出登录后设备消失,但是数据还在,重启iscsi服务后设备会自动出现
systemctl restart iscsi
fdisk -l ##设备还原
永久删除时,先登出,删除客户主机中此网络设备的数据,查看数据是否被删除,然后重启服务,查看设备,已经被删除。
iscsiadm -m node -T iqn.2021-08.org.westos:storage1 -p 172.25.254.109 -u
##先登出
iscsiadm -m node -T iqn.2021-08.org.westos:storage1 -p 172.25.254.109 -o delete
##删除客户主机中此网络设备的数据
tree /var/lib/iscsi ##查看,数据被删除
systemctl restart iscsi ##重启服务
fdisk -l ##重启服务后,设备未还原
3、在服务端删除设备
在服务端编辑共享策略,删除共享数据。
targetcli
/> clearconfig confirm=True ##清空服务器中iscsi的共享数据
/> exit