文件系统与目录

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
可观测监控 Prometheus 版,每月50GB免费额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 本文介绍了Linux文件系统的基本概念及其组成部分。文件系统是磁盘上的特定格式区域,用于保存和管理文件。常见的Linux文件系统有Ext3、Ext4和XFS,其中XFS是RHEL 7的默认文件系统,支持高达18EB的存储容量。文件系统通过inode记录文件的属性,如权限、所有者、大小和时间戳等。此外,文章还介绍了虚拟文件系统(VFS)的概念,以及Linux文件系统的目录结构和权限管理机制。通过`chmod`命令,可以使用数字表示法或文字表示法修改文件权限。

 一、文件系统

文件系统(File System)是磁盘上有特定格式的一片区域,操作系统利用文件系统保存和管理文件。

用户在硬件存储设备中执行的文件建立、写入、读取、修改、转存与控制等操作都是依靠文件系统来完成的。文件系统的作用是合理规划硬盘,以保证用户正常的使用需求。

Linux系统支持数十种的文件系统,而最常见的文件系统如下所示。

(1)Ext3:是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分之百地保证资料不会丢失。它会把整个磁盘的每个写入动作的细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断的部分,然后尝试进行修复。

(2)Ext4:Ext3的改进版本,作为RHEL 6系统中的默认文件管理系统,它支持的存储容量高达1EB(1EB=1 073 741 824GB),且能够有无限多的子目录。另外,Ext4文件系统能够批量分配block块,从而极大地提高了读写效率。

(3)XFS:是一种高性能的日志文件系统,而且是RHEL 7中默认的文件管理系统。它的优势在发生意外宕机后显得尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的日志功能只用花费极低的计算和存储性能。它最大可支持的存储容量为18EB,这几乎满足了所有需求。

[root@rhel7-lzq-01 ~]# df -T
                              1K-         % 
/dev/sda2                      xfs      9754624  101720 9652904    2% /
devtmpfs                       devtmpfs  918820       0  918820    0% /dev
tmpfs                          tmpfs     933524       0  933524    0% /dev/shm
tmpfs                          tmpfs     933524   25648  907876    3% /run
tmpfs                          tmpfs     933524       0  933524    0% /sys/fs/cgroup
/dev/sda5                      xfs      7801856 3104784 4697072   40% /usr
/dev/sda3                      xfs      7801856   37976 7763880    1% /home
/dev/sda6                      xfs      7801856  172984 7628872    3% /var
/dev/sda1                      xfs       289444  159608  129836   56% /boot
/dev/mapper/rhel_rhel7--01-tmp xfs       975524   33068  942456    4% /tmp
tmpfs                          tmpfs     186708      36  186672    1% /run/user/0
/dev/sr0                       iso9660  3963760 3963760       0  100% /run/media/root/RHEL-7.4 Server.x86_64

image.gif

RHEL 7系统中一个比较大的变化就是使用了XFS作为文件系统,XFS文件系统可支持高达18EB的存储容量。

日常在硬盘需要保存的数据实在太多了,因此Linux系统中有一个名为super block的“硬盘地图”。Linux只是把每个文件的权限与属性记录在inode中,而且每个文件占用一个独立的inode表格。该表格的大小默认为128字节,里面记录着如下信息。

  • 该文件的访问权限(read、write、execute)。
  • 该文件的所有者与所属组(owner、group)。
  • 该文件的大小(size)。
  • 该文件的创建或内容修改时间(ctime)。
  • 该文件的最后一次访问时间(atime)。
  • 该文件的修改时间(mtime)。
  • 文件的特殊权限(SUID、SGID、SBIT)。
  • 该文件的真实数据地址(point)。

拓展知识:文件存储在硬盘上,硬盘的最小存储单位叫做“扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)。

操作系统读取硬盘的时候,不会一个个扇区的读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”(block)。这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是4KB,即连续八个sector组成一个block。

文件数据都储存在“块”中,那么很显然,我们还必须找到一个地方储存文件的“元信息”,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为”索引节点“。

每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。

[root@rhel7-lzq-01 ~]# xfs_info /dev/sda5
meta-data=/dev/sda5              isize=512    agcount=4, agsize=488256 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=1953024, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

image.gif

dumpe2fs  /dev/sda1   # tune2fs和dumpe2fs只能打开ext3/ext4等文件类型

image.gif

文件的实际内容则保存在block块中(大小可以是1KB、2KB或4KB),一个inode的默认大小仅为128B(Ext3),记录一个block则消耗4B。当文件的inode被写满后,Linux系统会自动分配出一个block块,专门用于像inode那样记录其他block块的信息,这样把各个block块的内容串到一起,就能够让用户读到完整的文件内容了。

对于存储文件内容的block块,有下面两种常见情况(以4KB的block大小为例进行说明)。

  • 情况1:文件很小(1KB),但依然会占用一个block,因此会潜在地浪费3KB。
  • 情况2:文件很大(5KB),那么会占用两个block(5KB-4KB后剩下的1KB也要占用一个block)。
[root@rhel7-lzq-01 ~]# stat anaconda-ks.cfg
  "anaconda-ks.cfg"
  1704            8          IO 4096   
802h/2050d        Inode16816723    1
(0600/-rw-------)  Uid(    0/    root)   Gid(    0/    root)
system_u:object_r:admin_home_t:s0
访2024-09-09 19:16:17.438645964 +0800
2024-09-09 19:13:04.498062870 +0800
2024-09-09 19:13:04.498062870 +0800
-
[root@rhel7-lzq-01 ~]#

image.gif

[root@rhel7-lzq-01 ~]# ls -i
16816723 anaconda-ks.cfg        8405783    8405786   16816731   25167608 
16816729 initial-setup-ks.cfg       138        139   25167607   16816730 

image.gif

二、虚拟文件系统

计算机系统在发展过程中产生了众多的文件系统,为了使用户在读取或写入文件时不用关心底层的硬盘结构,Linux内核中的软件层为用户程序提供了一个VFS(Virtual File System,虚拟文件系统)接口,这样用户实际上在操作文件时就是统一对这个虚拟文件系统进行操作了。VFS的架构示意图如下。

image.gif 编辑

三、Linux文件系统目录结构

在Linux系统中,目录、字符设备、块设备、套接字、打印机等都被抽象成了文件:Linux系统中一切都是文件。想要找到一个文件,我们要依次进入该文件所在的磁盘分区(假设这里是D盘),然后在进入该分区下的具体目录,最终找到这个文件。

在Linux系统中并不存在C/D/E/F等盘符,Linux系统中的一切文件都是从“根(/)”目录开始的,并按照文件系统层次化标准(Filesystem Aierarchy Standard,FHS)采用树形结构来存放文件,以及定义了常见目录的用途。

Linux系统中的文件和目录名称是严格区分大小写的。例如,root、rOOt、Root、rooT均代表不同的目录,并且文件名称中不得包含斜杠(/)。Linux系统中的文件存储结构如下图所示。

image.gif 编辑

在Linux系统中,最常见的目录以及所对应的存放内容如下表所示。

目录名称 应放置文件的内容
/ Linux文件的最上层根目录
/boot 开机所需文件—内核、开机菜单以及所需配置文件等
/dev 以文件形式存放任何设备与接口
/etc 配置文件
/home 用户家目录
/bin Binary的缩写,存放用户的可运行程序,如ls、cp等,也包含其他shell,如bash和cs等
目录名称 应放置文件的内容
/lib 开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数
/sbin 开机过程中需要的命令
/media 用于挂载设备文件的目录
/opt 放置第三方的软件
/root 系统管理员的家目录
/srv 一些网络服务的数据文件目录
/tmp 任何人均可使用的“共享”临时目录
/proc 虚拟文件系统,如系统内核、进程、外部设备及网络状态等
/usr/local 用户自行安装的软件
/usr/sbin Linux系统开机时不会使用到的软件/命令/脚本
/usr/share 帮助与说明文件,也可放置共享文件
/var 主要存放经常变化的文件,如日志
/lost+found 当文件系统发生错误时,将一些丢失的文件片段存放在这里

四、Linux文件权限

文件是操作系统用来存储信息的基本结构,是一组信息的集合。文件通过文件名来唯一地标识。Linux中的文件名称最长可允许255个字符,这些字符可用A~Z、0~9、.、_、-等符号来表示。

与其他操作系统相比,Linux没有“扩展名”的概念,也就是说文件的名称和该文件的种类并没有直接的关联。它的另一个特性是Linux文件名区分大小写。

在Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。通过设定权限可以从以下3种访问方式限制访问权限。

  • 只允许用户自己访问。
  • 允许一个预先指定的用户组中的用户访问。
  • 允许系统中的任何用户访问。

根据赋予权限的不同,3种不同的用户(所有者、用户组或其他用户)能够访问不同的目录或者文件。所有者是创建文件的用户,文件的所有者能够授予所在用户组的其他成员以及系统中除所属组之外的其他用户的文件访问权限。每一个用户针对系统中的所有文件都有它自身的读、写和执行权限。

  • 第一套权限控制访问自己的文件权限,即所有者权限。
  • 第二套权限控制用户组访问其中一个用户的文件的权限。
  • 第三套权限控制其他所有用户访问一个用户的文件的权限。

这三套权限赋予用户不同类型(即所有者、用户组和其他用户)的读、写及执行权限,就构成了一个有9种类型的权限组。

我们可以用“ls -l”或者ll命令显示文件的详细信息,其中包括权限。如下所示:

image.gif 编辑

文件属性示意图:

image.gif 编辑

文件各种属性信息:

每一行的第一个字符一般用来区分文件的类型,一般取值为d、-、l、b、c、s、p。具体含义如下。

d:表示是一个目录,在ext文件系统中目录也是一种特殊的文件。

-:表示该文件是一个普通的文件。

l: 表示该文件是一个符号链接文件,实际上它指向另一个文件。

b、c:分别表示该文件为区块设备或其他的外围设备,是特殊类型的文件。

s、p:这些文件关系到系统的数据结构和管道,通常很少见到。

五、使用数字表示法修改权限

通常在权限修改时可以用两种方式来表示权限类型:数字表示法和文字表示法。

chmod命令的格式是:

chmod 选项 文件

所谓数字表示法是指将读取(r)、写入(w)和执行(x)分别以数字4、2、1来表示,没有授予的部分就表示为0,然后再把所授予的权限相加而成。

以数字表示法修改权限的例子:

原 始 权 限 转换为数字 数字表示法
rwxrwxr-x (421) (421) (401) 775
rwxr-xr-x (421) (401) (401) 755
rw-rw-r-- (420) (420) (400) 664
rw-r--r-- (420) (400) (400) 644

1.文字表示法

使用权限的文字表示法时,系统用4种字母来表示不同的用户。

u:user,表示所有者。

g:group,表示属组。

o:others,表示其他用户。

a:all,表示以上3种用户。

使用下面3种字符的组合表示法设置操作权限。

r:read,可读。

w:write,写入。

x:execute,执行。

操作符号包括以下几种。

+:添加某种权限。

-:减去某种权限。

=:赋予给定权限并取消原来的权限。

例子:

[root@RHEL7-1 ~]# chmod u=rw,g=rw,o=r /etc/file

image.gif

小小案例,带你飞一下~!

假如我们要“设定”一个文件filesystem.text(没有的话可以自己创建文件)的权限为-rwxr-xr-x时,所表述的含义如下。

user (u):具有可读、可写、可执行的权限。

group与others (g/o):具有可读与执行的权限。

执行结果如下:

[root@rhel7-lzq-01 opt]# touch filesystem.text
[root@rhel7-lzq-01 opt]# ll
 8
-rw-r--r--. 1 root root    0 10 28 10:46 filesystem.text
drwxr-xr-x. 2 root root   19 9  20 14:28 linux01
drwxr-xr-x. 2 root root    6 3   9 2015 rh
-rw-r--r--. 1 root root   15 10  8 13:26 shuqing.log
-rw-r--r--. 1 root root 2053 10  8 13:28 tmp.log
[root@rhel7-lzq-01 opt]# chmod u=rwx,go=rx filesystem.text
[root@rhel7-lzq-01 opt]# ls -al filesystem.text
-rwxr-xr-x. 1 root root 0 10 28 10:46 filesystem.text

image.gif

假如设置-rwxr-xr--这样的权限又该如何操作呢?可以使用“chmod u=rwx, g=rx,o=r filename”来设定。此外,如果不知道原先的文件属性,而想增加filesystem.text文件的所有人均有写入的权限,那么可以使用如下命令:

[root@rhel7-lzq-01 opt]# ls -al filesystem.text
-rwxr-xr-x. 1 root root 0 10 28 10:46 filesystem.text
[root@rhel7-lzq-01 opt]# chmod a+w filesystem.text
[root@rhel7-lzq-01 opt]# ls -al filesystem.text
-rwxrwxrwx. 1 root root 0 10 28 10:46 filesystem.text
[root@rhel7-lzq-01 opt]#

image.gif

如果要将权限去掉而不改动其他已存在的权限呢?例如,要去掉所有人的可执行权限,则可以使用如下命令:

[root@rhel7-lzq-01 opt]# ls -al filesystem.text
-rwxrwxrwx. 1 root root 0 10 28 10:46 filesystem.text
[root@rhel7-lzq-01 opt]# chmod a-x filesystem.text
[root@rhel7-lzq-01 opt]# ls -al filesystem.text
-rw-rw-rw-. 1 root root 0 10 28 10:46 filesystem.text
[root@rhel7-lzq-01 opt]#

image.gif


相关文章
|
3天前
|
存储 人工智能 弹性计算
阿里云弹性计算_加速计算专场精华概览 | 2024云栖大会回顾
2024年9月19-21日,2024云栖大会在杭州云栖小镇举行,阿里云智能集团资深技术专家、异构计算产品技术负责人王超等多位产品、技术专家,共同带来了题为《AI Infra的前沿技术与应用实践》的专场session。本次专场重点介绍了阿里云AI Infra 产品架构与技术能力,及用户如何使用阿里云灵骏产品进行AI大模型开发、训练和应用。围绕当下大模型训练和推理的技术难点,专家们分享了如何在阿里云上实现稳定、高效、经济的大模型训练,并通过多个客户案例展示了云上大模型训练的显著优势。
|
7天前
|
存储 人工智能 调度
阿里云吴结生:高性能计算持续创新,响应数据+AI时代的多元化负载需求
在数字化转型的大潮中,每家公司都在积极探索如何利用数据驱动业务增长,而AI技术的快速发展更是加速了这一进程。
|
3天前
|
人工智能 运维 双11
2024阿里云双十一云资源购买指南(纯客观,无广)
2024年双十一,阿里云推出多项重磅优惠,特别针对新迁入云的企业和初创公司提供丰厚补贴。其中,36元一年的轻量应用服务器、1.95元/小时的16核60GB A10卡以及1元购域名等产品尤为值得关注。这些产品不仅价格亲民,还提供了丰富的功能和服务,非常适合个人开发者、学生及中小企业快速上手和部署应用。
|
12天前
|
人工智能 弹性计算 文字识别
基于阿里云文档智能和RAG快速构建企业"第二大脑"
在数字化转型的背景下,企业面临海量文档管理的挑战。传统的文档管理方式效率低下,难以满足业务需求。阿里云推出的文档智能(Document Mind)与检索增强生成(RAG)技术,通过自动化解析和智能检索,极大地提升了文档管理的效率和信息利用的价值。本文介绍了如何利用阿里云的解决方案,快速构建企业专属的“第二大脑”,助力企业在竞争中占据优势。
|
14天前
|
自然语言处理 数据可视化 前端开发
从数据提取到管理:合合信息的智能文档处理全方位解析【合合信息智能文档处理百宝箱】
合合信息的智能文档处理“百宝箱”涵盖文档解析、向量化模型、测评工具等,解决了复杂文档解析、大模型问答幻觉、文档解析效果评估、知识库搭建、多语言文档翻译等问题。通过可视化解析工具 TextIn ParseX、向量化模型 acge-embedding 和文档解析测评工具 markdown_tester,百宝箱提升了文档处理的效率和精确度,适用于多种文档格式和语言环境,助力企业实现高效的信息管理和业务支持。
3935 2
从数据提取到管理:合合信息的智能文档处理全方位解析【合合信息智能文档处理百宝箱】
|
3天前
|
算法 安全 网络安全
阿里云SSL证书双11精选,WoSign SSL国产证书优惠
2024阿里云11.11金秋云创季活动火热进行中,活动月期间(2024年11月01日至11月30日)通过折扣、叠加优惠券等多种方式,阿里云WoSign SSL证书实现优惠价格新低,DV SSL证书220元/年起,助力中小企业轻松实现HTTPS加密,保障数据传输安全。
494 3
阿里云SSL证书双11精选,WoSign SSL国产证书优惠
|
10天前
|
安全 数据建模 网络安全
2024阿里云双11,WoSign SSL证书优惠券使用攻略
2024阿里云“11.11金秋云创季”活动主会场,阿里云用户通过完成个人或企业实名认证,可以领取不同额度的满减优惠券,叠加折扣优惠。用户购买WoSign SSL证书,如何叠加才能更加优惠呢?
984 3
|
7天前
|
机器学习/深度学习 存储 人工智能
白话文讲解大模型| Attention is all you need
本文档旨在详细阐述当前主流的大模型技术架构如Transformer架构。我们将从技术概述、架构介绍到具体模型实现等多个角度进行讲解。通过本文档,我们期望为读者提供一个全面的理解,帮助大家掌握大模型的工作原理,增强与客户沟通的技术基础。本文档适合对大模型感兴趣的人员阅读。
391 15
白话文讲解大模型| Attention is all you need
|
7天前
|
算法 数据建模 网络安全
阿里云SSL证书2024双11优惠,WoSign DV证书220元/年起
2024阿里云11.11金秋云创季火热进行中,活动月期间(2024年11月01日至11月30日),阿里云SSL证书限时优惠,部分证书产品新老同享75折起;通过优惠折扣、叠加满减优惠券等多种方式,阿里云WoSign SSL证书将实现优惠价格新低,DV SSL证书220元/年起。
559 5
|
3天前
|
安全 网络安全
您有一份网络安全攻略待领取!!!
深入了解如何保护自己的云上资产,领取超酷的安全海报和定制鼠标垫,随时随地提醒你保持警惕!
689 1
您有一份网络安全攻略待领取!!!