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就会有些浪费。
linux文件系统初学的更多相关文章
- linux文件系统体系结构 和 虚拟文件系统(VFS)
图 1. Linux 文件系统组件的体系结构 用户空间包含一些应用程序(例如,文件系统的使用者)和 GNU C 库(glibc),它们为文件系统调用(打开.读取.写和关闭)提供用户接口.系统调用接口的 ...
- Linux文件系统
今天学习了Linux文件系统,现在来做个小总结. 首先Linux中一切都是文件,下面这个清单是Linux系统的顶层目录结构. 清单 1. Linux 系统的顶层目录结构 / 根目录 ├── bin 存 ...
- linux 文件系统简介
linux文件系统简介 文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录.挂载基 ...
- Linux文件系统层次结构标准
该标准的目的是定义Linux文件系统的标准路径,使得开发者和用户可以在合理的位置找到需要的东西. Linux的文件布局的大体想法是将文件和目录分为如下3组: 对运行Linux的某一特定系统唯一的文件和 ...
- linux文件系统节点详解
linux文件系统有两层结构,逻辑结构和物理结构.也就是inode和block. 每个文件都有一个inode, 记录文件属性:权限,时间还有最重要的block号码. block是实际存放文件内容的地方 ...
- Linux文件系统应用---系统数据备份和迁移(用户角度)
1 前言 首先承诺:对于从Windows系统迁移过来的用户,困扰大家的 “Linux系统下是否可以把系统文件和用户文件分开到C盘和D盘中” 的问题也可以得到完满解决. 之前的文章对Linux的文 ...
- linux 文件系统解析及相关命令
简介 文件系统就是分区或磁盘上的所有文件的逻辑集合. 文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中. 不同Lin ...
- 磁盘、分区及Linux文件系统 [Disk, Partition, Linux File System]
1.磁盘基础知识 1.1 物理结构 硬盘的物理结构一般由磁头与碟片.电动机.主控芯片与排线等部件组成:当主电动机带动碟片旋转时,副电动机带动一组(磁头)到相对应的碟片上并确定读取正面还是反面的碟面,磁 ...
- linux文件系统简介
文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录.挂载基本原理.文件存储结构.软链接 ...
随机推荐
- office激活方式,超简单
只需要安装个小小的程序,亲测安全可靠 详情点击下方链接 https://blog.csdn.net/weixin_40941966/article/details/80872533
- 123467123456#1#-----com.twoapp.DaDiShuGame01--前拼后广--现实打地鼠游戏jiemei
com.twoapp.DaDiShuGame01--前拼后广--现实打地鼠游戏jiemei
- C#子线程执行完后通知主线程(转)
其实这个比较简单,子线程怎么通知主线程,就是让子线程做完了自己的事儿就去干主线程的转回去干主线程的事儿. 那么怎么让子线程去做主线程的事儿呢,我们只需要把主线程的方法传递给子线程就行了,那么传递方法 ...
- Canal——Canal-Adapter源码在IDEA部署运行
一.下载源码 下载地址:https://github.com/alibaba/canal 我这里用的是canal-1.1.4版本 源码结构 client-adapter项目就是本次要部署运行的 源码导 ...
- 【leetcode_easy_$】577. Employee Bonus
problem 577. Employee Bonus 参考 1. Leetcode_easy_$_577. Employee Bonus; 2. https://www.cnblogs.com/li ...
- Tools - 笔记记录方法Markdown
Markdown 简介 轻量级标记语言,使用易读易写的纯文本格式和类似HTML的标记语法来编写具有一定的格式的文档. 语法简洁直观,易学易用,可以使用任何喜爱的文本编辑器来阅读和写作. 可精- 确控制 ...
- Xena L23网络测试仪Valkyrie使用技巧100例:使用Xena官方在线演示设备 (编号00)
需求# 1.新用户:没有硬件,想看看软件长什么样,好不好用,风格如何,怎么办? 2.代理商:没有硬件,想给客户Show一下Xena高大上的软件,怎么办? 3.老用户:邮件推送了新的软件版本,据说很多新 ...
- 分布式消息通信之RabbitMQ_Note
目录 1. RabbitMQ 安装 2. RabbitMQ 应用场景,特性 3. 官网入门指引 4. RabbitMQ 工作模型 5. RabbitMQ 主要的几种交换机类型 6. Java API的 ...
- 【CodeForces】1172E. Nauuo and ODT
题解 看了一遍题解(以及代码)但是没写代码-- 后来做梦的时候忽然梦到了这道题--意识到我需要补一下-- 这道题就是,对于每种颜色,把没有染成这种颜色的点标成黑点,然后计算每个联通块的平方 然后每个点 ...
- 第三坑:jar包编译版本
这个是之前往was上发应用的时候踩的一个坑,当时我们知道was的jdk版本是1.6,然后我们是用1.7的jdk,编译版本选的是1.6,然后放上去不对,我们以为是编译的问题,然后又下载了1.6的jdk, ...