谢烟客---------Linux之磁盘管理,分区

框架

IO事件

io port

硬件接口速率

虚拟扇区

mbr分区方式

分区编号

fdisk,parted,sfdisk命令

cat /proc/partitions

partx,partprobe,kpartx命令

一、硬件

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定时发出询问,依序询问每一个周边设备是否需要其服务,有即给予服务,服务结束后再问下一个周边,接着不断周而复始。

通知机制:任何一个I/O设备当其有数据传输的需要时 或 有I/O事件到达时,设备通知给CPU。


二、cpu如何识别是哪个硬件有数据传输的需要


1)硬件层次:硬盘工作的内置的电器特性实现

可编程中断控制设备:微处理器与外设之间的中断处理的桥梁,由外设发出的中断请求需要中断控制器来进行处理。

此设备上有多个针脚,每个针脚可供硬件设备注册使用,CPU中由硬件设备注册使用的不同的中断信号

针脚数量小,但是可以复用

针脚可以基于某种形式复用

i/o端口:16bits二进制数字定义端口,每个端口是一个缓冲器,一共有2^16=65535种变化或端口,每个硬件都会在cpu处注册使用不同的端口,一般说来:其中1个端口用来发送数据,1个端口用于接收数据,cpu根据不同的端口判断不同的硬件。

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

设备文件的命名:依据设备的接口

主机与设备的建立关联关系

主板提供接口

线缆:硬件设备和主板接口交互数据传输专门设计

工业标准:有统一的标准、电压、同步调工作

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,固态硬盘和机械式硬盘哪个快?同样是机械式硬盘,同样的接口,西数和西捷哪个快?

机械式硬盘的基本工作机制

组成

盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。

track,磁道:用于存储数据的位置,密度越高,存储大小越大

硬盘两面读写

柱面:不同盘片的不同盘面有相同编号的磁道

扇区:每个磁道划分成的小的区域

虚拟扇区:虚拟视图上看,在整个硬盘上,扇区大小一样,数量一样

    扇区的大小: 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

kpartx命令

kpartx [OPTIONS...] /dev/DEV-FILE

-a 添加分区映射

-f 强制添加

centos5上: partprobe /dev/DEV-FILE

fdisk命令

#  type fdisk
fdisk is /usr/sbin/fdisk

[[email protected] ~]# 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> ##列出指定的分区表

使用示例

查看所有磁盘分区

[[email protected] ~]# fdisk -l

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 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: 0x000777f3

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64       12813   102400000   8e  Linux LVM

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
.......

设备 是否可引导(*:kernel) start 起始柱面 结束柱面 磁盘块数 分区标示 用在哪个系统上的分区上

查看指定分区

[[email protected] ~]# fdisk -l /dev/sda

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 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: 0x000777f3

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64       12813   102400000   8e  Linux LVM
[[email protected] ~]#

管理分区

[[email protected] ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to
         switch off the mode (command ‘c‘) and change display units to
         sectors (command ‘u‘).

Command (m for help): m
Command action
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   p   print the partition table
   q   quit without saving changes
   t   change a partition‘s system id
   w   write table to disk and exit

Command (m for help):

添加分区

Command (m for help): n  ##添加一个新的分区
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3   ##从第3个开始添加
First cylinder (12813-15665, default 12813): 
Using default value 12813
Last cylinder, +cylinders or +size{K,M,G} (12813-15665, default 15665): +10G

Command (m for help): p   ##显示添加的分区

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 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: 0x000777f3

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64       12813   102400000   8e  Linux LVM
/dev/sda3           12813       14118    10489811   83  Linux

Command (m for help): w  ##保存退出
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[[email protected] ~]#

查看内核识别的分区

内核识别的分区
[[email protected] ~]# cat /proc/partitions 
major minor  #blocks  name

   8        0  125829120 sda
   8        1     512000 sda1
   8        2  102400000 sda2
   8       16   20971520 sdb
   
 ###内核并未识别分区

内核重读分区表

[[email protected] ~]# partx -a /dev/sda  ##报错不用理
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
[[email protected] ~]# partx -a /dev/sda  ##当出现新分区时,即可
BLKPG: Device or resource busy 
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
BLKPG: Device or resource busy
error adding partition 3

验证逻辑分区只能从5开始

1、查看指定设备
[[email protected] ~]# 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

[[email protected] ~]# 

2、分区
[[email protected] ~]# 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):
时间: 2024-10-18 04:40:58

谢烟客---------Linux之磁盘管理,分区的相关文章

7.linux磁盘管理 分区 建立文件系统 挂载使用

一.磁盘管理 分区  建立文件系统  挂载使用   逻辑卷建立  磁盘阵列的建立  磁盘配额设定 fdisk -l       查看磁盘信息 df -Th        查看硬盘对应的目录 /dev/sdb/ 20G     1. 文件类型介绍 ext4 扩展型文件系统   特点   支持单个文件上 EB 支持日志功能 NTFS 文件    和   fat32        不支持单个文件上4G swap 交换分区 虚拟内存 8G  8G  4G 1.5倍 mbr 分区表方式  :支持4个主分区

linux下磁盘管理机制--LVM

当我们用传统分区方法使用磁盘时,当出现分区大小不够用的时候,通常只能添加添加一个更大的磁盘,重新创建分区来扩展空间.但是,这样只能是将原来的磁盘下线,换上新的磁盘,在将原始数据写入,在实际的生产过程中是不允许的.此时就需要使用逻辑卷LVM这种磁盘分区管理了. 逻辑卷是将硬盘空间重新"分割"成大小相等的块(PE)组成的PV放到一个容器(VG)中,当需要可以随时向这个容器中取出这样的块,来实现动态调整磁盘空间大小.当然新添加的块不会改变原来的文件系统,而且原磁盘也不用下线. 下面说明逻辑卷

linux下磁盘管理机制--RAID

RAID(Redundant Array Of Independent Disks):独立磁盘冗余阵列.RAID的最初出现的目的是为了解决中小型企业因经费原因使用不起SCSCI硬盘,而不得不使用像IDE较廉价的磁盘情况下,将多块IDE磁盘通过某种机制组合起来,使得IDE磁盘在一定程度上提高读写性能的一种机制.当然,现在也可以将SCSCI类的磁盘也可以做成RAID来提高磁盘的读写性能. 一.RAID的级别 RAID机制通过级别来RAID级别来定义磁盘的组合方式.常见的级别有:RAID0,RAID1

linux之磁盘管理(五)

swap分区 交换空间,正是因为交换空间的存在,使我们的内存可以过载使用. 在物理买内存不足的情况下,拿swap来应急. free:查看当前系统上物理内存和交换空间的使用情况. -m [[email protected] ~]# free total       used       free     shared    buffers     cached Mem:       1026868     419232     607636          0      23704     28

Linux基础-----磁盘管理

文件系统 Windows NTFS FAT32 Linux VFS:虚拟文件系统:将底层文件系统的不同,通过统一的接口,输出给上层应用 ext2 ext3 ext4 xfs 文件系统:对分区文件就行组织管理,并建立索引表,文件系统有内核提供 格式化:创建文件系统 低级格式化:创建磁道.扇区 高级格式化:创建文件系统 分区是按柱面来划分 磁道:数据存储在磁道上 扇区:将磁道划分成扇状用于管理 柱面:多个盘片,相同位置的扇区,形成柱面 0磁道的0扇区:(不属于任何分区)MBR 512字节   主引导

linux之磁盘管理(四)

文件系统管理 重新创建文件系统会损坏原有文件. 创建某个分区上的文件系统 使用 mkfs :make file system -t  FSTYPE   指定文件系统类型 mkfs命令比较特殊 [[email protected] ~]# which mkfs.ext2 /sbin/mkfs.ext2 [[email protected] ~]# ls -l /sbin/mkfs.ext2 -rwxr-xr-x 3 root root 47312 Sep  4  2009 /sbin/mkfs.e

Linux 红帽 &nbsp; 磁盘管理~~~~RAID5+LVM

Linux  红帽    磁盘管理~~~~RAID5+LVM 实验环境: 在Linux 操作系统的PC机上添加3块20G大小的磁盘 实验步骤: 一.  创建RAID5: 1. 准备工作: [[email protected] ~]# uname -a              //查看基本信息 [[email protected] ~]# cat /etc/redhat-release        //查看红帽的发行版本 为添加好的三个磁盘进行分区, 分区的类型:FD(全称:)    为了节省

Linux学习—磁盘管理知识点总结

磁盘管理 目录 设备文件 磁盘介绍 磁盘分区 创建磁盘分区 同步分区表 文件系统 一.设备文件 设备文件关联至设备驱动程序,用户通过操作这些设备文件间接管理对应的硬件设备 一个设备的名称表示整个磁盘,而分区则用设备名加上一个分区号来表示 设备文件类型: 块设备    存取单位是块,如磁盘 字符设备  存取单位是字符,如键盘 为了方便管理这些设备,系统设置了主设备号和次设备号用来区分 看如下示例: 8 代表主设备号  后边的数字代表次设备号 创建设备文件: mknod 文件名 b 主设备号 次设备

linux新建磁盘并分区

先在虚拟机上添加一块硬盘. 查看磁盘分区:sdb还没有分配 新建一个100M的分区:再查看,发现新建成功了. 再查看fdisk -l ******ext4格式不支持.就使用了ext2进行格式化了. mount并新建文件 linux新建磁盘并分区,布布扣,bubuko.com