磁盘基本概念:

硬盘结构:盘片+磁头(盘片可以有多个),工作时盘片高速运转,磁头读取数据

U盘、SSD固态硬盘是用闪存来制作的设备,没有盘片和磁头

Linux磁盘文件名:

Linux所有设备都抽象为文件保存在 /dev 目录下

早期的IDE接口的磁盘在linux中的文件名为 /dev/hd[a-z]

SATA/USB/SAS 等磁盘接口都是使用SCSI模块来驱动,因此这些接口的磁盘装置文件都为:/dev/sd[a-z],

不过近年来大部分linux发行版本已经将IDE界面的磁盘文件名也仿真成SATA一样了,所以不必再关心不同接口磁盘装置文件名问题了,不过还有虚拟磁盘;

虚拟磁盘的文件名为:/dev/vd[a-p]

如果你的电脑上插了多个磁盘,这时就要根据Linux核心侦测到磁盘的顺序来决定他的装置文件名了。(跟实际插槽代号无关)

磁盘分区机制:

主流的磁盘分区机制有两种:

MBR(Master Boot Record)格式和 GPT(GUID partition table)格式;

分区是软件概念;

MBR的分区格式:

早期的Linux系统为了兼容Windows的磁盘,使用的是支持Windows的MBR的方式来处理开机管理程序与分区表;

开机管理记录和分区表通通放在磁盘的第一个扇区,这个扇区通常是512bytes大小,里面保存了这两个数据:

1、主要启动记录区:可以安装开机管理程序的地方,有446bytes

2、分区表:记录整颗分区的状态,有64bytes

其实所谓的 分区 只是针对那个64bytes的分区表进行设定而已

MBR支持的分区数量有限:四个分区记录(主分区或扩展分区);

MBR分区机制大多使用在BIOS的PC设备;

MBR支持32bit和64bit;

MBR只能分区2.2T的硬盘,超过2T的硬盘将只能使用2.2T空间(有第三方工具可以解决);

将硬盘分区超过四个分区槽:

在上图中,硬盘的四个分区记录只适用了两个,P1为主分区(Primary),P2为扩展分区(Extended),然后在扩展分区内继续做分区的记录,

这五个由扩展分区继续切出来的分区,称为逻辑分区(Logical partition)

注意:

扩展分区是不能被格式化的(它是不能用的),它的作用就是占用一个主分区,然后区分成多个逻辑分区

上图的分区槽在linux系统中的装置文件名分别如下:

P1:/dev/sda1

P2:/dev/sda2

L1:/dev/sda5

L2:/dev/sda6

L3:/dev/sda7

L4:/dev/sda8

L5:/dev/sda9

为什么没有 /dev/sda3 和 /dev/sda4 呢?

因为前面四个号码都是保留给主分区或扩展分区用的!逻辑分区的装置名称号码都是由5号开始

由于硬盘的第一个扇区所记录的是分区表和MBR,而且只要读取硬盘都会先由这个扇区读起,所以如果硬盘的第一个扇区物理实体坏掉了,那这个硬盘就没用了

GPT分区格式:

过去一个扇区大小是512bytes,现在已经有4k的扇区设计出现。为了兼容所有的硬盘,在扇区的定义上,大多会使用逻辑区块地址(Logical Block Address,LBA)来处理,GPT将硬盘所有区块以此LBA来规划,第一个LBA称为LBA0(从0开始编号)

GPT使用了34个LBA区块来记录分区!同时与过去MBR仅有一的区块,被干掉就死光光的情况不同, GPT除了前面34个LBA之外,整个硬盘的最后33个LBA也拿来作为另一个备份

LBA0 (MBR 相容区块)

与MBR模式相似的,这个相容区块也分为两个部份,一个就是跟之前446 bytes相似的区块,储存了第一阶段的开机管理程式!而在原本的分区表的记录区内,这个相容模式仅放入一个特殊标志的分割,用来表示此硬盘为GPT格式之意。

LBA1 (GPT 表头纪录)

这个部份记录了分区表本身的位置与大小,同时纪录了备份用的GPT分割,, 同时放置了分区表的检验机制码(CRC32 ),作业系统可以根据这个检验码来判断GPT 是否正确。若有错误,还可以通过这个记录区来取得备份的GPT

LBA2-33 (实际记录分区数据处)

从LBA2区块开始,每个LBA都可以记录4笔分割记录,所以在预设的情况下,总共可以有4*32 = 128笔分割记录喔!因为每个LBA有512bytes,因此每笔记录用到128 bytes的空间,除了每笔记录所需要的识别码与相关的记录之外,GPT在每笔记录中分别提供了64bits来记载开始/结束的磁区号码,因此,GPT分割表对于单一分割槽来说,他的最大容量限制就会在『 2 64 * 512bytes = 2 63 * 1Kbytes = 2 33 *TB = 8 ZB 』,要注意1ZB = 2 30 TB

GPT 分区已经没有所谓的主分区、扩展分区、逻辑分区的概念,每一个分区都可以拿来格式化使用

GPT向后兼容MBR

必须使用64位

GPT必须在支持UEFI的硬盘上才能使用

FDISK分区工具:

fdisk是一个基于MBR的分区工具,它是无法使用GPT格式分区的

linux磁盘分区笔记的更多相关文章

  1. Linux磁盘分区(一)之fdisk命令

    Linux磁盘分区(一)之fdisk命令转自:https://www.cnblogs.com/machangwei-8/p/10353683.html 一.fdisk 的介绍fdsik 能划分磁盘成为 ...

  2. linux磁盘分区模式

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

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

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

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

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

  5. Linux磁盘分区与格式化

    磁盘分区格式说明 linux分区不同于windows linux下分区标示: 例如:hda1 hd这两个字母表示分区所在的设备类型,hd标示IDE类型硬盘,sd表示SCSI类型硬盘 第三字母a标示硬盘 ...

  6. Linux fdisk命令参数及用法详解---Linux磁盘分区管理命令fdisk

    fdisk 命令 linux磁盘分区管理 用途:观察硬盘之实体使用情形与分割硬盘用. 使用方法: 一.在 console 上输入 fdisk -l /dev/sda ,观察硬盘之实体使用情形. 二.在 ...

  7. Linux 磁盘分区修改与管理

    --Linux 磁盘分区修改与管理 -----------------------------2014/03/05 1. 目的,将磁盘卷/dev/cciss/c0d0p8修改成新的用途. 原: /de ...

  8. Linux 磁盘分区方案简析

    Linux 磁盘分区方案简析 by:授客 QQ:1033553122   磁盘分区 任何硬盘在使用前都要进行分区.硬盘的分区有两种类型:主分区和扩展分区.一个硬盘上最多只能有4个主分区,其中一个主分区 ...

  9. Linux磁盘分区与文件系统

    一 Linux磁盘分区与文件系统 在Linux中常见的操作系统有:ext2 ext3 ext4 xfs btrfs reiserfs等文件系统的作用主要是明确磁盘或分区上的文件存储方法以及数据结构,L ...

随机推荐

  1. mysql 几种日志

    mysql 5.5 有以下几种日志: 错误日志(error log): log-err 查询日志(general  query log): log 慢查询日志: -log-slow-queries  ...

  2. 关于async 中return 和 return await 的差异

    小七平时在使用ES2017的 async功能经常会有如下: const bluebird = require('bluebird'); async function doSomething() { a ...

  3. ES6中var/let/const的区别

    let的含义及let与var的区别: let 声明的变量只在它所在的代码块有效: 如下: for (let i = 0; i < 10; i++) { console.log(i); } con ...

  4. css的position

    1.标准流2.浮动3.定位块级元素:div.H1-H6.有序及无序列表(ol.ul.li).p内联元素:a.span.img 1. 介绍 1.1 说明 Position 属性:规定元素的定位类型.即元 ...

  5. Buzzsumo大型教程(内容营销+外链outreach必备)营销神器

    做内容营销,Buzzsumo基本是必备工具.做谷歌白帽SEO的百分八十应该都用过或者至少接触过.在国外就更不用说了,很多网络营销大牛眼里,Buzzsumo的重要程度绝对超过Ahrefs! Buzzsu ...

  6. C语言:开平方根sqrt程序02

    #include <stdio.h> int sqrt01(int x); void main(void){ int x=49,y; y=sqrt01(x); if(y<0) pri ...

  7. 20145338 《网络对抗》逆向及Bof基础实验

    逆向及Bof基础实验 实践目标 ·本次实践的对象是一个名为pwn1的linux可执行文件. ·该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. ·该程序同时包含 ...

  8. MySQL MERGE存储引擎

    写这篇文章,主要是因为面试的时候,面试官问我怎样统计所有的分表(假设按天分表)数据,我说了两种方案,第一种是最笨的方法,就是循环查询所有表数据(肯定不能采用):第二种方法是,利用中间件,每天定时把前一 ...

  9. mp4文件解析(纯c解析代码)

     参考链接:1. mp4文件格式解析 https://www.cnblogs.com/ranson7zop/p/7889272.html   2. MP4文件格式分析及分割实现(附源码) https: ...

  10. JDK 1.8 -> 1.7

    电脑刚开始装的是1.8 version, 然后又需要用到1.7. 所以就要把1.8 降为1.7, 网上有很多说把1.8删掉,这种做法我是不建议的,那么要用的时候呢?又得装回来多蛋疼.. JDK 1.8 ...