zoukankan      html  css  js  c++  java
  • 9-3 磁盘存储与分区

    磁盘存储与分区

    设备文件

    一切皆文件:open(), read(), write(), close()
    设备类型:

    • 块设备:block,存取单位“块”,磁盘
    • 字符设备:char,存取单位“字符”,键盘

    设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信
    设备号码:

    • 主设备号:major number, 标识设备类型
    • 次设备号:minor number, 标识同一类型下的不同设备

    磁盘设备的设备文件命名:/dev/DEV_FILE
    SCSI, SATA, SAS, IDE,USB: /dev/sd
    虚拟磁盘:/dev/vd 、/dev/xvd
    不同磁盘标识:a-z,aa,ab…

    • /dev/sda, /dev/sdb, ...

    同一设备上的不同分区:1,2, ...

    • /dev/sda1, /dev/sda5
      硬盘存储术语
    • head:磁头
    • track:磁道
    • sector:扇区,512bytes
    • cylinder:柱面

    并行:

    • IDE:133MB/s
    • SCSI:640MB/s

    串口:

    • SATA:6Gbps
    • SAS:6Gbps
    • USB:480MB/s

    机械硬盘和固态硬盘

    机械硬盘(HDD):Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。机械硬盘中所有的盘片都装在一个旋转轴上,每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。数据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上,也可以通过相反方式读取。硬盘为精密设备,进入硬盘的空气必须过滤

    固态硬盘(SSD):Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也与普通硬盘一致

    • 相较于HDD,SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传输速率性能是HDD的2倍
    • 相较于SSD,HDD在价格、容量占有绝对优势
    • 硬盘有价,数据无价,目前SSD不能完全取代HHD

    CHS和LBA

    CHS

    • 采用24bit位寻址
    • 其中前10位表示cylinder,中间8位表示head,后面6位表示sector
    • 最大寻址空间8GB

    LBA(logical block addressing)

    • LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址
    • ATA-1规范中定义了28位寻址模式,以每扇区512位组来计算,ATA-1所定义的28位LBA上限达到128 GiB。2002年ATA-6规范采用48位LBA,同样以每扇区512位组计算容量上限可达128 Petabytes

    由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则只能使用LBA寻址方式

    分区

    使用分区空间:

    • 设备识别
    • 设备分区
    • 创建文件系统
    • 标记文件系统
    • 在/etc/fstab文件中创建条目
    • 挂载新的文件系统

    分区的原因:

    • 优化I/O性能
    • 实现磁盘空间配额限制
    • 提高修复速度
    • 隔离系统和程序
    • 安装多个OS
    • 采用不同文件系统

    分区方式:

    • 两种分区方式:MBR,GPT
    • MBR:Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T
    • 如何分区:按柱面
    • 0磁道0扇区:512bytes
      • 446bytes: boot loader
      • 64bytes:分区表,其中每16bytes标识一个分区
      • 2bytes: 55AA
    • MBR分区中一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区)

    MBR分区结构

    mbr

    硬盘主引导记录MBR由4个部分组成:

    • 主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序
    • 出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节
    • 分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4
    • 结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA

    mbr2
    mbr3

    GPT分区结构

    gpt

    BIOS和UEFI

    BIOS:

    • BIOS是固化在电脑主板上一个程序,主要用于开机系统自检和引导操作系统。目前新式的电脑基本上都是UEFI启动
    • BIOS(Basic Input Output System 基本输入输出系统)对于普通用户来说,主要完成系统硬件自检和引导操作系统,操作系统开始启动之后,BIOS的任务就完成了。系统硬件自检:如果系统硬件有故障,主板上的扬声器就会发出长短不同的“滴滴”音,可以简单的判断硬件故障,比如“1长1短”通常表示内存故障,“1长3短”通常表示显卡故障
    • BIOS在1975年就诞生了,使用汇编语言编写,当初只有16位,因此只能访问1M的内存,其中前640K称为基本内存,后384K内存留给开机和各类BIOS本身使用。BIOS只能识别到主引导记录(MBR)初始化的硬盘,最大支持2T的硬盘,4个主分区(逻辑分区中的扩展分区除外),而目前普遍实现了64位系统,传统的BIOS已经无法满足需求了,这时英特尔主导的EFI就诞生了

    UEFI:

    • EFI(Extensible Firmware Interface)可扩展固件接口,是 Intel 为 PC 固件的体系结构、接口和服务提出的建议标准。其主要目的是为了提供一组在 OS 加载之前(启动前)在所有平台上一致的、正确指定的启动服务,被看做是BIOS 的继任者  UEFI是由EFI1.10为基础发展起来的,它的所有者已不再是Intel,而是一个称作Unified EFI Form的国际组织
    • UEFI(Unified Extensible Firmware Interface)统一的可扩展固件接口, 是一种详细描述类型接口的标准。UEFI 相当于一个轻量化的操作系统,提供了硬件和操作系统之间的一个接口,提供了图形化的操作界面。最关键的是引入了GPT分区表,支持2T以上的硬盘,硬盘分区不受限制

    BIOS和UEFI区别:

    • BIOS采用了16位汇编语言编写,只能运行在实模式(内存寻址方式由16位段寄存器的内容乘以16(10H)当做段基地址,加上16位偏移地址形成20位的物理地址)下,可访问的内存空间为1MB,只支持字符操作界面UEFI采用32位或者64位的C语言编写,突破了实模式的限制,可以达到最大的寻址空间,支持图形操作界面

    BIOS+MBR与UEFI+GPT:

    • 传统BIOS运行流程:
      1. 开机
      2. BIOS初始化
      3. BIOS自检
      4. 引导操作系统
      5. 进入系统
    • UEFI运行流程
      1. 开机
      2. UEFI初始化
      3. 引导操作系统
      4. 进入系统

    管理分区

    • 列出块设备
      • lsblk
    • 创建分区使用:
      • fdisk 创建MBR分区
      • gdisk 创建GPT分区
      • parted 高级分区操作
    • 重新设置内存中的内核分区表版本
      • partprobe

    parted命令

    parted的操作都是实时生效的,小心使用
    用法:parted [选项]... [设备 [命令 [参数]...]...]

    • parted /dev/sdb mklabel gpt|msdos
    • parted /dev/sdb print
    • parted /dev/sdb mkpart primary 1 200 (默认M)
    • parted /dev/sdb rm 1
    • parted –l 列出分区信息
  • 相关阅读:
    MySql为查询结果添加前、后缀
    SQLHelper类
    OracleHelper类
    C#在sql中使用變量訪問Oracle數據庫
    转-调用HTMLTestRunner生成的报告中不能显示用例中print函数的输出
    HTMLTestRunner优化:带截图、饼图、失败重跑
    【转】如何成功安装旧版本火狐,成功安装firebug和firepath插件
    【转】Selenium 加载Chrome/Firefox浏览器配置文件
    mac查看python安装路径
    requests模拟上传照片
  • 原文地址:https://www.cnblogs.com/kjalbert/p/11676514.html
Copyright © 2011-2022 走看看