硬盘基础知识&&分区
学习记录的笔记,虽然毫无章法
硬盘基础知识
磁盘的物理组成
- 如下图所示:
- 有关磁盘物理知识的详细介绍请看硬盘的存储原理和内部架构这篇博文
硬盘接口类型
- 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
硬盘基础知识&&分区的更多相关文章
- 2.Linux系统之硬盘与分区基础知识
我们是在虚拟机上安装的Linux系统.在安装的过程中,可能会遇到磁盘分区的问题,我们下面简单介绍一下分区的原理. 1.硬盘的基础知识 下面是一块空白的硬盘: 这是一块格式化后的硬盘: 格式化就是,在空 ...
- Oracle数据库基础知识
oracle数据库plsql developer 目录(?)[-] 一 SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...
- android、IOS和手机基础知识
一.手机基础知识 1.固件.刷固件.固件版本 固件是指固化的软件,英文为firmware,它是把某个系统程序写入到特定的硬件系统中的flashROM.手机固件相当于手机的系统,刷新固件就相当于刷系统. ...
- linux新增一块硬盘加入原有分区
原有硬盘空间已经不足,添加一块新硬盘,并且加入到原根目录下 查看新硬盘 1 2 fdisk -l Disk /dev/sdb: 240.1 GB, 240057409536 bytes 在新硬盘上创建 ...
- linux内存基础知识和相关调优方案
内存是计算机中重要的部件之中的一个.它是与CPU进行沟通的桥梁. 计算机中全部程序的执行都是在内存中进行的.因此内存的性能对计算机的影响很大.内存作用是用于临时存放CPU中的运算数据,以及与硬盘等外部 ...
- 基础知识全面LINUX
学习Linux系统的重要性应该不用多说,下面我就对Linux的基础知识进行一个全面而又简单的总结.不过建议大家还是装个Linux系统多练习,平时最好只在Linux环境下编程,这样会大有提高. linu ...
- Linux基础知识梳理
Linux基础知识梳理 Linux内核最初只是由芬兰人林纳斯?托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的.Linux是一套免费使用和自由传播的类Unix操作系统,是 ...
- HBASE基础知识总结
HBASE基础知识总结 一,概要说明 文章首先回顾HBase 的数据模型和数据层级结构,对数据的每个层级的作用和架构进行了详细阐述:随后介绍了数据写入和读取的详细流程.先把架构图和流程图来坐镇. 架构 ...
- liunx存储管理之基础知识
存储基础知识 ====================================================================================主要知识点: 基本 ...
随机推荐
- qt+vs2005新建配置不自动加载Generated Files进工程(个人备份)
工程右键Qt Project Settings 的Moc Directory路径删除 确定,再进入将删除路径加上
- bootstrap-table页码ALL显示为NAN
在github上查阅找到的解决办法: https://github.com/wenzhixin/bootstrap-table/issues/435 页面部分: data-page-list=&quo ...
- write函数过程解析
write函数作为用户向终端或者文件进行写数据的重要函数,有着重要的作用. |------| |---------| |---------| |----------| | wri ...
- php新闻静态化方法
$view=file_get_contents('./a.tpl'); //新闻详情页模板模式,需要数据位置定义标签如{title},{content} $php_content=str_replac ...
- H5基本标签
- position和BFC
一.关于position流定位:不能通过left/top属性来进行定位(那用什么定位),上下排列的元素纵向边距会被合并,左右元素横向边距不会合并.浮动定位:脱离文本流,就好像不在父元素中,像是浮在父元 ...
- uiwebview与objective-c
利用oc调用js很简单, 系统直接提供了方法stringByEvaluatingJavaScriptFromString [webView stringByEvaluatingJavaScriptFr ...
- [Medium翻译]RESTful API权威设计指南-设计更好的API
本文为授权译文.希望查看原文的同学请戳链接:https://hackernoon.com/restful-api-design-step-by-step-guide-2f2c9f9fcdbf 对于我们 ...
- ziplist之详细分析
压缩列表ziplist ziplist是一种连续,无序的数据结构.压缩列表是 Redis 为了节约内存而开发的, 由一系列特殊编码的连续内存块组成的顺序型(sequential)数据结构. 组成 属性 ...
- 第一篇:百问网ubuntu安装注意事项和部分配置
目录 一.开启虚拟化技术 二.ubuntu部分设置 一.开启虚拟化技术 64位机,需要使用cpu-z.SecurAble软件来检查:CPU是否支持VT虚拟化技术 cpu-z使用(软件) 第一步:以 ...