Linux文件设备

要理解Linux,首先要理解Linux文件结构

在Linux操作系统中,几乎所有的设备都位于/dev目录中

名称 作用 位置
SATA接口 电脑硬盘接口 /dev/sd[a-p]
U盘 可移动设备 /dev/sd[a-p]
Virtio接口 提供虚拟化 /dev/vd[a-p]
软盘驱动器 软驱,逐渐淘汰 /dev/fd[0-7]
打印机 提供打印能力 /dev/lp[0-2] (25针打印机)  /dev/usb/lp[0-15] (USB接口)
鼠标 连接鼠标 /dev/input/mouse[0-15] /dev/psaux /dev/mouse
CD-ROM DVD-ROM   /dev/scd[0-1] /dev/sr[0-1] /dev/cdrom
磁带机   /dev/ht0 /dev/st0 /dev/tape

由于SATA,USB,SAS都是以SCSI模块进行驱动的,所以这些接口的磁盘设备文件名都是/dev/sd[a-p]的格式

MBR和GPT

MBR(Master Boot Record):

MBR因为只有512字节大小,所以不能载入操作系统的核心,而载入能够载入计算机核心的程序,即引导程序。

使用MBR的方式来处理引导程序和分区表,而处理引导程序的记录区(目的是加载内核文件)和分区表则在磁盘的第一个扇区,这个扇区具有512字节的大小,其中分区表有64字节,所以最多仅能有四组记录区(每组分组表仅有16字节),记录区记录了该区段的启动和结束的柱面号码。而这四组记录区被称为主要区或者拓展区。

我们也可以利用额外的扇区记录更多的分区,类似Windows系列的划分硬盘分区至5个及以上。

由扩展分区扩展出来的分区叫做逻辑分区,位于操作系统中的位置是:/dev/sda[5+]

如果扩展分区被破坏,那么整个逻辑分区将被删除,因为逻辑分区的信息都记录在扩展分区里面。

并且考虑到磁盘的连续性,一般将扩展分区的柱面号码分配到最后的柱面内。

从《鸟叔的Linux私房菜》中我们可以得到如下的信息:

  • 主要分区与扩展分区最多可以有4个

  • 扩展分区最多只能有1个

  • 逻辑分区由扩展分区持续划分出来的分区

  • 能够被格式化后作为数据存取的分区是主要分区和逻辑分区,扩展分区无法格式化。

  • 逻辑分区的数量依据操作系统而不同,在Linux中的SATA硬盘已经可以突破了63个以上的分区限制。

同样由于MBR使用的扇区磁盘小,导致它的容量,能够存储信息就小,随着硬件设备的逐渐发展,暴露出的弊病也就越来越明显:

  • 操作系统无法使用2.2TB以上的磁盘容量(每一个)

  • MBR仅有一个区块,如果被破坏后很难恢复(牵一发而动全身)

解决方法:

为了支持能够大于2T的硬盘空间,微软和英特尔公司在可扩展接口(Extensible Fireware Interface)中开发了全局唯一标识符(Globally unique identifier GUID),进而全面支持大于2T的硬盘空间在企业中的应用。


GPT(GUID Partion table)

GPT使用逻辑区块地址(Logical basic address)来处理4K的扇区,这是MBR解决不了的。同时GPT的第一个逻辑分区LBA0为MBR兼容模块。在这个模块中存放了启动引导程序与一个特殊标识符,这个标识符用来保护磁盘。

而LBA1则是GPT表头记录,记录了分区表本身的位置和大小,同时记录了备份用的GPT分区放置的位置。

而LBA2-LBA33区块是用来记录分区信息的,每个LBA能够由4组分区记录,因为每个LBA有512个字节,所以每组记录用到了128字节。

由于GPT在每组记录中使用了64位来记录开始/结束的扇区号码,所以单一分区的最大容量为2^64*512字节==8ZB


GRUB

多操作系统引导程序,允许用户在计算机内有多个操作系统,并且在计算机启动时选择希望它运行的操作系统

硬盘的规划,是熟练掌握Linux的第一步,因为Linux以文件目录作为首要管理方式的。

所以一般刚开始学习Linux的时候,我们需要了解Linux的分区方式

最简单的分区方式:

仅仅划分出根目录/和交换分区Swap,具有MBR一样的缺点,牵一发而动全身,只要有一个小心接坏掉,那么整个根目录就会损毁

麻烦一点的分区方式:

通过分析主机的用途来进行划分:

一些比较大的且读写频繁的目录:

  • /boot

  • /

  • /home

  • /var

  • swap

Linux-两种磁盘分区方式的更多相关文章

  1. Linux下的两种磁盘分区工具的使用

    如何使用fdisk和parted分区工具来进行硬盘分区,下面我来说一下在Linux系统中这两种硬盘分区工具的使用方法:     ----------fdisk分区工具----------       ...

  2. linux初学者-磁盘分区方式篇

    linux初学者-磁盘分区方式篇 一般的计算机都会采用mbr分区方式,这种分区方式只能够建立四个主分区,如果还需要或更多的分区,就需要将其中一个主分区建立成一个扩展分区,在里面建立逻辑分区,这些分区信 ...

  3. Linux共享库两种加载方式简述

      Linux共享库两种加载方式简述  动态库技术通常能减少程序的大小,节省空间,提高效率,具有很高的灵活性,对于升级软件版本也更加容易.与静态库不同,动态库里面的函数不是执行程序本身 的一部分,而是 ...

  4. Linux学习(CentOS-7)---磁盘分区(概念、分区方法、分区方案)

    1磁盘分区相关的概念 1.1什么是磁盘 磁盘就是计算机的外部存储器设备,即将圆形的磁性盘片装在一个方的密封盒子里,这样做的目的是为了防止磁盘表面划伤,导致数据丢失.简单地讲,就是一种计算机信息载体,也 ...

  5. Linux下的磁盘分区和逻辑卷

    一.硬盘接口类型 硬盘的接口主要有IDE.SATA.SCSI .SAS和光纤通道等五种类型.其中IDE和SATA接口硬盘多用于家用产品中,也有部分应用于服务器,SATA是一种新生的硬盘接口类型,已经取 ...

  6. 牛客网Java刷题知识点之Map的两种取值方式keySet和entrySet、HashMap 、Hashtable、TreeMap、LinkedHashMap、ConcurrentHashMap 、WeakHashMap

    不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...

  7. Oracle数据库的两种授权收费方式介绍!

    首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...

  8. Linux Shell查看磁盘分区,内存使用,CPU使用率

    Linux Shell查看磁盘分区,内存使用,CPU使用率 #!/bin/bash #disk_used_rate Location=/dev/xvdb Disk_Used_Rate=$(df -h ...

  9. linux系统查看磁盘分区使用空间

    Df命令是linux系统以磁盘分区使用空间:df -hl

随机推荐

  1. 一篇文章图文并茂地带你轻松学完 JavaScript 事件循环机制(event loop)

    JavaScript 事件循环机制 (event loop) 本篇文章已经默认你有了基础的 ES6 和 javascript语法 知识. 本篇文章比较细致,如果已经对同步异步,单线程等概念比较熟悉的读 ...

  2. 年度账单h5 移动端兼容问题以及优化建议(vue)

    定时器 vue实例中定义timer多余,创建的定时器代码和销毁定时器的代码没有放在一起,通常很容易忘记去清理这个定时器,不容易维护:建议使用this.$once('hook:beforeDestory ...

  3. BZOJ3238 [Ahoi2013]差异 【SAM or SA】

    BZOJ3238 [Ahoi2013]差异 给定一个串,问其任意两个后缀的最长公共前缀长度的和 1.又是后缀,又是\(lcp\),很显然直接拿\(SA\)的\(height\)数组搞就好了,配合一下单 ...

  4. Luogu 2017 Autumn Camping 游记

    颓得不行的我到D2才想起来自己可以写一篇low得不能再low的游记,然后就动笔了...... Day0 愉快地看着三联,想着别人放一天我放四天的悠闲生活,内心甚是平静.然而晚上回到家就开始浪了,看完了 ...

  5. .net core面试题

    第1题,什么是ASP net core? 首先ASP net core不是 asp net的升级版本.它遵循了dot net的标准架构, 可以运行于多个操作系统上.它更快,更容易配置,更加模块化,可扩 ...

  6. CF1462-F. The Treasure of The Segments

    题意: 给出n个线段组成的集合,第i个线段用 \(\{l_i, r_i\}\) 表示线段从坐标轴的点\(l_i\)横跨到点\(r_i\).现在你可以删除其中的一些线段,使得剩下的线段组成的集合中至少存 ...

  7. TextCNN代码实践

    在上文<TextCNN论文解读>中已经介绍了TextCNN的原理,本文通过tf2.0来做代码实践. 数据集:来自中文任务基准测评的数据集IFLYTEK 导库 import os impor ...

  8. How to enable HTTPS for local development in macOS using Chrome

    How to enable HTTPS for local development in macOS using Chrome HTTPS, macOS, Chrome local HTTPS htt ...

  9. GraphQL API In Action

    GraphQL API In Action GraphQL API express $ yarn add express express-graphql graphql # OR $ npm i -S ...

  10. ThoughtWorks Homework

    ThoughtWorks Homework Homework 考察知识点 项目搭建 技术选型 测试 编码风格 代码质量 设计模式 数据结构 算法 架构 开源协作 CI/CD DevOps Linux ...