学习记录的笔记,虽然毫无章法

硬盘基础知识

磁盘的物理组成


硬盘接口类型

  • IDE
  • SATA
  • SCSI
  • SAS
  • 光纤通道

IDE(Integrated Drive Electronic,电子集成驱动器)

  • 用途:家用+部分服务器
  • 特点:价格低、兼容性强
  • 传输模式:PIO\DMA\UDMA
  • 如下图所示:

SATA(Serial Advanced Technology Attachment,串行高级技术附件)

  • 用途:PC机主流趋势
  • 特点:可以对传输指令进行检查,具备自动纠错能力。
  • 如下图所示:

SCSI(Small Computer System Interface,小型计算机系统接口)

  • 用途:服务器
  • 特点:应用范围广、多任务、带宽大、CPU占用率低、热插拔
  • 如下图所示:

SAS(Serial Attached SCSI,串行连接SCSI接口,串行连接小型计算机系统接口)

  • 介绍:新一代的SCSI的技术
  • 用途:服务器
  • 特点:改善存储系统的效能、可用性和扩充性,与SATA硬盘的兼容性
  • 如下图所示:

光纤通道(Fiber Channel)

  • 用途:专门为网络系统设计的接口技术
  • 特点:热插拔性、高速带宽、远程连接、连接设备数量大等
  • 如下图所示:

硬盘种类

  • SSD
  • HHD
  • HDD

SSD(Solid State Drive,固态硬盘)

  • 优点:读写速度快;防震抗摔性;低功耗;无噪音;工作温度范围大;轻便
  • 缺点:容量小;寿命有限;售价高

HHD(hybrid hard drive,混合硬盘)

  • 优点:
    1. 系统启动时间减少
    2. 功耗降低
    3. 生成热量减少
    4. 硬盘寿命延长
    5. 笔记本和PAD的电池寿命延长
    6. 工作噪声级别降低
  • 缺点:
    1. 硬盘中数据的寻道时间更长
    2. 硬盘的自旋变化更频繁
    3. 闪存模块处理失败,不可能进行其中的数据恢复
    4. 系统的硬件总成本更高

HDD(Hard Disk Drive,传统硬盘)

  • 优点:略
  • 缺点:略

磁盘分区

磁盘分区类型

  • MBR
  • GPT

MBR

第一分区

  • 开机管理程序(Bootloader)(512bytes,开机记录区[446bytes]+存放表[64bytes])
  • 例如/dev/sda[1,2,3,4]

主分区、延伸分区

  • 四个主分区或延伸分区

逻辑分区

  • 由延伸分区继续分割出的分区
  • 下标从5开始,如/dev/sda[5,...]
  • 分区的最小单位是:柱面

总结

  • 主分区与延伸分区最多可以有四笔(磁盘的限制);
  • 延伸分区最多只能有一个;
  • 逻辑分区是由延伸分区持续切割出來的分割槽;
  • 能够被格式化后,作为资料存取的分割槽为主分区与逻辑分区。延伸分区無法格式化;
  • 逻辑分区的数量因操作系统而不同,在Linux系统中SATA硬盘已经可以突破63个以上的分割限制。

GPT

  • 以LBA(Logical Block Address)分区
  • LBA默认扇区大小为512bytes,目前有4K大的扇区
  • 前34个LBA(即LBA(0~33))记录分区信息表,最后33个LBA用来备份分区信息,如下图所示:
  • LBA0:开机管理程序+GPT分区标识
  • LBA1:分区表位置、大小、备份GPT分区位置、分区表检验机制码(CRC32)
  • LBA2~LBA32:记录分区信息处
  • 从LBA2开始:每个LBA可以记录4笔分区记录,4*32=128笔。512bytes=128bytes(分区)+相关信息+64bytes(记录开始/结束扇区号码)

开机启动程序

文件系统

磁盘格式

  • Windows98之前: FAT (或 FAT16)
  • Window2000之后:NTFS
  • Linux:Ext2(正统文件系统)

相关概念

  • superblock:記錄此 filesystem 的整體資訊,包括inode/block的總量、使用量、剩餘量, 以及檔案系統的格式與相關資訊等;
  • inode:記錄檔案的屬性,一個檔案佔用一個inode,同時記錄此檔案的資料所在的 block 號碼;
  • block:實際記錄檔案的內容,若檔案太大時,會佔用多個 block 。[目录block记录了该目录下文件名和inode编号]

分类

  • 索引式文件系统
  • 日志式文件系统

Ext2文件系统介绍

  • Ext2格式化后如下图所示:

block group下内容介绍

data block

  • 原則上,block 的大小與數量在格式化完就不能夠再改變了(除非重新格式化);
  • 每個 block 內最多只能夠放置一個檔案的資料;
  • 承上,如果檔案大於 block 的大小,則一個檔案會佔用多個 block 數量;
  • 承上,若檔案小於 block ,則該 block 的剩餘容量就不能夠再被使用了(磁碟空間會浪費)

inode table

inode存放内容

  • 該檔案的存取模式(read/write/excute);
  • 該檔案的擁有者與群組(owner/group);
  • 該檔案的容量;
  • 該檔案建立或狀態改變的時間(ctime);
  • 最近一次的讀取時間(atime);
  • 最近修改的時間(mtime);
  • 定義檔案特性的旗標(flag),如 SetUID...;
  • 該檔案真正內容的指向 (pointer);

总结

  • 每個 inode 大小均固定為 128 bytes (新的 ext4 與 xfs 可設定到 256 bytes);
  • 每個檔案都僅會佔用一個 inode 而已;
  • 承上,因此檔案系統能夠建立的檔案數量與 inode 的數量有關;
  • 系統讀取檔案時需要先找到 inode,並分析 inode 所記錄的權限與使用者是否符合,若符合才能夠開始實際讀取 block 的內容。
  • inode记录一个block编号需要4bytes

思考:如果一个文件有400M,假设默认block大小为1K,磁盘是如何读取这个文件的?
inode 記錄 block 號碼的區域定義為12個直接,一個間接, 一個雙間接與一個三間接記錄區
12个直接: 121K = 12K;1个间接:(1K/4bytes)1K = 256K;1个双间接:((1K/4bytes)^2)1K = (256^2)K;1个三间接:(((1K/4bytes)^2)256)1K = (256^3)K; 12 + 256 + 256256 + 256256256 (K) = 16GB

  • 2K,4K不能这么计算,因为会受到Ext2文件系统的限制

Superblock(1024bytes)

  • block 與 inode 的總量;
  • 未使用與已使用的 inode / block 數量;
  • block 與 inode 的大小 (block 為 1, 2, 4K,inode 為 128bytes 或 256bytes);
  • filesystem 的掛載時間、最近一次寫入資料的時間、最近一次檢驗磁碟 (fsck) 的時間等檔案系統的相關資訊;
  • 一個 valid bit 數值,若此檔案系統已被掛載,則 valid bit 為 0 ,若未被掛載,則 valid bit 為 1 。

Filesystem Description

描述每個 block group 的開始與結束的 block 號碼,以及說明每個區段 (superblock, bitmap, inodemap, data block) 分別介於哪一個 block 號碼之間

block bitmap

未使用中,使用中,空的

inode bitmap

記錄使用與未使用的 inode 號碼

创建一个文件的流程

  • 先確定使用者對於欲新增檔案的目錄是否具有 w 與 x 的權限,若有的話才能新增;
  • 根據 inode bitmap 找到沒有使用的 inode 號碼,並將新檔案的權限/屬性寫入;
  • 根據 block bitmap 找到沒有使用中的 block 號碼,並將實際的資料寫入 block 中,且更新 inode 的 block 指向資料;
  • 將剛剛寫入的 inode 與 block 資料同步更新 inode bitmap 與 block bitmap,並更新 superblock 的內容。

问题:写入文件时,第三步执行完毕后,突然断电了,该怎么解决?

1.索引式文件系统 2.日志式文件系统

XFS文件系统介绍

  • 資料區 (data section)
  • 一個檔案系統活動登錄區 (log section)
  • 即時運作區 (realtime section)

资料区

  • inode/data block/superblock

登录区

即时运作区

命令xfs_info

类似 ext家族的 dumpe2fs命令

磁盘分区、格式化

分区类型

  • 查看设备列表lsblk
  • 查看设备唯一号blkid
  • 查看文件系统分区类型parted device_name print

分区工具

  • gdisk:xfs分区
  • fdisk:ext分区
  • parted:两者都可以

格式化

  • xfs分区:mkfs.xfs
  • Ext4分区:mkfs.ext4
  • 通用:mkfs -t

    mkfs -t vfat /dev/sda5 mkfs -t ext2 /dev/sda5

检验文件系统

  • xfs:xfs_repair dev_name
  • ext4:fsck.ext4 dev_name

硬盘基础知识&&分区的更多相关文章

  1. 2.Linux系统之硬盘与分区基础知识

    我们是在虚拟机上安装的Linux系统.在安装的过程中,可能会遇到磁盘分区的问题,我们下面简单介绍一下分区的原理. 1.硬盘的基础知识 下面是一块空白的硬盘: 这是一块格式化后的硬盘: 格式化就是,在空 ...

  2. Oracle数据库基础知识

    oracle数据库plsql developer   目录(?)[-] 一     SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...

  3. android、IOS和手机基础知识

    一.手机基础知识 1.固件.刷固件.固件版本 固件是指固化的软件,英文为firmware,它是把某个系统程序写入到特定的硬件系统中的flashROM.手机固件相当于手机的系统,刷新固件就相当于刷系统. ...

  4. linux新增一块硬盘加入原有分区

    原有硬盘空间已经不足,添加一块新硬盘,并且加入到原根目录下 查看新硬盘 1 2 fdisk -l Disk /dev/sdb: 240.1 GB, 240057409536 bytes 在新硬盘上创建 ...

  5. linux内存基础知识和相关调优方案

    内存是计算机中重要的部件之中的一个.它是与CPU进行沟通的桥梁. 计算机中全部程序的执行都是在内存中进行的.因此内存的性能对计算机的影响很大.内存作用是用于临时存放CPU中的运算数据,以及与硬盘等外部 ...

  6. 基础知识全面LINUX

    学习Linux系统的重要性应该不用多说,下面我就对Linux的基础知识进行一个全面而又简单的总结.不过建议大家还是装个Linux系统多练习,平时最好只在Linux环境下编程,这样会大有提高. linu ...

  7. Linux基础知识梳理

    Linux基础知识梳理 Linux内核最初只是由芬兰人林纳斯?托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的.Linux是一套免费使用和自由传播的类Unix操作系统,是 ...

  8. HBASE基础知识总结

    HBASE基础知识总结 一,概要说明 文章首先回顾HBase 的数据模型和数据层级结构,对数据的每个层级的作用和架构进行了详细阐述:随后介绍了数据写入和读取的详细流程.先把架构图和流程图来坐镇. 架构 ...

  9. liunx存储管理之基础知识

    存储基础知识 ====================================================================================主要知识点: 基本 ...

随机推荐

  1. qt+vs2005新建配置不自动加载Generated Files进工程(个人备份)

    工程右键Qt Project Settings 的Moc Directory路径删除 确定,再进入将删除路径加上

  2. bootstrap-table页码ALL显示为NAN

    在github上查阅找到的解决办法: https://github.com/wenzhixin/bootstrap-table/issues/435 页面部分: data-page-list=&quo ...

  3. write函数过程解析

    write函数作为用户向终端或者文件进行写数据的重要函数,有着重要的作用. |------|          |---------|   |---------| |----------| | wri ...

  4. php新闻静态化方法

    $view=file_get_contents('./a.tpl'); //新闻详情页模板模式,需要数据位置定义标签如{title},{content} $php_content=str_replac ...

  5. H5基本标签

  6. position和BFC

    一.关于position流定位:不能通过left/top属性来进行定位(那用什么定位),上下排列的元素纵向边距会被合并,左右元素横向边距不会合并.浮动定位:脱离文本流,就好像不在父元素中,像是浮在父元 ...

  7. uiwebview与objective-c

    利用oc调用js很简单, 系统直接提供了方法stringByEvaluatingJavaScriptFromString [webView stringByEvaluatingJavaScriptFr ...

  8. [Medium翻译]RESTful API权威设计指南-设计更好的API

    本文为授权译文.希望查看原文的同学请戳链接:https://hackernoon.com/restful-api-design-step-by-step-guide-2f2c9f9fcdbf 对于我们 ...

  9. ziplist之详细分析

    压缩列表ziplist ziplist是一种连续,无序的数据结构.压缩列表是 Redis 为了节约内存而开发的, 由一系列特殊编码的连续内存块组成的顺序型(sequential)数据结构. 组成 属性 ...

  10. 第一篇:百问网ubuntu安装注意事项和部分配置

    目录 一.开启虚拟化技术 二.ubuntu部分设置 一.开启虚拟化技术 ​ 64位机,需要使用cpu-z.SecurAble软件来检查:CPU是否支持VT虚拟化技术 cpu-z使用(软件) 第一步:以 ...