Linux文件系统管理

一、文件系统类型

1、概述

Linux下常见的有DOS文件系统类型msdos,windows下的FAT系列(fat16和FAT32)和NTFS文件系统(在linux下只读),光盘文件系统ISO-9660,单一文件系统ext2和日志文件系统ext3、ext4、xfs,集群文件系统gfs(Red Hat Global File System)、ocfs2(oracle cluster File System)、虚拟文件系统(比如 /proc),网络文件系统(NFS)。

2、选择标准

(1)读操作频繁,同时小文件众多的应用

对于此类应用,选择ext4文件系统都是不错的选择。     由于ext3的目录结构是线型的,因此当一个目录下文件较多时,ext3的性能就下降比较多。而ext4的延迟分配、多块分配和盘区功能,使ext4非常适合大量小文件的操作,因此,从性能方面考虑,对于小规模文件密集型应用,ext4文件系统是首选。而如果从性能和安全性方面综合考虑的话,xfs文件系统是比较好的选择。大量实践证明,如果业务环境是对文件要进行大量的创建和删除操作的话,ext4是更高效的文件系统,接下来依次是xfs、ext3。例如网站应用,邮件系统等,都可使用ext4文件系统来达到最优性能。

(2)写操作频繁的应用     

如果是一些大数据文件操作,同时,应用本身需要大量日志写操作,那么,xfs文件系统是最佳选择,根据实际应用经验,对xfs、ext4、ext3块写入性能对比,整体上性能差不多,但在效率上(CPU利用率)最好的是xfs,接下来依次是ext4和ext3。

(3)对性能要求不高、数据安全要求不高的业务     

对于这类应用,ext3/ext2文件系统是比较好的选择,因为ext2没有日志记录功能,这样就节省了很多磁盘性能。例如linux系统下的/tmp分区就可以采用ext2文件系统。

二、网络文件系统NFS

1、什么是NFS

NFS的全称是Network FileSystem,即网络文件系统,NFS主要实现的功能是让网络上的不同操作系统之间共享数据

NFS首先在远程服务端(共享数据的操作系统)共享出文件或者目录,然后远端共享出来的文件或者目录就可以通过挂载(mount)的方式挂接到本地的不同操作系统上,最后,本地系统就可以很方便的使用远端提供的文件服务,操作起来像在本地操作一样。从而实现了数据的共享。

2、NFS Server端的配置 

NFS的主要配置文件只有一个/etc/exports,配置非常简单,设置格式为:

共享资源路径   [主机地址]   [选项]  

例如:下面是某系统/etc/exports的设置:

/webdata  *(sync,rw,all_squash)

/tmp *(rw,no_root_squash)

/home/share 192.168.1.*(rw,root_squash)  *(ro)    #ip段形式

/opt/data 192.168.1.18(rw)

共享资源路径:就是要共享出来的目录或者磁盘分区。例如上面的/tmp、/home/share目录等,这些目录存在于NFS Server端,以供NFS Client挂载使用。

主机地址:设定允许使用NFS Server共享资源的客户端主机地址,主机地址可以是主机名、域名、IP地址等,支持匹配。

选项:

ro: 即为:read only,也就是客户端主机对共享资源仅仅有读权限。

rw: 即为:read write,也就是客户端主机对共享资源有读、写权限。

no_root_squash: 信任客户端,根据用户UID进行判断,如果登入到NFS主机的用户是ROOT,那么此用户就拥有对共享资源的最高权限。此参数很不安全,建议不要使用。

root_squash:系统预设值,当登入NFS主机的用户root 时,那么这个使用者的权限将被縮成为匿名使用者,也就是它的UID与GID都会变成nfs nobody身份;只有可读权限,系统以此为预设值,显然是为了安全考虑。

all_squash:不管登陆NFS主机的是什么用户,都会将共享文件的UID和GID映射为匿名用户nfs nobody。

no_all_squash:系统预设值,保留共享文件的UID和GID默认权限。也就是客户端用户的UID以及GID和服务端共享文件UID和GID相同时,才有对共享文件的读写权限。这种选项保证了共享文件的用户和组权限不会改变。

sync:资料同步写入磁盘中。默认选择。

async:资料会先暂时存放在内存中,不会直接写入硬盘。

利用exportfs命令即可让修改生效

重新mount 文件/etc/exports中分享出来的目录,显示mount过程,操作如下: [root@NFS Server ~]# exportfs  -rv   -r :重新mount /etc/exports中分享出来的目录。 -v :在 export 的時候,将详细的信息输出到屏幕上。

3、NFS Client端的配置 

4、实战演示

这里我启用了两台虚拟机,分别为almalinux test(服务端)和centos test(客户端),ip分别为192.168.146.54和192.168.146.211。

(1)我们首先要确保我们的服务器已经安装了对应的NFS服务包,分别是rpcbind和nfs。

(2) 我们在服务端almalinux test,在/etc/exports中编写相关分享信息及权限设置,如下:

(3) 使用exportfs -rv命令对编辑好的配置文件进行导出生效,此时服务端的共享目录已经配置好了。

(4) 接下来我们将相关的NFS服务启动一下,分别是nfs、rpcbind、nfslock服务,如下:

(5)为了确保客户端可以顺利连接服务端,测试时可以把一些安全性的服务关闭,如iptables、selinux 、firewalld,此时修改的selinux安全服务是不生效的,我们可以选择重启服务端或者用 setenforce 0  命令,临时生效。至此,服务端配置完成。

(6) 接下来我们用客户端(centos test)去挂载服务端(almalinux test)共享出来的目录,同样我们先要去检查需要的包是否已经安装。

(7) 我们在客户端可以使用showmount -e [客户端ip]  的命令查看客户端共享的文件。

(8)接下来我们挂载第一个共享目录/data1,这时我们需要记得在服务端给/data1的权限是(sync,rw,all_squash)。格式:

mount    -t    [文件类型]    服务端ip:要挂载的目录    挂载到本地目录哪里

(9) 我们通过查看客户端磁盘情况发现此时已经挂载成功。

(10)接下来我们在客户端进入挂载的目录,当服务端写入目录时,客户端也可以收到,但在客户端却无法创建目录,原因便是之前提到的all_squash权限,表示无论你是以什么用户登录的,权限都会收回。

(11)我们发现对test1用户我们权限足够,进入test1目录,我们进行创建目录test2操作,发现此时test2的权限变为了nfsnobody而我们是以客户端root用户登录的,但创建的权限全部变成了nfsnobody,这便是服务端all_squash赋予的。

(12)相同方法我们可以去挂载剩下的两个目录,分别去实验不同的权限作用,方法类似。

no_root_squash: 信任客户端,根据用户UID进行判断,如果登入到NFS主机的用户是ROOT,那么此用户就拥有对共享资源的最高权限。此参数很不安全,建议不要使用。

root_squash:系统预设值,当登入NFS主机的用户root 时,那么这个使用者的权限将被縮成为匿名使用者,也就是它的UID与GID都会变成nfs nobody身份;只有可读权限,系统以此为预设值,显然是为了安全考虑。

  • 23
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值