Linux文件系统的特性
文件系统类型在使用之前必须要格式化。
每种操作系统能够使用的文件系统并不相同. 如windows 98 以前的微软操作系统主要利用的文件系统是 FAT ,windows 2000 以后的版本有所谓的 NTFS 文件系统,至于 Linux 的正统文件系统则为 Ext2 。
Linux 操作系统的文件权限(rwx)与文件属性(拥有者、群组、时间参数等)。 文件系统通常会将这两部份的数据分别存放在不同的区块,权限与属性放置到 inode 中,至于实际数据则放置到 data block 区块中。 另外,还有一个超级区块 (superblock) 会记录整个文件系统的整体信息,包括 inode 与 block 的总量、使用量、剩余量等。
-
超级块(Superblock): 这是整个文件系统的第一块空间。包括整个文件系统的基本信息,如块大小,inode/block的总量、使用量、剩余量,指向空间 inode 和数据块的指针等相关信息。
-
inode块(文件索引节点) : 文件系统索引,记录文件的属性。它是文件系统的最基本单元,是文件系统连接任何子目录、任何文件的桥梁。每个子目录和文件只有唯一的一个 inode 块。它包含了文件系统中文件的基本属性(文件的长度、创建及修改时间、权限、所属关系)、存放数据的位置等相关信息. 在 Linux 下可以通过 “ls -li” 命令查看文件的 inode 信息。硬连接和源文件具有相同的 inode 。
-
数据块(Block) :实际记录文件的内容,若文件太大时,会占用多个 block。为了提高目录访问效率,Linux 还提供了表达路径与 inode 对应关系的 dentry 结构。它描述了路径信息并连接到节点 inode,它包括各种目录信息,还指向了 inode 和超级块。
假设某一个文件的属性与权限数据是放置到 inode 4 号(下图较小方格内),而这个 inode 记录了文件数据的实际放置点为 2, 7, 13, 15 这四个 block 号码,此时我们的操作系统就能够据此来排列磁盘的阅读顺序,可以一口气将四个 block 内容读出来! 那么数据的读取就如同下图中的箭头所指定的模样了。
文件系统结构
Linux文件系统由三部分组成 : 文件名,inode,block Linux文件系统: ext3,ext4,xfs windows文件系统: FAT32,NTFS
inode包含文件的元信息,具体来说有以下内容:
-
文件的字节数
-
文件拥有者的User ID
-
文件的Group ID
-
文件的读、写、执行权限
-
文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
-
链接数,即有多少文件名指向这个inode
-
文件数据block的位置
可以用stat命令,查看某个文件的inode信息:
[root@node1 ~]# stat /etc/passwd File: ‘/etc/passwd’ Size: 1098 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 17160819 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2022-12-11 21:30:29.727012077 -0500 #指文件上一次查看文件的时间 比如:chmod +x a.sh Modify: 2022-12-01 21:37:03.366387475 -0500 #指文件内容上一次变动的时间 比如:echo aa >> a.sh 或vim a.sh 修改内容 Change: 2022-12-01 21:37:03.367387483 -0500 #指inode上一次文件属性变动的时间 比如:cat a.sh Birth: - [root@node1 ~]# ls -i /etc/passwd ##查看innode号 17160819 /etc/passwd [root@node1 ~]# df -i ##查看每个硬盘分区的inode总数和已经使用的数量,可以使用df命令 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/mapper/centos-root 8910848 166768 8744080 2% / devtmpfs 479660 404 479256 1% /dev tmpfs 482690 1 482689 1% /dev/shm tmpfs 482690 1293 481397 1% /run tmpfs 482690 16 482674 1% /sys/fs/cgroup /dev/sda1 524288 327 523961 1% /boot tmpfs 482690 1 482689 1% /run/user/0
Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。表面上,用户通过文件名,打开文件。 实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。 inode数据量设置大一些:可以创建多个文件,占用空间比较大 inode数据量设置小一些:可以创建很少文件,占用空间比较小
block 是真正存储数据的地方。 block是 文件系统 中最小的存储单位 扇区 是 磁盘 中最小的存储单位 簇和block调大 优点: 速度快,节约寻址时间,缺点:空间浪费