linux文件系统简析

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:
什么是文件系统?
     文件系统 是基于操作系统的。用来管理和组织保存在磁盘驱动器上的数据的系统软件。通过对数据存储布局,文件命名,安全控制等方面的管理。解决了如何在设备上有效的存储数据。
    元数据(metadata)存储文件的重要信息(文件的权限,大小,修改时间,属主,存储位置等)
    文件系统是操作系统和硬盘之间 一个桥梁,对磁盘的写操作,都要经过文件系统,然后才到磁盘。
    常见的文件系统:
        DOS系统的msdoc    
        windows 下的FAT系统(fat16(最大支持2G)和fat32(最大支持4G))和NTFS文件系统
        光盘文件系统 ISO-9660
         linux 下 单一文件系统 ext2  和日志文件系统 ext3/ext4/xfs
        集群文件系统 gfs (Red Hat Global File System)
        虚拟文件系统 (/proc)  
        加密文件系统 (CFS)
        网络文件系统(NFS)
 linux标准文件系统是从VFS开始的,然后是ext2。ext3,ext4
    ext系列的对比:
        ext3是在ext2的基础上增加了日志形式(便于数据恢复)这一思想来源于:超级块和inode设计理念。
        ext3是一种日志式的文件系统,在ext2的基础上加入特殊的inode(日志文件)。日志记录功能,用于记录文件系统的元数据或各种写操作的变化。ext3数据的写入顺序;先通过日志文件的记录功能,然后在将数据写入磁盘的最终位置。
        ext4 是linux第四代日志文件系统。是ext3文件系统的后续版本。比较ext3的改进:(centos6下的默认文件系统)
         1.支持更多的子目录数量(ext3支持32000个子目录)ext4,理论上支持无限数量子目录
         2.支持更大的文件系统和更大的文件(ext3 持续贺词32TB的文件系统和2TB的文件,而ext4 容量可达1EB,文件容量增至16TB)
    XFS文件系统:
        XFS文件系统是SGI(美国硅图公司)开发的一个高级日志文件系统。centos7下作为默认文件系统(centos7 下构架全部是64位了)
        文件系统格式化命令mkfs.xfs
        # mkfs.xfs -f /dev/sda2    (由于sda2已经完成格式化了。需要-f  强制重新格式化)
            meta-data=/dev/sda2              isize=512    agcount=4, agsize=1525824 blks
                     =                       sectsz=512   attr=2, projid32bit=1
                     =                       crc=1        finobt=0, sparse=0
            data     =                       bsize=4096   blocks=6103296, imaxpct=25
                     =                       sunit=0      swidth=0 blks
            naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
            log      =internal log           bsize=4096   blocks=2980, version=2
                     =                       sectsz=512   sunit=0 blks, lazy-count=1
            realtime =none                   extsz=4096   blocks=0, rtextents=0
        文件系统一致性检测命令:
            xfs_repair -n /dev/sda2 (-n 只是测试不是修复)
        修复和监测要把分区卸载了。
        这里出现启动问题: 
        A start job is running for dev-disk-by\x2duuid-.....device(1min \1min 30)
        然后是时间超时
        然后出现提示: [DEPEND] DEpendency failed for /data
        不过 centos7下。的init系统还是比较好的。没有直接拒绝登录系统而是给了修复信息。
        Give root passwd for maintenance (输入root密码进入修复)
        (or type Control-D to continue):(这种一般是文件系统启动的错误。系统尝试自动修复文件系统)
        前面 由于出现提示是/data挂载不了。还是先进入系统看下/etc/fstab
        先查看 分区的UUID; # blkid
        然后查看 /ect/fstab 
        对比发现: /data的UUID 有问题。
        修改 /data 的UUID 
        重启,正常。
    文件系统使用的差异
        1.读操作频繁,小文件非常多(web应用,邮件应用) ext 4 文件系统比较好。ext4支持更多目录和文件
        2.写操作频繁。(需求日志功能)xfs 文件系统较好。(在高并发下:xfs比ext4 省CPU资源)
        3.对性能和安全都要求不高。可以用ext2 。(没有日志记录功能,可以省去设备开销)
    NFS 网络文件系统的
        功能:
            让网络上的不同操作系统之间共享数据。NFS首先在远程服务端(共享数据的操作系统)共享出文件或者目录,然后远程
        共享出来的文件或者目录,可以通过挂载的方式接到本地的不同系统上。
        实现原理:NFS server启动后,开启一个端口为客户端连接。由于这个端口每次都不一样,NFS文件系统通过rpc(remote procedure call)
        远程过程调用,监听NFS守护进程的端口号,通知给客户端。
        nfs需要2个系统服务。 
        portmap;RPC的portmap 管理器,管理RPC服务的连接
        nfs-utils: 提供 rpc.nfsd 及prc.mountd 这2个 nfs (daemons)的系统服务。
            其中:rpc.nfsd 是管理客户端是否有权限登录服务器。rpc.mountd 是管理认证后的客户端是否对文件有使用权。
                简单点就是: rpc.nfsd 处理连接请求  rpc.mountd 监督是否有权限操作目录。
        nfs是 c/s架构。
        NFS 服务器端 安装 需要 rpcbind 和 nfs 包
            centos7下一般默认安装了。现在检查下:
            # rpm -qa | grep rpcbind
            rpcbind-0.2.0-38.el7.x86_64
            # rpm -qa | grep nfs
            nfs-utils-1.3.0-0.33.el7.x86_64
            libnfsidmap-0.25-15.el7.x86_64
        主配置文件: /etc/exports
        添加一条语句:/app 192.168.1.140(rw,sync,no_root_squash)
        在添加的时候vim 不允许保存。显示 read_only file system
        解决方法:mount -o remount,rw /(重新挂载/分区为可读写)
        格式:共享资源路径 [主机地址][选项]
        格式解析:
      共享资源路径:就是要共享出来的目录或者磁盘分区。这些目录存在于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都会变成nfsnobody身份;只有可读权限,例如客户端使用者以UID,GID)=(0,0)的身份使用共享目录时,其身份就被转换为(UID,GID)=(65534,65534) 也就nfsnobody这个用户身份。系统以此为预设值,显然是为了安全考虑。
        all_squash:不管登陆NFS主机的是什么用户,都会将共享文件的UID和GID映射为匿名用户nfsnobody。
        no_all_squash:系统预设值,保留共享文件的UID和GID默认权限。也就是客户端用户的UID以及GID和服务端共享文件UID和GID相同时,才有对共享文件的读写权限。这种选项保证了共享文件的用户和组权限不会改变。
        anonuid:将登入NFS主机的用户都设定成指定的UID,此UID必须存在于NFS Server端/etc/passwd中。
        anongid:与“anonuid”含义类似,但是变成 GID了,即用户组ID! 
        sync:资料同步写入磁盘中。默认选择。 
        async:资料会先暂时存放在内存中,不会直接写入硬盘。 
 开启NFS服务
        # systemctl start nfs
        # systemctl start rpcbind
        exportfs 命令可以临时生效一条策略。系统不重启,就不会生效。
 客户端:
            安装 rpcbind 和 nfs-utils
            启动服务: service  rpcbind start
        查看nfs服务器提供了哪些服务:
            showmount -a ip 
            查看nfs主机信息
            showmount -e ip
            查看nfs主机和目录信息
    如何使用NFS: 在客户端挂载nfs服务器共享的目录
    # mkdir /app
          # mount -t nfs 192.168.1.152:/app /app
          (需要关闭服务器端口的防火墙 systemctl stop firewalld.service )
    NFS应用便捷场景:文件备份。
    需要备份的文件为客户端。粗放备份文件的客户端为nfs服务器。
    直接在挂载目录下。tar 需要复制的文件。









本文转自 swallow_zys  51CTO博客,原文链接:http://blog.51cto.com/12042068/1898605,如需转载请自行联系原作者
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
8月前
|
自然语言处理 监控 Linux
Linux 内核源码分析---proc 文件系统
`proc`文件系统是Linux内核中一个灵活而强大的工具,提供了一个与内核数据结构交互的接口。通过本文的分析,我们深入探讨了 `proc`文件系统的实现原理,包括其初始化、文件的创建与操作、动态内容生成等方面。通过对这些内容的理解,开发者可以更好地利用 `proc`文件系统来监控和调试内核,同时也为系统管理提供了便利的工具。
424 16
|
10月前
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
569 15
|
11月前
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
2467 7
|
11月前
|
存储 运维 监控
Linux--深入理与解linux文件系统与日志文件分析
深入理解 Linux 文件系统和日志文件分析,对于系统管理员和运维工程师来说至关重要。文件系统管理涉及到文件的组织、存储和检索,而日志文件则记录了系统和应用的运行状态,是排查故障和维护系统的重要依据。通过掌握文件系统和日志文件的管理和分析技能,可以有效提升系统的稳定性和安全性。
280 7
|
11月前
|
安全 Linux 数据安全/隐私保护
深入Linux操作系统:文件系统和权限管理
在数字世界的海洋中,操作系统是连接用户与硬件的桥梁,而Linux作为其中的佼佼者,其文件系统和权限管理则是这座桥梁上不可或缺的结构。本文将带你探索Linux的文件系统结构,理解文件权限的重要性,并通过实际案例揭示如何有效地管理和控制这些权限。我们将一起航行在Linux的命令行海洋中,解锁文件系统的奥秘,并学习如何保护你的数据免受不必要的访问。
|
存储 运维 监控
深入Linux基础:文件系统与进程管理详解
深入Linux基础:文件系统与进程管理详解
301 8
|
存储 Linux 文件存储
Linux文件系统
Linux文件系统 一切皆文件 在Linux中,“一切皆文件”的概念意味着系统中的所有资源,包括硬件设备、目录及进程等,均被视为文件。这种设计简化了操作和管理,具体包括: 普通文件:存储数据的常规文件。 目录文件:包含其他文件和子目录的文件。 进程文件:在/proc目录下代表系统中运行的进程。 设备文件:位于/dev目录,代表硬件设备。 网络字节流套接字文件:用于网络通信的数据流。 链接文件:指向另一个文件的符号链接或硬链接。 管道文件:用于进程间通信的文件。
210 7
|
编解码 Linux 程序员
深度探索Linux操作系统 —— 构建根文件系统2
深度探索Linux操作系统 —— 构建根文件系统
197 12
|
存储 Linux 索引
Linux 下最主流的文件系统格式——ext
【9月更文挑战第8天】硬盘被划分为若干相同大小的块(Block),默认大小为4K,便于灵活管理文件数据。文件数据分散存放于这些块中,提高了数据添加、删除和插入的便利性。
|
Linux Shell 网络安全
深度探索Linux操作系统 —— 构建根文件系统1
深度探索Linux操作系统 —— 构建根文件系统
210 6