谢烟客---------Linux之磁盘管理,分区
2017-08-06 18:30
344 查看
![](https://s3.51cto.com/wyfs02/M01/9D/D0/wKioL1mG0aCBngAZAACxmFPnkEo823.png)
1)IO事件的产生
cpu轮循、硬件通知机制
2)识别硬件:
硬件层次:
1、IO端口、缓冲器
2、可编程中断控制设备:设备注册 不同的中断信号
软件/操作系统层次:
命名通过数字或字母
linux一切皆文件:设备文件:访问设备的接口、设备类型b,c
命名方式: 硬件接口
接口速率:IDE:133MB/S,SCSI:670MB/S,SATA:700MB/S,SAS:700MB/S,USB:450MB/S
3)接收时:数据要被处理:CPU指挥着数据载入到内存,然后到cpu。
4)track,cylinder,sector
track: 存储数据,
cylinder:不同盘片,相同编号的track
sector: 每个track中划分
虚拟扇区: 不同track,sector数量一样,大小一样,
mbr:512bytes, uefi:4k
mbr: 446(引导加载器) 64分区表 2 55AA(510有效)
逻辑分区和扩展分区的编号机制,扩展任意编号 逻辑从5开始
一、硬件
cpu(运算器、控制器), 内存,硬盘(U盘)、网络设备,键盘、鼠标、显示器
1)cpu cpu的个数并非越多越好,1个和尚挑水喝,2个和尚抬水喝,为什么3个和尚没水喝?_,cpu内控制器用于完成硬件的控制,多个cpu时,可能会发生硬件资源争用,需要通过内核和硬件体系自身完成协调,协同工作。
如果协调的好,多个CPU能够发挥单个CPU多倍的性能,否则协调时间占比越大,性能不升反降
2)内存 Random Access Memory “易失性存储”暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。不断的填充电荷保证数据的持久
3)硬盘:硬盘是电脑主要的存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成。碟片外覆盖有铁磁性材料。
4)网卡:网卡是工作在链路层的网络组件,是局域网中连接计算机和传输介质的接口,不仅能实现与局域网传输介质之间的物理连接和电信号匹配,还涉及帧的发送与接收、帧的封装与拆封、介质访问控制、数据的编码与解码以及数据缓存的功能等。
二、内核
1、软件层次,需要较为复杂的逻辑实现协调硬件工作
2、抽象硬件功能为系统调用、库调用
3、驱动硬件,让硬件工作起来。第三方提供商所提供硬件的驱动,为避免驱动内的恶意代码,安装驱动时会检查硬件驱动的 数字签名 ....
4、对硬件的管理,仅在硬件驱动层次的管理,对硬盘的使用、空间的分配,由用户间的程序
程序员面向的编程接口
硬件规格:写程序时,将会考虑更多与硬件相关的特性(cpu,ram,...)
系统调用:简化硬件接口,较为底层
库调用:系统call二次封装
IOevent的基本概念
"如何"得知产生硬件事件 -- I/O设备触发IO事件 -- CPU如何知道"哪个"硬件需要有数据产生或需要获取数据 --- CPU通知内核 -- 内核决定接收或拒绝数据
一、cpu如何得知硬件产生了事件或有数据产生?
轮循:也被称为忙等待,等待别人输入数据,自己忙的团团转,CPU定时发出询问,依序询问每一个周边设备是否需要其服务,有即给予服务,服务结束后再问下一个周边,接着不断周而复始。
![](https://s5.51cto.com/wyfs02/M01/9D/D0/wKioL1mG1HLwBNuCAAB3HrUMoQs436.png)
通知机制:任何一个I/O设备当其有数据传输的需要时 或 有I/O事件到达时,设备通知给CPU。
![](https://s5.51cto.com/wyfs02/M01/9D/D0/wKiom1mG1R7AzjvUAABYXW4f7Ng908.png)
二、cpu如何识别是哪个硬件有数据传输的需要?
1)硬件层次:硬盘工作的内置的电器特性实现
可编程中断控制设备:微处理器与外设之间的中断处理的桥梁,由外设发出的中断请求需要中断控制器来进行处理。
此设备上有多个针脚,每个针脚可供硬件设备注册使用,CPU中由硬件设备注册使用的不同的中断信号
针脚数量小,但是可以复用
针脚可以基于某种形式复用
i/o端口:16bits二进制数字定义端口,每个端口是一个缓冲器,一共有2^16=65535种变化或端口,每个硬件都会在cpu处注册使用不同的端口,一般说来:其中1个端口用来发送数据,1个端口用于接收数据,cpu根据不同的端口判断不同的硬件。
![](https://s2.51cto.com/wyfs02/M02/9D/D0/wKiom1mG11Ki1b1NAACDPmspWqk968.png)
2)软件层次
由linux哲学思想“一切皆文件”
识别设备:
人易读的是字母:设备文件
内核只能数字: 设备号码
抽象为文件的优点:对设备的操作仅需要通过简洁的文件接口实现
文件接口:read(),write(),open(),close()
设备类型:
块设备:随机访问设备: 存储单位 "块" 硬盘
字符设备: 线性访问敲锣:存储单位 "字符" 键盘
设备文件是一种特殊文件,是设备的访问入口
crw-rw-rw- 1 root root 1, 3 Jul 31 14:51 /dev/null c 字符型 rw- rw- rw- 1 左root 右root 1 major number 主设备号码:标示不同的设备类型 3 minor number 次设备号码:同一类型设备下不同的设备 ########没有文件大小,对于设备文件来说,只有metadata(属性信息),没有data
设备文件的命名:依据设备的接口
主机与设备的建立关联关系
主板提供接口
线缆:硬件设备和主板接口交互数据传输专门设计
工业标准:有统一的标准、电压、同步调工作
![](https://s3.51cto.com/wyfs02/M00/9D/D1/wKioL1mG37ijFuGjAAA21kSzKww982.png)
CentOS 5: ide /dev/hd[a-z], scsi sata sas usb /dev/sd[a-z]
CentOS 6+: ide scsi sata sas usb /dev/sd[a-z]
相同设备不同分区命名:
/dev/sda[1- oo]
不同接口的接口速率
并口:IDE: 133MB/S , SCSI: 640MB/S
串口:SATA 3.0: 6GPbs == 700MB/S , SAS: 6Gpbs
并口:多条线缆间的信号干扰,干扰后就会导致重传 ,为了避免干扰,传输速率只能降低。
串口:单线无干扰,单车道只要 步调一致时,每秒只要传送更多的数据位即可
USB 3.0: 450MB/S
实际体验速率取决于两个方面:
1、接口速率
2、硬盘,例如同样是SATA 3.0,固态硬盘和机械式硬盘哪个快?同样是机械式硬盘,同样的接口,西数和西捷哪个快?
机械式硬盘的基本工作机制
组成
盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。
![](https://s2.51cto.com/wyfs02/M02/9D/D1/wKioL1mG4ZPjc5U0AAJX5Rx2JUY983.png)
track,磁道:用于存储数据的位置,密度越高,存储大小越大
硬盘两面读写
柱面:不同盘片的不同盘面有相同编号的磁道
扇区:每个磁道划分成的小的区域
![](https://s3.51cto.com/wyfs02/M02/9D/D1/wKiom1mG4g7SyP5oAAHarGbqLkc806.png)
虚拟扇区:虚拟视图上看,在整个硬盘上,每个磁道,扇区大小一样,数量一样
扇区的大小: mbr(512bytes) uefi(4k)
磁头:每个盘面有一个磁头,磁头距离盘面不到几毫米,磁头固定在同一个组合臂上
距离近,避免划伤硬盘,应该避免振动。
机械式硬盘的分区方式
分区:把一个存储空间逻辑角度上划分为多个不同的空间。 当作不同的硬件设备各自独立使用
如何分区:按柱面分,由外向内多个柱面组合在一起作一个分区,再由外向内多个柱面组合在一起作一个分区,....。
分区的特点:越靠外的柱面,单位时间内划过的或磁头所能走过的距离越长,数据读写率越向,越靠内越差。 一般分区的编号由外向内依次增大
磁盘识别分区:
硬盘的0柱面,0磁道,0扇区,系统预留的,不属于任何分区,512bytes
MBR(Master Boot Record) 主引导记录
512 bytes = 64bytes + 446bytes + 2 bytes
446bytes: 引导加载器 bootloader
64bytes:保存分区表,比尔盖茨认为的,当时只有1M大小的硬盘,分为4个分区足以。16bytes为一个分区。
4个主分区 3个主分区(1,2,3) + 1扩展(4)+n个逻辑分区 **扩展分区可以为1,逻辑分区起始的编号 一定为5.2bytes: 5A , 前510个bytes有效
注意:mbr分区当硬盘大于2T时,只能识别2T。大于2T的硬盘只能用GPT格式分区。
分区管理工具
fdisk(各发行版均会提供) 管理15个分区
parted,sfdisk
查看内核识别的分区
# cat /proc/partitions
让内核重读分区表
# partx -a <disk>
-n M[-N]
M 指定分区
M-N 指定范围
kpartx命令
kpartx [OPTIONS...] /dev/DEV-FILE
-a 添加分区映射
-f 强制添加
centos5上: partprobe /dev/DEV-FILE
fdisk命令
# type fdisk fdisk is /usr/sbin/fdisk [root@izpo45bh60h6bsz ~]# fdisk --help Usage: fdisk <disk> change partition table Command action d 删除一个分区 l 列出所有id,id用于标示用于那种操作系统的标示 m 获取帮助 n 创建一个新分区 p 显示已有分区 q 放弃更新并退出 t 改变分区id w 将更新写入磁盘并退出 fdisk [options] -l <disk> list partition table(s) fdisk -l ##列出所有分区表 fdisk -l <disk> ##列出指定的分区表
使用示例
查看所有磁盘分区
[root@localhost ~]# fdisk -l [root@localhost ~]# fdisk -l /dev/[sh]d[a-z]查看指定分区
[root@localhost ~]# fdisk -l /dev/sda
添加分区
==进入管理分区表的命令行
![](https://s4.51cto.com/wyfs02/M02/9D/F3/wKiom1mJPpTCR7K6AAAb24ZcA5w164.png-wh_500x0-wm_3-wmp_4-s_1506057092.png)
==显示已有的分区,mbr中只能有4个分区,如果要更多时,需要添加扩展分区
![](https://s1.51cto.com/wyfs02/M01/9D/F3/wKiom1mJPsrxIaaOAAA6teE2Gw8447.png-wh_500x0-wm_3-wmp_4-s_773585717.png)
==当前分区编号为2可以继续添加主分区
![](https://s4.51cto.com/wyfs02/M02/9D/F3/wKioL1mJPvHCeicSAAAmyBqgM4Q354.png-wh_500x0-wm_3-wmp_4-s_3746757474.png)
==显示添加的结果,并保存退出
![](https://s3.51cto.com/wyfs02/M02/9D/F3/wKiom1mJPyHydeYVAABZXdpgXyk903.png-wh_500x0-wm_3-wmp_4-s_3112791621.png)
显示当前内核中识别的分区信息
![](https://s5.51cto.com/wyfs02/M02/9D/F3/wKiom1mJPR6QB1HEAAAcRaR139s135.png)
内核重读分区表(此处多添加了一个扩展分区和逻辑分区,添加扩展分区见结尾处)
![](https://s1.51cto.com/wyfs02/M01/9D/F3/wKioL1mJO1_AChiQAABMYeGprXs992.png)
删除指定的分区
![](https://s2.51cto.com/wyfs02/M01/9D/F3/wKiom1mJPLOwoSD7AAAaopYG2Cs331.png)
======添加扩展分区=====验证逻辑分区只能从5开始
1、查看指定设备 [root@localhost ~]# fdisk -l /dev/sdb Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 [root@localhost ~]# 2、分区 [root@localhost ~]# fdisk /dev/sdb ##改变/dev/sdb分区表 Command (m for help): n ##添加一个新分区 Command action e extended p primary partition (1-4) e ##逻辑分区 Partition number (1-4): 1 First cylinder (1-2610, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): Using default value 2610 Command (m for help): p Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x52ca09b2 Device Boot Start End Blocks Id System /dev/sdb1 1 2610 20964793+ 5 Extended ##扩展分区可为1 Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l First cylinder (1-2610, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +10G Command (m for help): p Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x52ca09b2 Device Boot Start End Blocks Id System /dev/sdb1 1 2610 20964793+ 5 Extended /dev/sdb5 1 1306 10490382 83 Linux ##逻辑分区起始区5 Command (m for help):
相关文章推荐
- linux 磁盘管理三部曲——(2)管理分区,文件系统类型格式化
- linux分区,磁盘系统的管理,文件系统制作
- Linux添加磁盘及创建分区管理
- 学习OpenStack之 (4): Linux 磁盘、分区、挂载、逻辑卷管理 (Logical Volume Manager)
- LINUX的管理磁盘及分区
- Linux 磁盘原理与管理 (分区 挂载)
- Linux入门之磁盘管理(4)/etc/fstab与交换分区
- LINUX硬件配置与管理——用Fdisk工具对磁盘进行分区操作
- Linux系统的磁盘管理及分区应用
- Linux磁盘和文件系统管理(5)_创建交换分区
- 掌握管理Linux磁盘和分区的方法 创建并挂载文件系统以及 创建并管理LVM
- Linux磁盘和文件系统管理(1)_分区 格式化
- Linux学习之CentOS(十二)------磁盘管理之 磁盘的分区、格式化、挂载(转)
- linux系统管理之磁盘分区管理
- Linux入门之磁盘管理(1)分区管理
- linux 磁盘管理四部曲——(2)管理分区,文件系统类型格式化
- chapter8:Linux磁盘与文件系统管理之(3)磁盘的分区,格式化,检验与挂载
- linux 磁盘管理三部曲——(1)磁盘结构,认识分区
- 实操Linux下的磁盘的分区、格式化、挂载
- Linux 磁盘管理实践