Linux File System浅析
来源:互联网 发布:软件项目监理合同 编辑:程序博客网 时间:2024/06/08 17:09
折腾了Linux这么久,对磁盘存储也吃了不少亏,现在总结点Linux文件系统方面的东西。
一、硬件层面
一个真实的机械硬盘物理结构大致如下图所示:
其中磁头和盘片之间的距离是微米数量级,且磁盘内部是真空封闭的,一旦有空气进入,硬盘很容易故障。
对磁盘盘片上的抽象图如下图所示:
在磁盘盘片上主要有三部分划分:
track:磁道,以转轴为中心,划分了许多同心圆,每个圆命名为一个磁道,类似体育场上的跑道
sector:扇区,相邻两个磁道之间的区域,又被划分许多区域,叫做扇区
cynlinder:柱面,对于多盘片的硬盘来说,由于臂杆和磁头固定,为了分区方便,引入柱面概念,一个分区的开始和结束都以柱面进行标识
二、软件层面
典型的ext 文件系统在格式化的时候基本上会划分为多个块组(Block Group)的,每个块组都有独立的 inode/block/super block 系统,整体展示图如下,
其中各块的含义如下:
MBR:master boot record,硬盘的主引导记录,前446字节存放主引导程序,中间64字节存放分区表信息(主分区+扩展分区<=4),最后2个字节是结束标志位。
Super Block:记录此文件系统的整体系统,包括 inode 和 block 的总量、使用量、剩余量,以及文件系统类型等。
Group Descriptor Table:文件系统描述说明,描述每个 block group 的开始与结束的 block 号码。
Block Bitmap:块对照表,用来快速寻找可用的 block 块。
Inode Bitmap:inode对照表,用来快速寻找可用的 inode 块。
Inode Table:存放 inode 块的地方。它们是文件系统的关键。记录了文件的属性,一个文件占用一个 inode,同时包含多个指针,指向了属于该文件的各个 data block 块。
Data Block:真正存放数据的地方。文件太大会占用多个 block 。
我们可以使用dumpe2fs查看superblock和每个区块组的信息:
[root@S5 ~]# dumpe2fs /dev/sda2dumpe2fs 1.41.12 (17-May-2010)Filesystem volume name: <none>Last mounted on: <not available>Filesystem UUID: d50a6d8f-ae89-498b-93bb-abf17f9bf4fdFilesystem magic number: 0xEF53Filesystem revision #: 1 (dynamic)Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_fileFilesystem flags: signed_directory_hashDefault mount options: user_xattr aclFilesystem state: cleanErrors behavior: ContinueFilesystem OS type: LinuxInode count: 1310720Block count: 5242880Reserved block count: 262144Free blocks: 2250122Free inodes: 1075111First block: 0Block size: 4096Fragment size: 4096Reserved GDT blocks: 1022Blocks per group: 32768Fragments per group: 32768Inodes per group: 8192Inode blocks per group: 512Filesystem created: Thu Mar 19 12:24:26 2015Last mount time: Thu Jun 23 07:14:38 2016Last write time: Mon Jun 13 22:33:27 2016Mount count: 833Maximum mount count: -1Last checked: Thu Mar 19 12:24:26 2015Check interval: 0 (<none>)Lifetime writes: 2312 kBReserved blocks uid: 0 (user root)Reserved blocks gid: 0 (group root)First inode: 11Inode size: 256Required extra isize: 28Desired extra isize: 28Journal inode: 8First orphan inode: 172059Default directory hash: half_md4Directory Hash Seed: 191ce352-9cd6-4d24-9773-2908302b1a32Journal backup: inode blocksJournal features: journal_incompat_revokeJournal size: 128MJournal length: 32768Journal sequence: 0x000a2dacJournal start: 1Group 0: (Blocks 0-32767)………….………….………….Block bitmap at 327680 (+0), Inode bitmap at 327681 (+1) Inode table at 327682-328193 (+2) 200 free blocks, 4663 free inodes, 287 directories Free blocks: 328195-328199, 331776-331880, 331882-331919, 336568-336576, 339968-339971, 344064-344072, 344196-344225 Free inodes: 82425-82430, 85226, 85395, 85457-85542, 85544-90112Group 11: (Blocks 360448-393215) Block bitmap at 360448 (+0), Inode bitmap at 360449 (+1) Inode table at 360450-360961 (+2) 0 free blocks, 4713 free inodes, 671 directories…………..
- Linux File System浅析
- Linux file system hierarchy
- Linux File System - Basics
- linux file system
- Embedded Linux - File System
- Linux file system superblock
- linux file System directory
- linux file System inode
- linux file system
- linux File-Handling System Calls
- 剖析 linux file system-Ext2
- linux mount ntfs file system
- Identify Linux File System Type
- linux file system brief intro
- Linux File System brief intro
- Linux文件系统标准 Linux File System Standard
- Linux system call的来龙去脉浅析
- fschange – Linux File System Change Notification
- SQL防注入
- Ajax--表单映射
- (2)oracle管理表
- 程序员的思维修炼
- POJ 2253 Frogger (最短路
- Linux File System浅析
- extern 'c'
- 你必须知道的261个Java语言问题笔记- Java与面向对象
- server-location-配置参数
- linux(Redhat)添加sudoer
- hibernate_query.list()返回的数据类型
- Hadoop(一)
- PYTHON机器学习实战——线性回归 Linear Regression
- 安装docker-compose异常: Failed to connect to github-production-release-XX-.s3.amazonaws.com port 443:连接超