linux文件系统初学

Linux磁盘分区和目录

Linux发行版之间的差别很小,差别主要表现在系统管理的特色工具以及软件包管理方式的不同。

Windows的文件结构是多个并列的树状结构,最顶部是不同的磁盘(分区),如C,D,E等。而linux的文件结构是当个树状结构。

分区和目录的关系:

1. 任何一个分区都必须挂载到某个目录上。

2. 目录是逻辑上的区分,而分区是物理上的区分。

3. 根目录是所有linux的文件和目录

下面是我们某个可能的目录和分区的关系:

使用df可以查看各个分区的使用情况。

Mount挂载和Nfs

当要使用某个设备的时候,例如要读取一个格式化好的分区,光盘或者软件等设备,必须先把这些设备对应到某个目录上,而这个目录就被称为“挂载点”,这样才可以读取这些设备,这样的动作就是“挂载”。Mount是挂载指令,Nfs就是通过Mount来实现的。

Linux空间管理

Linux对于空间的管理相对简单,如图所示:

它将磁盘分为以下三个部分:

1) 超级块,文件系统中的第一个块被称为超级块。这个块被称为超级块。这个块存放文件系统本身的信息。比如,超级块记录了每个区域的大小,超级块也存放了未被使用的磁盘块的信息。

2) Inode表,超级块下的一个部分就是inode表。每个inode节点就是对应一个文件/目录的结构。这个机构包含了一个文件的长度,创建及修改时间,磁盘中的位置等信息。

3) 数据区,文件系统的第三个部分是数据区。文件的内容保存在这个区域。一个大的文件很容易被存储在上千个独立的磁盘块中。

一个文件主要包含文件名,属性,数据三项。内核将文件内容存放在数据区,文件属性将存放在inode中,文件名存放在目录里。下图显示了新建了一个文件的例子:

文件

文件类型

Linux主要的文件类型有以下几种:

1. 普通文件:c语言源代码,shell脚本,二进制可执行文件等,分为文本文件和二进制文件。

2. 目录文件:目录,存储文件的唯一地方。

3. 链接文件:指向同一个目录或者文件的文件。

4. 特殊文件:设备文件等。

文件存储结构

Linux正统的文件系统(ext2,ext3等)一个文件由目录项,inode和数据块组成。

目录项:包括文件名和inode节点号

Inode:又称文件索引节点,是文件基本信息的存放地方和数据块指针存放地。

数据块:文件的具体内容存放地。

下面是整体结构:

目录项内容如下:

Inode中的信息:

软链接,硬链接:

硬链接:是给文件一个副本,同时建立两者之间的连接关系,修改其中一个,与其链接的文件同时被修改。如果删除其中的一个,其余的文件则不受影响。

软链接:也叫符号链接,当源文件被删除,则符号链接会变成无源之水,而删除这个链接,源文件也不会受到影响。但是对链接文件的使用和引用都是直接调用源文件。

VFS

虚拟文件系统:

除了linux本身的文件系统,为了解决让linux支持其他不同的文件系统的问题,需要将对各种文件系统的操作和管理纳入到一个统一的框架中,使得用户程序可以使用同一组系统调用对各种不同的文件系统进行操作。这样,就对用户程序隐去了各种不同文件系统的实现细节,为用户提供一个统一的,抽象的,虚拟的文件系统界面。这就是所谓的“虚拟文件系统(VFS)”。

问题

http://djt.qq.com/article/view/620

1. 机械磁盘随机读写时速度非常慢,操作系统是采用什么技巧来提高随机读写的性能的?

附图一张:

磁盘面:磁盘就是由磁盘面组成

磁头:每个磁头对应一个磁盘面,负责该面上数据的读写

磁道:每个盘面上会围绕圆心划分出多个通信圆圈,负责该磁盘面上的数据的读写

柱面:所有盘片上的同一位置的磁道组成的立体叫做一个柱面。

扇区:以磁道为单位的管理单位仍然太大,所以计算机前辈们又把每个磁道划分出了各个扇区。

磁盘IO过程:第一步,先是磁头径向移动来寻找数据所在的磁道。这部分叫寻道时间。

第二部,找到目标磁道然后通过盘面旋转,将目标扇区移动到磁头的正下方。

第三部:向目标扇区写入数据。

所以单次磁盘IO时间=寻道时间+旋转延迟+存取时间。

所以答案是:因为一个分区的数据通常会一起读取,操作系统按照磁道对应的柱面来划分分区,来降低磁盘io所花费的寻道时间,进而来提高磁盘的读写性能。

2、touch一个新的空文件占用磁盘空间吗? 占用的话占用多少?

在linux下,新建一个新的空文件也是会占用空间,实际占用256Byte,确切的说是占用一个inode size,具体inode 的size是根据具体的平台决定的。

3、新建一个空目录占用磁盘空间吗?占用多少?和新建一个文件相比,哪个占用的更大?

占用1个block size+1个inode size,一个block size一般是4KB
4、你知道文件名是记录在磁盘的什么地方吗?

文件名记录在目录中的block的。
5、文件名最长多长?受什么制约?

linux限制文件名长度不得超过255byte。
6、文件名太长了会影响系统性能吗?为什么会产生影响?

文件名长了可能会对系统产生影响,因为这可能会导致更多的磁盘IO,比如由于文件名过长,导致目录的block变得很大,那么linux查找指定的文件极端情况可能需要遍历所有的block,产生大量的开销。、。

上面说的那个问题就是为什么有的时候ls快,有的时候ls慢,就是因为block过多,产生了多次IO。

7、一个目录下最多能建立多少个文件?

这个问题受限于你目录所在分区中inode数量,比如如果有100w个inode,就可以新建100w个文件,不过由于上面说的那个问题,单个目录下面的文件最好不要过万,不然ls之类的命令或者系统首次运行都会出现性能不佳的情况。

8、新建一个内容大小1k的文件,实际会占用多大的磁盘空间?

实际上会占用一个block加上一个inode的大小。。
9、向操作系统发起读取文件2Byte的命令,操作系统实际会读取多少呢?

块设备,当然是以block为单位进行读了。
10、我们使用文件时要怎么样来能提高磁盘IO速度?

如果知道你新建的文件会占用多大空间,比如1M,那么新建文件的时候就和操作系统说一下,让它帮你把文件的size预留下来,这样的话实际上操作系统会尽量分配连续的block,当你再读取这个文件的时候,磁盘就省去了很多寻道时间,IO速度显得快很多。

注:

使用df -i可以查看每个分区的inode数目。

使用du -h可以查看当前目录下每个文件所占实际硬盘空间大小。

如果文件都是大于4KB,甚至是几M。几G的文件,那么建议block还是尽量的大一点,这样inode可以少记几个地址。

如果文件大部分都是1K以下的,那么使用4K作为block size就会有些浪费。

来自为知笔记(Wiz)

时间: 2024-08-24 14:21:43

linux文件系统初学的相关文章

linux 文件系统笔记

文件格式: windows:PE linux:  ELF 文件系统: rootfs FHS:规定linux应该创建哪些目录 /下的目录结构: /boot: 系统启动相关的文件,如内核,initrd,以及 grub(bootloader) /dev :设备文件(例如:光盘,cdrom) 类型: 块设备:随机访问, 数据块 字符设备:线性访问, 以字节为单位 设备号:主设备号(major),次设备号(minor) /etc:  配置文件(绝大多数为纯文本格式) /home: 用户的家目录,默认为/h

【转】LINUX文件系统剖析

引自:http://www.ibm.com/developerworks/cn/linux/l-linux-filesystem/   在文件系统方面,Linux? 可以算得上操作系统中的 "瑞士军刀".Linux 支持许多种文件系统,从日志型文件系统到集群文件系统和加密文件系统.对于使用标准的和比较奇特的文件系统以及开发文件系统来说,Linux 是极好的平台.本文讨论 Linux 内核中的虚拟文件系统(VFS,有时候称为虚拟文件系统交换器),然后介绍将文件系统连接在一起的主要结构.

Linux文件系统

文件系统与目录结构 文件系统 1.文件和目录被组织成一个单根倒置数结构 2.文件系统从根目录下开始,用"/"表示 3.根文件系统(rootfs):root filesystem 4.文件名称区分大小写 5.以.开头的文件为隐藏文件 6.路径分隔符:/ 7.文件的两类数据: 元数据(metadata)和 数据(data) 8.文件系统分层结构:LSB (Linux Standard Base) 9.FHS(Filesystem Hierarchy System) 文件名规则 1.文件名最

linux文件系统索引节点浅析

索引节点,Inode是Index Node的缩写,存储于文件系统上的任何文件都可以用索引节点来表示,所以也可以说索引节点是整个linux文件系统的基础.操作系统在读取硬盘的时候不是一个块一个块的来读取信息,因为这样做的话效率太低,文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者.文件的创建日期.文件的大小等等.这种储存文件元信息的区域就叫做inode,中文译名为"索引节点". 在Linux系统中,文件系统主要分为两部分,

嵌入式 Linux根文件系统移植(一)——Linux文件系统简介

嵌入式 Linux根文件系统移植(一)--Linux文件系统简介 本文对文件系统分析的代码来源于linux 2.6.35.7版本. 一.文件系统的体系结构 文件系统是对存储设备上的数据和元数据进行组织的机制,便于用户和操作系统的交互.Linux支持多种文件系统,文件系统接口实现为分层的体系结构,将用户接口层.文件系统实现和操作存储设备的驱动程序分隔开.Linux文件系统的体系结构如下: 用户空间包含一些应用程序(例如,文件系统的使用者)和 GNU C库(glibc),为文件系统调用(打开.读取.

linux --> 文件系统十问

文件系统十问 参考:http://djt.qq.com/article/view/620 关于Linux文件系统相关的问题: 1.机械磁盘随机读写时速度非常慢,操作系统是采用什么技巧来提高随机读写的性能的? 2.touch一个新的空文件占用磁盘空间吗? 占用的话占用多少? 3.新建一个空目录占用磁盘空间吗?占用多少?和新建一个文件相比,哪个占用的更大? 4.你知道文件名是记录在磁盘的什么地方吗? 5.文件名最长多长?受什么制约? 6.文件名太长了会影响系统性能吗?为什么会产生影响? 7.一个目录

linux文件系统学习总结

linux最优秀的特点在于它是多用户多任务的环境,而且对于linux来讲一切皆文件,提到文件这个概念就免不了提文件相关的权限与属性的概念,那相关文件的属性记录在硬盘的哪个地方呢?这就需要了解linux的文件系统是如何记录文件,如何读取文件. 大家都知道硬盘作为存储介质,如果要使用硬盘存储数据需要对硬盘进行分区,格式化之后才可以存储数据.那为什么要对硬盘进行分区呢?因为我们必须要告诉操作系统:"这块硬盘可以访问的区域是有A柱面到B柱面",只有这样,操作系统才能控制硬盘磁头去A~B范围内的

Vim,find,bash,Linux文件系统的特殊权限2015.8.30作业

一   Vim 1.vim的使用方法 1.1 三种模式化 编辑模式.输入模式.末行模式 1.2 模式转换 编辑模式 --> 输入模式: i:在当前光标所在字符的前面,转为输入模式 a:在当前光标所在字符的后面,转为输入模式 o:在当前光标所在行的下方,新建一行,并转为输入模式 I:在当前光标所在行的行首,转为输入模式 A:在当前光标所在行的行尾,转为输入模式 O:在当前光标所在行的上方,新建一行,并转为输入模式 输入模式 --> 编辑模式:ESC 编辑模式 --> 末行模式:: 末行模式

攻城狮在路上(叁)Linux(二十六)--- linux文件系统的特殊查看与操作

一.boot sector 与 super block的关系: 1.boot sector用于存放引导装载程序,占用1024个字节. 2.super block的大小也为1024字节. 3.若block大小为1k,则boot sector和super block各占一个block. 4.若block大于1K(2K/4K)时,则两者都位于第一个block中. 二.磁盘空间的浪费问题:暂不考虑. 三.利用GUN的parted命令进行分区行为: 因为fdisk不支持高于2TB的分区. 命令格式: pa