一.硬盘的组成与分区

1.物理组成

*圆形的盘片(主要记录数据的部分)

*机械手臂与机械手臂上的磁头(可读写盘片上的数据)

*主轴马达,可以转动盘片,让机械手臂的磁头在盘片上写数据。

*扇区为最小的物理储存单位,每个扇区为512bytes

*将扇区围城一个圆,那就是柱面,柱面时分区最小的单位

*第一个扇区最重要,里面有一不过哦安主引导记录(MBR)及分区表,其中MBR占有446bytes,而partition table则占有64bytes

*/dev/sd【a-p】【1-15】:为SCSI,SATA,USB,Flash等接口的磁盘文件名

*/dev/hd【a-d】【1-63】:为IDE接口的磁盘文件名

2.分区

磁盘分区指的是告诉操作系统“这块磁盘在此分区可以访问的区域时有A柱面到B柱面之间的块”,如此一来操作系统就能够知道他可以在所制定的块内进行文件数据的读,写,查等操作了。也就是说,磁盘分区意即指定分区的起始与结束柱面就可以。

那么指定分区的柱面范围在哪里?就是的一个扇区的分布表中。但是因为分区表既有64bytes而已,因此最多只能记录四条分区的记录,这四条记录我们称为主分区或扩展分区,其中扩展分区还可以分出逻辑分区,而能被格式化的则仅有主分区与逻辑分区而已

*主分区在一朵可以有四个(硬盘的限制)

*扩展分区最多只能有一个(操作系统的限制)

*逻辑分区是由扩展分区持续分出来的分区

*能被格式化后作为数据访问的分区为主要分区与逻辑分区,扩展分区无法格式化

*逻辑分区的数量以操作系统而不同,在linux中,IDE硬盘最多有59个逻辑分区(5号到63号),SATA硬盘则有11逻辑分区(5号到15号)

二.文件系统特性

我门知道磁盘分区完毕后还需要进行格式化,之后操作系统才能够使用这个分区。为何要进行格式化呢?这是因为没中操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区格式化,以成为操作系统能够利用的文件系统格式。

传统的磁盘与文件系统的应用中,一个分区就是只能被格式化成为一个文件系统,所以我们可以说一个文件系统就是一个分区。但是由于LVM技术与软磁盘阵列这些技术的利用,我们在格式化时不再说成针对分区格式化了,通常我们可以称呼一个可被挂载的为一个系统文件而不是一个分区。

文件系统时如何运行呢,这与操作系统的文件数据有关。例如linux操作系统的文件权限(rwx)与文件属性。文件系统通常会将这两部分的数据分别放在不同的块,权限与属性放置到inode中,至于世纪数据则放到data block块中。另外,还有一个超级块,会记录整个文件系统的整体信息,包括inode与block的总量,使用量,剩余量等。

每个inode与block都有编号,至于这三个数据的意义可以简略说明如下:

*super block:记录文件系统的整体信息,包括inode/block的总量,使用量,剩余量,以及文件系统的格式与相关信息等

*inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码

*block:实际记录文件的内容,若文件太大时,会占用多个block

由于每个inode与block都有编号,而每一个文件都会占用一个inode,inode内则有文件数据放置的block的号码。因此,我们可知,如果能够找到文件的inode的话,呢么自然就会知道这个文件所放置数据的block号码,当然也就能够读出该文件的实际数据了。这是个比较有效率的做法,因为如此一来我们的磁盘就能够在短时间内读取出全部的数据。读写性能较好。

linux磁盘与文件管理的更多相关文章

  1. 攻城狮在路上(叁)Linux(十七)--- linux磁盘与文件管理概述

    一.复习知识点: 1.扇区是最小的物理存储单位,大小为512bytes. 2.扇区组成一个圆,成为柱面,柱面是分区的最小单位. 3.第一个扇区很重要,因为包含了MBR(446字节)和分区表(64字节) ...

  2. [Linux]常用命令之【du/fdisk/df/ls】#磁盘管理/文件管理#

    本文的经典应用场景: 1.查找占用磁盘存储空间最大的目录/文件 2.关于[磁盘分区]的相关概念和实操,详见另一博文:[Linux]磁盘分区 - 博客园/千千寰宇 1 fdisk fdisk := &q ...

  3. linux系统入门—文件管理

    目录 linux系统入门-文件管理 系统目录结构 目录管理 linux系统入门-文件管理 系统目录结构 几乎所有的计算机操作系统都是使用目录结构组织文件.具体来说就是在一个目录中存放子目录和文件,而在 ...

  4. 【转载】Linux磁盘管理:LVM逻辑卷管理

    Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理 这篇随笔将详细讲解Linux磁盘管理机制中的LVM逻辑卷的基本概念以及LVM的工作原理!!! 一. ...

  5. linux磁盘分区模式

    linux磁盘分区模式 模式一:MBR 1)主分区不超过四个 2)单个分区容量最大2TB 模式二:GPT 1)主分区个数"几乎"没有限制(原因:在GPT的分区表中最多可以支持128 ...

  6. MySQL 调优基础(四) Linux 磁盘IO

    1. IO处理过程 磁盘IO经常会成为系统的一个瓶颈,特别是对于运行数据库的系统而言.数据从磁盘读取到内存,在到CPU缓存和寄存器,然后进行处理,最后写回磁盘,中间要经过很多的过程,下图是一个以wri ...

  7. <实训|第七天>横扫Linux磁盘分区、软件安装障碍附制作软件仓库

    期待已久的linux运维.oracle"培训班"终于开班了,我从已经开始长期四个半月的linux运维.oracle培训,每天白天我会好好学习,晚上回来我会努力更新教程,包括今天学到 ...

  8. 调整Linux磁盘分区的大小的方法

      昨天数据入库时,一直报错,说磁盘满了,,df -h    一看,发现/目录下只有50G空间,已使用49G:我的程序和dbss都安装在/目录下,ftp到的数据放在/data下的一个子目录下,分解完的 ...

  9. Linux 磁盘管理

    Linux磁盘管理好坏管理直接关系到整个系统的性能问题. Linux磁盘管理常用三个命令为df.du和fdisk. df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 fdisk:用于磁盘分 ...

随机推荐

  1. ActiveMQ (三) Spring整合JMS入门

    Spring整合JMS入门 前提:安装好了ActiveMQ  ActiveMQ安装 Demo结构:   生产者项目springjms_producer: pom.xml <?xml versio ...

  2. 百度Apollo解析——0.使用VSCode编译Apollo项目

    1.安装微软Visual Studio Code 1.1 方法一 开始之前,首先需要安装Ubuntu Make.虽然Ubuntu Make存在Ubuntu15.04官方库中,但是需要Ubuntu Ma ...

  3. 20行核心代码:jQuery实现省市二级联动

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. [转]JQuery 如何选择带有多个class的元素

    比如下面代码需要选择同时带有这几个class的元素,怎么写? 1 <div class="modal fade in"></div> A: 1. 依次过滤 ...

  5. Struts第三天

    OgnlValueStack贯穿整个 Action 的生命周期. 它是ContextMap中的一部分,里面的结构是一个List,是我们可以快速访问数据一个容器.它的封装是由struts2框架完成的. ...

  6. p4377 [USACO18OPEN]Talent Show

    传送门 分析 经典的01分数规划问题 用01背包check即可 代码 #include<iostream> #include<cstdio> #include<cstri ...

  7. Luogu 4363 [九省联考2018]一双木棋chess

    发现数据范围很小,想到状压dp,然后就愣住不会了. 表示太菜了并没有接触过轮廓线dp这种操作. 首先发现合法的操作过程中一定是这样子的: 按照行来看发现每一行单调不递增. 我们用$1$来表示竖着的轮廓 ...

  8. zookeeper集群安装(转)

    转载地址:http://www.blogjava.net/hello-yun/archive/2012/05/03/377250.html 本方法,本人亲自试验,可以成功. ZooKeeper是一个分 ...

  9. Inheritance with EF Code First: Part 1 – Table per Hierarchy (TPH)

    以下三篇文章是Entity Framework Code-First系列中第七回:Entity Framework Code-First(7):Inheritance Strategy 提到的三篇.这 ...

  10. scala中同步块

    private def initializeIfNecessary() { if (!Logging.initialized) { Logging.initLock.synchronized { if ...