首页 > 代码库 > 一、磁盘基础与分区
一、磁盘基础与分区
1.1、硬盘设备接口的分类
通常硬盘按照接口类型可分为
接口类型 | 用途 |
ATA(又称IDE或PATA)、SATA(又称串口IDE) | 多用于PC或工作站现也用于存储设备 |
SCSI、FC、SAS、FATA | 用于服务器和存储设备 |
ATA(Advanced Technology Attachment)40针接口又称IDEIntegrated Drive Electronics电
子集成驱动器或PATA (Parellel ATA)。不可热插拔。通常所说ATA、Ultra ATA、DMA、Ultra DMA等
接口都属于IDE硬盘。速率有DMA 33/DMA 66/DMA 100/DMA 133。
SATA又称串口IDE硬盘。目前较多应用于主机和存储设备使用。15针电源插头7针数据插头速率有
1.5Gb/s和3.0Gb/s。
SCSI(Small Computer System Interface)是一种广泛应用于小型机上的高速数据传输技术。SCSI接口
具有应用范围广、多任务、带宽大、CPU占用率低以及热插拔等优点因此SCSI硬盘主要应用于中、高
端服务器、高档工作站以及存储设备中。 SCSI接口目前常用有68针和80针两种接口规格。区别在于
68pin需单独电源接口不支持热插拔用于机箱内部安装80pin无需电源接口可支持热插拔用
于高端服务器和存储设备。
FC(Fiber Channel)是专门为网络系统设计的但随着存储系统对速度的需求才逐渐应用到硬盘系统
中。光纤通道硬盘是为提高多硬盘存储系统的速度和灵活性才开发的它的出现大大提高了多硬盘系统
的通信速度。光纤通道的主要特性有热插拔性、高速带宽、远程连接、连接设备数量大等。
SAS(Serial Attached SCSI)是SCSI的升级产品其主要有点有更好的性能——采用串行传输代替并
行传输全双工模式更简便的连接线缆——将不再使用SCSI那种扁平的宽排线更广的扩展性——可
与SATA兼容。
FATA是一种混合型硬盘驱动器技术名为光纤附属适配器FATAFibre Attached Technology
Adapted这种技术是与最大的硬盘厂商希捷公司联合开发的它可以有效的降低硬盘的成本从而有
助于提高磁盘阵列的性价比。FATA硬盘驱动器相当于改用FC接口的SATA硬盘驱动器。
类型 | 转速 | 接口类型 | 容量 | 主要优势 |
SATA | 7200 | 3.0Gb/s | 500GB 740GB 1000G | 价格低 容量高 |
SCSI | 10000 15000 | 320MB/s | 146GB 300GB | 性能较高 |
SAS | 10000 15000 | 3.0Gb/s (全双工) | 146GB 300GB | 高性能 高可靠性 |
FC | 10000 15000 | 2Gb/s 4Gb/s | 146GB 300GB | 高性能 高可靠性 |
1.2、机械磁盘的结构与性能
磁头(head)每个盘片一般有上下两面分别对应1个磁头共2个磁头磁头是硬盘中最昂贵的部
件是硬盘技术最重要和关键的一环采用了非接触式结构加电后悬浮在高速旋转的磁盘表面。
磁道(track)当磁盘旋转时磁头若保持在一个位置上则每个磁头都会在磁盘表面划出一个圆形轨
迹这些圆形轨迹就叫做磁道。磁道是从盘片外圈往内圈编号0磁道1 磁道...靠近主轴的同心圆用
于停靠磁头不存储数据。
柱面(cylinder)硬盘通常由重叠的一组盘片构成每个盘面都被划分为数目相等的磁道并从外缘
的“0”开始编号具有相同编号的磁道形成一个圆柱称之为磁盘的柱面。
扇区(sector) 磁盘上的每个磁道被等分为若干个弧段这些弧段就被称为磁盘的扇区。
圆盘(platter) 就是盘片的数量。
硬盘的评价指标 | 说明 |
硬盘容量Capacity | 作为计算机系统的数据存储器容量是硬盘最主要的参数 硬盘的容量以兆字节MB或千兆字节GB为单位 |
硬盘转速Rotationl Speed | 转速是指硬盘盘片每分钟转动的圈数单位为rpmRevolutions Per Minute |
平均寻道时间Average Seek Time | 指磁头移动到数据所在磁道需要的时间这是衡量硬盘机械性能的重要指标 |
平均潜伏期 Average Latency | 指当磁头移动到数据所在的磁道以后等待指定的数据扇区转动到磁头下方的时间 |
平均访问时间Average Access Time | 指从读/写指令发出到第一笔数据读/写实际开始所用的平均时间 |
1.3、主引导记录MBR
主引导记录(MBR,Main Boot Record)是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操
作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对
硬盘进行初始化时产生。
通常,将包含MBR引导代码的扇区称为主引导扇区。在这一扇区中引导代码占有绝大部分的空间,故而
将习惯将该扇区称为MBR扇区(简称MBR)。由于这一扇区承担有不同于磁盘上其他普通存储空间的特殊
管理职能,作为管理整个磁盘空间的一个特殊空间,它不属于磁盘上的任何分区,因而分区空间内的格
式化命令不能清除主引导记录的任何信息。主引导扇区可以分为共512Bytes,可以分为三个部分:
主引导程序即主引导记录(MBR)446字节 | 存放 BootLoader, 可读取内核文件来执行的程序 |
分区表( Partition table) 64字节 | 每16字节为一个分区,共四个分区,其中主分区+扩展分区不能大于 4 个,且扩展分区只能有一个 |
结束标志 2字节 | 标记 MBR 是否有效,其值为AA55,存储时低位在前,高位在后,即看上去是55AA(十六进制)。 |
GUID 磁碟分割表(GUID partion Table):可扩展固件接口( EFI) 标准的一部分, 被用于代替
BIOS 系统中 32bit 来存储逻辑地址大小信息的开机主引导记录 MBR 分区。大于 2T 磁盘中,GUID 是
一种替代 MBR 的方式。
1.4、分区管理命令 fdisk/parted
fdisk:对于一块硬盘来讲,最多只能管理15个分区,无法处理 2TB 以上磁盘分区
fdisk -l [-u] [device...] p: 显示当前硬件的分区,包括没保存的改动 n: 创建新分区(e: 扩展分区 p: 主分区) d: 删除一个分区 w: 保存退出 q: 不保存退出 t: 修改分区类型 ( L: 显示所支持的所有类型) l: 显示所支持的所有类型 |
已经有分区处于使用状态的磁盘,新建分区后需要让内核重读其分区表:
CentOS 5:
# partprobe [DEVICE]
CentOS 6:
#partx -a [DEVICE]
#kpartx -af [DEVICE]
查看内核是否已经识别新的分区:cat /proc/partations
[root@mylinux ~]# cat /proc/partitions #查看当前分区 major minor #blocks name 252 0 20971520 vda 252 1 20970496 vda1 252 16 10485760 vdb 252 17 5243584 vdb1 [root@mylinux ~]# fdisk /dev/vdb #使用fdisk创建分区 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 a toggle a bootable flag #设置引导扇区 b edit bsd disklabel #编辑卷标(linux下使用的卷标bsd通用) c toggle the dos compatibility flag #切换DOS兼容标志 d delete a partition #删除一个分区 l list known partition types #列出已知分区类型 m print this menu #列出菜单选项 n add a new partition #新增一个分区 o create a new empty DOS partition table #创建一个空的DOS分区表 p print the partition table #显示分区表 q quit without saving changes #不保存退出 s create a new empty Sun disklabel #创建一个空的太阳磁盘标签 t change a partition‘s system id #改变分区类型 u change display/entry units #改变显示/输入单位 v verify the partition table #验证分区表 w write table to disk and exit #把分区表写入硬盘并退出 x extra functionality (experts only) Command (m for help): p #显示分区表 Disk /dev/vdb: 10.7 GB, 10737418240 bytes #磁盘文件与容量 16 heads, 63 sectors/track, 20805 cylinders #磁头、扇区、柱面大小 Units = cylinders of 1008 * 512 = 516096 bytes #每个磁柱的大小 Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xace28344 Device Boot Start End Blocks Id System /dev/vdb1 1 10404 5243584+ 83 Linux Command (m for help): n #创建新分区 Command action e extended p primary partition (1-4) p #创建一个主分区 Partition number (1-4): 2 First cylinder (10405-20805, default 10405): Using default value 10405 Last cylinder, +cylinders or +size{K,M,G} (10405-20805, default 20805): +2G #分区大小2G Command (m for help): p Disk /dev/vdb: 10.7 GB, 10737418240 bytes 16 heads, 63 sectors/track, 20805 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xace28344 Device Boot Start End Blocks Id System /dev/vdb1 1 10404 5243584+ 83 Linux /dev/vdb2 10405 14566 2097648 83 Linux Command (m for help): n #创建一个扩展分区 Command action e extended p primary partition (1-4) e Partition number (1-4): 4 First cylinder (14567-20805, default 14567): Using default value 14567 Last cylinder, +cylinders or +size{K,M,G} (14567-20805, default 20805): Using default value 20805 Command (m for help): p Disk /dev/vdb: 10.7 GB, 10737418240 bytes 16 heads, 63 sectors/track, 20805 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xace28344 Device Boot Start End Blocks Id System /dev/vdb1 1 10404 5243584+ 83 Linux /dev/vdb2 10405 14566 2097648 83 Linux /dev/vdb4 14567 20805 3144456 5 Extended Command (m for help): n #创建逻辑分区 Command action l logical (5 or over) p primary partition (1-4) l First cylinder (14567-20805, default 14567): Using default value 14567 Last cylinder, +cylinders or +size{K,M,G} (14567-20805, default 20805): +100M Command (m for help): p Disk /dev/vdb: 10.7 GB, 10737418240 bytes 16 heads, 63 sectors/track, 20805 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xace28344 Device Boot Start End Blocks Id System /dev/vdb1 1 10404 5243584+ 83 Linux /dev/vdb2 10405 14566 2097648 83 Linux /dev/vdb4 14567 20805 3144456 5 Extended /dev/vdb5 14567 14770 102784+ 83 Linux Command (m for help): t #更改分区类型 Partition number (1-5): 5 Hex code (type L to list codes): L #显示所有支持的分区类型 0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris 1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT- 2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT- 4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx 5 Extended 42 SFS 86 NTFS volume set da Non-FS data 6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / . 7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility 8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt 9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT f W95 Ext‘d (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/ 10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b 11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor 12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor 14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary 16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS 17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE 18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto 1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep 1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT 1e Hidden W95 FAT1 Hex code (type L to list codes): 8e Changed system type of partition 5 to 8e (Linux LVM) Command (m for help): p #查看已创建的分区 Disk /dev/vdb: 10.7 GB, 10737418240 bytes 16 heads, 63 sectors/track, 20805 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xace28344 Device Boot Start End Blocks Id System /dev/vdb1 1 10404 5243584+ 83 Linux /dev/vdb2 10405 14566 2097648 83 Linux /dev/vdb4 14567 20805 3144456 5 Extended /dev/vdb5 14567 14770 102784+ 8e Linux LVM #分区类型改变 Command (m for help): w #保存退出 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@mylinux ~]# partx -a /dev/vdb #通知内核读取分区表 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 4 BLKPG: Device or resource busy error adding partition 5 [root@mylinux ~]# kpartx -af /dev/vdb [root@mylinux ~]# cat /proc/partitions #查看当前磁盘上已存在的分区 major minor #blocks name 252 0 20971520 vda 252 1 20970496 vda1 252 16 10485760 vdb 252 17 5243584 vdb1 252 18 2097648 vdb2 252 20 1 vdb4 252 21 102784 vdb5
传统的MBR(Master Boot Record)分区方式,有一个局限:无法支持超过2TB的硬盘的分区(或单个分
区超过2TB),这个情况在当前这个数据量激增的时候,实在令人难以接受(尤其是企业级的应用,动辄
数TB的数据量)。GPT的分区表很好了解决了传统MBR无法逾越2TB的限制。但是在Linux系统中,传统的
fdisk命令无法支持gpt分区方式。 因此出现了parted命令。
parted的操作都是实时的,也就是说你执行了一个分区的命令,他就实实在在地分区了,而不是像
fdisk那样,需要执行w命令写入所做的修改, 所以进行parted的测试千万注意不能在生产环境中。
[root@mylinux ~]# parted /dev/vdb GNU Parted 2.1 使用 /dev/vdb Welcome to GNU Parted! Type ‘help‘ to view a list of commands. (parted) help #显示帮助信息 align-check TYPE N check partition N for TYPE(min|opt)alignment check NUMBER #对文件系统做简单的检查 cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER #复制文件系统到另一个分区 help [COMMAND] #显示帮助 COMMAND mklabel,mktable LABEL-TYPE #创建新的磁盘标签(分区标签) mkfs NUMBER FS-TYPE #在NUMBER分区上创建FS-TYPE类型文件系统 mkpart PART-TYPE [FS-TYPE] START END #创建一个分区 mkpartfs PART-TYPE FS-TYPE START END #用文件系统做分区 move NUMBER START END #移动分区NUMBER name NUMBER NAME #为分区 NUMBER命名为NUME print [devices|free|list,all|NUMBER] #显示分区表、可用磁盘、空闲空间、所有可见分区 或者特别的分区 quit #退出程序 rescue START END #从START开始修复丢失的分区 and END resize NUMBER START END #重新设置分区NUMBER大小和文件系统类型类型 rm NUMBER #删除分区NUMBER select DEVICE #选择磁盘DEVICE进行编辑操作 set NUMBER FLAG STATE #改变分区NUMBER的标志 toggle [NUMBER [FLAG]] #在分区NUMBER上切换标志的状态 NUMBER unit UNIT #设置默认单位为UNIT version #显示软件的版本信息 (parted) print #显示当前磁盘上的分区 Model: Virtio Block Device (virtblk) Disk /dev/vdb: 10.7GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system 标志 1 32.3kB 5369MB 5369MB primary ext2 2 5369MB 7517MB 2148MB primary 4 7517MB 10.7GB 3220MB extended 5 7517MB 7623MB 105MB logical lvm (parted) rm 2 #删除2号分区 (parted) print Model: Virtio Block Device (virtblk) Disk /dev/vdb: 10.7GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system 标志 1 32.3kB 5369MB 5369MB primary ext2 4 7517MB 10.7GB 3220MB extended 5 7517MB 7623MB 105MB logical lvm (parted) mkpart #创建分区 分区类型? primary/主分区/logical/逻辑分区? primary 文件系统类型? [ext2]? 起始点? 5369MB 结束点? 7517MB 警告: You requested a partition from 0.00B to 2000MB. The closest location we can manage is 512B to 31.7kB. Is this still acceptable to you? 是/Yes/否/No? Yes 警告: The resulting partition is not properly aligned for best performance. 忽略/Ignore/放弃/Cancel? Ignore (parted) p Model: Virtio Block Device (virtblk) Disk /dev/vdb: 10.7GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system 标志 1 32.3kB 5369MB 5369MB primary ext2 2 5369MB 7517MB 2148MB primary #新建的分区 4 7517MB 10.7GB 3220MB extended 5 7517MB 7623MB 105MB logical lvm (parted) quit #退出 信息: You may need to update /etc/fstab.
本文出自 “随风而飘” 博客,请务必保留此出处http://yinsuifeng.blog.51cto.com/10173491/1912091
一、磁盘基础与分区