磁盘分区、Linux文件系统
1,磁盘基础概念
1.1,磁盘是存储数据的物理元件。常用的磁盘种类有:scsi、sata、ide等。
ide(Integrated Device Electronics:电子集成驱动器): 磁盘与磁盘控制器集成在一起。特点:并行传输。随着传输速率的提升,传输稳定性不高,反而影响传输速率。价格便宜。传输速率不高。
sata: 串行传输,传输速率高。
scsi(Small Computer System Interface:小型计算机系统接口): 传输速率更高,传输稳定。独立与系统总线的接口,系统占有率低。价格高,一般用于服务器。
1.2,硬盘的物理结构一般由磁头与碟片、电动机、主控芯片与排线等部件组成。当主电动机带动碟片旋转时,副电动机带动一组(磁头)到相对应的碟片上并确定读取正面还是反面的碟面,磁头悬浮在碟面上画出一个与碟片同心的圆形轨道(磁轨或称柱面),这时由磁头的磁感线圈感应碟面上的磁性与使用硬盘厂商指定的读取时间或数据间隔定位扇区,从而得到该扇区的数据内容。所有的盘片都固定在一个旋转轴上,这个轴即盘片主轴。而所有盘片之间是绝对平行的,在每个盘片的存储面上都有一个磁头,磁头与盘片之间的距离比头发 丝的直径还小。所有的磁头连在一个磁头控制器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的半径方向动作,而盘片以每分钟数千转到上万转的速度在高 速旋转,这样磁头就能对盘片上的指定位置进行数据的读写操作。
- 磁道(Track)
- 柱面 (Cylinder)
- 扇区(Sector)
- 磁头(Head)
1.3,磁盘读写原理
- 第一步,首先是磁头径向移动来寻找数据所在的磁道。这部分时间叫寻道时间。
- 第二步,找到目标磁道后通过盘面旋转,将目标扇区移动到磁头的正下方。
- 第三步,向目标扇区读取或者写入数据。到此为止,一次磁盘IO完成,故:
- 对于旋转延时,现在主流服务器上经常使用的是1W转/分钟的磁盘,每旋转一周所需的时间为60*1000/10000=6ms,故其旋转延迟为(0-6ms)。
- 对于存取时间,一般耗时较短,为零点几ms。
- 对于寻道时间,现代磁盘大概在3-15ms,其中寻道时间大小主要受磁头当前所在位置和目标磁道所在位置相对距离的影响。
2,磁盘分区
磁盘分区
为什么要进行磁盘分区?
1,保护数据。
2,提示io性能。
3,区分系统与引用程序之间磁盘空间。
4,满足不同文件系统。
分区基本概念:
MBR分区:处于磁盘0号扇区,由引导代码、MBR分区表、MBR结束标志3部分构成,一共占用512个字节。
- 引导代码:占MBR分区的前446字节,系统启动的时候会导入引导代码。如果引导代码被破坏,系统将无法启动。
- MBR分区表:占引导代码后面的64个字节,是整个硬盘的分区表。每个分区使用的字节为16个,所以这确定了MBR分区方式最多只有4个主分区(包含扩展分区在内)。各分区信息的柱面地址存放在分区表。
- MBR结束标志:占用最后2个字节,一直为"55AA"。
分区:由MBR分区表分区信息中柱面终始地址范围内的柱面构成。一般分区由Boot sector、super block、inode、block等信息组成。
- Boot sector:分区引导根扇区。
- super block:描述分区信息的超块。包含以下信息:
- 分区内block与inode的数量
- 挂载标识
- 使用/未使用的block与inode数量
- block与inode的大小
- 文件系统挂载时间,最近写入时间、修改时间。
- inode:节点,描述文件元信息。包含以下信息:
- 文件字节数
- 文件拥有者id
- 组id
- 文件读、写、执行权限
- 文件时间戳。包含文件创建时间ctime、修改时间mtime、打开时间atime
- 文件链接数(软连接、硬连接)
- 文件数据block存储地址
- block:块,文件实际数据存储单位。用于存放实际数据。文件系统中最小存储单元。一般为扇区大小的2^n倍。有1k、2k、4k
分区步骤:
- 列出磁盘分区情况。语法:fdisk -l 列出磁盘分区情况。
- 磁盘分区。语法:fdisk 未分区磁盘。
- 格式化磁盘。语法:mkfs -t 文件系统类型 准备分区磁盘。此过程初始化super block信息。
- 挂载磁盘。语法:mount 磁盘 目录。将分区文件系统绑定到根目录下,告诉操作系统分区文件系统可以被使用。
普通文件与目录文件创建:
创建文件,会在当前目录所属分区下分配一个inode,至少一个data block。并将新创建的文件名加入到当前目录文件的data block。普通文件与目录文件的区别在于data block中存储的数据。
普通文件中存放的是文件数据,目录文件存放的是当前目录下普通文件与目录文件的节点号与名称组成的映射数组、父目录节点号、自身节点号。
举个寻径例子:
终端命令输入路径 /var/test.txt。操作系统寻找路径如下: 首先会寻找挂载到‘/’下的磁盘分区(事实上操作系统存在缓存,不一定直接到磁盘寻找),在节点表中寻找‘/’的节点号,然后取data block数据。这些数据是节点号与文件名称的数组项。根据var文件名匹配到该文件的节点号。重复上述步骤,最终找到test.txt的文件。
Linux文件系统类型:
ReiserFS:ReiserFS 是一种文件系统格式。Linux内核从2.4.1版本开始支持ReiserFS。ReiserFS原先是Novell公司的SuSE Linux Enterprise采用的默认文件系统,直到2006年10月12日其宣称将在未来的版本改采 ext3 为默认。和同样在 Linux Kernel 2.4 版本下的 ext2 及 ext3 相比较,处理 4KB 以下的小文件时(tail packing enable),ReiserFS 的速度快了 10 到 15 倍[3]。但是,有些目录的操作在 ReiserFS 上面并不同步,(包括像 unlink(2)),可能会导致一些重度依赖文件锁(file-based lock)机制的应用程序上面数据的毁损。ReiserFS 在一个单一复合B+树中存储文件的亚数据信息(stat item)、目录文件信息(directory items)、索引节点中的块列表(indirect items),这些信息都有唯一的标识号作为B+树的索引值。
ext2:ext2 文件系统(也称为第二扩展文件系统)旨在克服早期 Linux 版本中使用的 Minix 文件系统的缺点。多年来,该文件系统一直广泛应用于 Linux。但 ext2 中没有日志,现在基本上已被 ext3 和最新的 ext4 所取代。
ext3:ext3 文件系统向标准 ext2 文件系统添加了日志功能,因此是一个非常稳定的文件系统的一个演化发展。它在大多数情况下提供合理的性能并且仍旧在改进。由于它在可靠的 ext2 文件系统上添加了日志功能,因此可以将现有 ext2 文件系统转换为 ext3 文件系统,并且在必要时还可以转换回来。
ext4:ext4 是作为 ext3 的扩展来启动的,它通过增加存储限制和提高性能来满足更大文件系统的需求。为了保留 ext3 的稳定性,在2006 年 6 月,该扩展被拆分成一个新的文件系统,即 ext4。ext4 文件系统在 2008 年 12 月正式发布,包含在 2.6.28 内核中。
vfat:vfat 文件系统(也称为 FAT32)没有日志功能,且缺乏完整的 Linux 文件系统实现所需的许多特性。它可用于在 Windows 和 Linux 系统之间交换数据,因为 Windows 和 Linux 都能读取它。不要将这个文件系统用于 Linux,除非要在 Windows 和 Linux 之间共享数据。
XFS:XFS 文件系统拥有日志功能,包含一些健壮的特性,并针对可伸缩性进行了优化。XFS 通常是相当快的。在大文件操作方面,XFS 在所有测试中一直处于领先地位。XFS 的性能非常接近 ReiserFS,并在大多数测试指标上都超过了 ext3。
IBM JFS:IBM 的 Journaled File System (JFS),目前用于 IBM 企业服务器,专为高吞吐量服务器环境而设计。它可用于 Linux,包含在几个发行版中。要创建 JFS 文件系统,使用 mkfs.jfs 命令。
选择文件系统:
- XFS 的性能非常接近 ReiserFS,并在大多数测试指标上都超过了 ext3。
- 目前,ReiserFS 和 ext3 删除文件要比 XFS 快得多。
软连接与硬连接:
可以用ln命令对一个已经存在的文件再建立一个新的连接,而不复制文件的内容。连接有软连接和硬连接之分,软连接又叫符号连接。它们各自的特点是:
硬连接:是给文件一个副本,原文件名和连接文件名都指向相同的物理地址。目录不能有硬连接;硬连接不能跨越文件系统(不能跨越不同的分区)文件在磁盘中只有一个拷贝,节省硬盘空间;修改其中一个,与其连接的文件同时被修改。如果删除其中任意一个其余的文件将不受影响。由于删除文件要在同一个索引节点属于唯一的连接时才能成功,因此可以防止不必要的误删除。
符号连接(软连接):用ln -s命令建立文件的符号连接符号连接是linux特殊文件的一种,作为一个文件,它的数据是它所连接的文件的路径名。类似windows下的快捷方式。
当然删除这个连接,也不会影响到源文件,但对连接文件的使用、引用都是直接调用源文件的。
文件管理命令
磁盘和文件空间 :fdisk df du
文件目录与管理: cd pwd mkdir rmdir ls cp rm mv
查看文件内容 cat、tac、more、less、head 、tail
文件目录与权限 :chmod chown chgrp umask
文件查找:which、whereis、locate、find、find
操作系统文件系统结构涉及到三个层面接口:用户层面 --> VFS --> devices。涉及到内核态与用户态。这块涉及到操作系统运行时分析,后续跟进。
鄙人新手,欢迎指教。
感谢前辈们的贡献,参考:
https://www.cnblogs.com/sammyliu/p/4521315.html
http://www.178linux.com/9960