一、Linux的设备文件分类
1、在Linux系统中设备文件是用来与外接交互的接口,它将内核中的硬件设备与文件系统关联起来,让用户可以像操作普通文件一样来操作硬件设备,同时也为开发者提供了方便而强大的应用程序接口。 2、Linux的设备都以文件的形式存在/dev中,根据设备文件的不同,又分为【字符设备文件】和块【设备文件】。 | ||
序号 | Linux的设备文件分类 | 说明 |
1 | 字符设备文件 | 1、字符设备文件使用【c】作为标识; 2、字符设备文件的存取是以字符流的方式来进行的,一次传送一个字符(常见的字符设备有:终端【TTY】、打印机、鼠标、键盘、绘图仪等);字符设备文件有时也叫做【raw】设备文件; |
2 | 块设备文件 | 1、块设备文件使用【b】作为标识; 2、块设备文件是以数据块的方式来存取的(常见的设备有:硬盘、U盘等)【即:系统通过块设备文件存取数据的时候,先从内存中的buffer中读或写数据;而不是直接传送数据到物理磁盘,这种方式有效的提高了磁盘的I/O性能】 |
二、Linux的磁盘存储管理
2.1、MBR与GPT
序号 | MBR | GPT |
1 | MBR(Master Boot Record)主引导记录;它由三部分组成【主引导程序】【硬盘分区表】【硬盘有效标志】,共占用512字节 | GPT(GUID Partition Table)全局唯一标识分区表,是一个物理硬盘的分区结构,它用来替代BIOS中的主引导记录分区表(MBR) |
2 | 1、主引导程序(main boot loader)占用446个字节; 2、硬盘分区表(disk partition table)简称DPT,占用64个字节(主要用于对硬盘分区有多少以及每一个分区的大小都记录在这里); 3、硬盘有效标志(magic number)占用2个字节,固定为55AA | |
3 | MBR的特点: 由于MBR分区的分区表保存在硬盘的第一个扇区,且只有64个字节大小,所以最多只能有四个表项【即:我们只能把硬盘分为4个主分区;或者分成小于等于3个主分区在加上一个扩展分区】 | GPT的特点: 《1》对分区的数量没有限制; 《2》GPT可管理硬盘大小最大为18EB,几乎是无限大了; |
4 | MBR分区的优缺点: 《1》优点:MBR的分区简单,支持度高,很多操作系统都可以从MBR分区的硬盘启动。 《2》缺点:MBR分区不能识别大于2T的硬盘空间,且不能有大于2T的分区。 | GPT分区缺点: 《1》要从GPT分区的硬盘启动,需要UEFI主板、硬盘使用GPT分区、操作系统支持GPT这三个硬性条件。 《2》必须使用64位系统。 |
传统BIOS主要支持MBR引导,UEFI则是取代传统BIOS,因为UEFI加入了对新硬件的支持。 |
2.2、BIOS与UEFI
序号 | BIOS | UEFI |
1 | BIOS(Basic Input Output System)基本输入输出系统;是最古老的一种系统固件和接口,采用汇编语言进行编程,并使用中断来执行输入和输出操作,在它刚出现的时候就确定了个人计算机生态系统的基本框架 | UEFI(Unified Extensible Firmware Interface)统一可扩展固件接口;它定义了一种在操作系统和平台固件之间的接口标准。 这种接口用于操作系统自动从预启动的操作环境(即:在系统启动之后,但在操作系统开始运行之前)加载到操作系统上,从而使开机程序化繁为简,节省时间。 注意:准确的说UEFI是一种规范,不同厂商根据该规范对UEFI的实现,并做出个人电脑固件后,该固件就是UEFI固件 |
UEFI比BIOS先进的三个方面: 《1》可读取分区表; 《2》可访问某些特定文件系统中的文件; 《3》可执行特定格式的代码。 可以说UEFI更像是一个简易的操作系统。 | ||
UEFI的目标是取代传统BIOS,它不支持MBR模式,仅支持GPT格式。 不过,近年出现的UEFI主板,采用UEFI+BIOS共存模式,并且BIOS中集成UEFI启动项。 |
2.3、Linux操作系统对GPT+UEFI支持列表
注意:下表中【1=BIOS+MBR】、【2=UEFI+GPT】;
简单总结一下就是:
《1》红帽系的Linux操作系统Centos6.X之下的(如Centos5.x、Centos4.x)64位系统不支持【UEFI+GPT】作为系统盘,只支持【BIOS+MBR】做系统盘。
《2》红帽系的Linux操作系统Centos6.X及其更高版本(Fedora18及其更高版本)的64位系统支持【UEFI+GPT】【BIOS+MBR】这两种做系统盘(必须要使用UEFI)和数据盘。
《3》德班系的Linux操作系统Debian8.0及其更高版本(Ubuntu13.04及其更高版本)的64位系统支持【UEFI+GPT】【BIOS+MBR】这两种做系统盘(必须要使用UEFI)和数据盘。
《4》SUSE的Linux系统是在SUSE Linux Enterprise Server 11 SP3及其更高版本的64位系统支持【UEFI+GPT】【BIOS+MBR】这两种做系统盘(必须要使用UEFI)和数据盘。
《5》FreeBSD的系统是在FreeBSD10.1及其更高版本的64位系统支持【UEFI+GPT】【BIOS+MBR】这两种做系统盘(必须要使用UEFI)和数据盘。
2.4、使用fdisk工具划分磁盘分区实操
fdisk是Linux下的一款功能强大的磁盘分区管理工具(既可以观察硬盘的使用情况;也可以对磁盘进行分割操作)fdisk工具不支持GPT格式分区。且fdisk工具对分区有大小限制(最大只能划分小于2T的磁盘) Linux下类似的磁盘分区管理工具还有【cfdisk】、【parted】等,parted是一个功能更为强大的分区工具,它支持GPT格式分区。 | ||
序号 | 查询命令 | 说明 |
1 | fdisk -l | 可查看Linux中所有的磁盘分区信息; |
2 | fdisk -l device | 可查看Linux中指定磁盘的分区信息; (如只查看/dev/sdb设备的分区信息命令【fdisk -l /dev/sdb】) |
3 | fdisk -h | 可查看fdisk工具的使用帮助信息; |
fdisk的使用分为两个部分【查询】和【交互操作】可以通过【fdisk device】进入指定磁盘的分区命令交互界面。 fdisk的磁盘分区命令交互界面命令说明如下(如:进入/dev/sdb磁盘设备命令是【fdisk /dev/sdb】) | ||
序号 | 磁盘分区交互命令 | 说明 |
1 | d | 删除一个分区 |
2 | l | 列出已知的分区类型 |
3 | m | 显示fdisk每个交互命令的详细含义 |
4 | n | 增加一个新的分区 |
5 | p | 显示分区信息 |
6 | t | 改变分区类型 |
7 | F | 列出未分区的空闲区 |
8 | q | 退出交互操作,不保存操作的内容 |
9 | w | 写分区表信息写入到硬盘,保存操作退出 |
通过使用【fdisk -l】【df -h】这两个命令我们可以查看到当前的【/dev/sdb】设备还没有进行对应的分区和挂载使用,所以我们接下来就对【/dev/sdb】设备进行分区实操与挂载:
#使用fdisk命令对【/dev/sdb】新硬盘进行分区操作实战#1-使用fdisk工具打开【/dev/sdb】硬盘设备命令
fdisk /dev/sdb#2-查看fdisk分区所有命令选项及其说明帮助
m#2-查看【/dev/sdb】硬盘设备的分区信息命令
p#3-添加新分区
n#4-创建一个主分区操作(按下p表示主分区,分区号不用填写默认即可,扇区号也不用填写默认即可,磁盘大小需要使用+size{K,M,G,T,P}来设置【如设置这个分区的大小为2g则输入+2g即可】)主分区只能创建3个,其他的就是拓展分区了#5-创建扩展分区是在创建第四个分区的时候创建的(分区号、扇区号不用填写,且磁盘大小也不用填写【表示将剩下的所有磁盘空间都作为扩展分区】)#6-创建扩展分区的逻辑分区操作所使用的空间总容量是扩展分区的容量(分区号、扇区号都不用操作默认即可,磁盘大小根据自己需要设置也是一样的使用+size{K,M,G,T,P}来设置【如设置这个分区的大小为1g则输入+1g即可】;需要注意的是这里设置的逻辑分区大小不能够大于扩展分区所拥有的总空间)#7-分区完成后先查看磁盘分区情况,若没有问题则输入w保存分区信息
p
w#8-需要对所有新创建的分区逐一进行格式化(格式化的格式一般选择ext4或者xfs【我们这里使用ext4格式对/dev/sdb1进行格式化】)
#【需要特别注意第四个分区是扩展容器不能被格式化】
mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdb2
mkfs.ext4 /dev/sdb3
mkfs.ext4 /dev/sdb5
mkfs.ext4 /dev/sdb6#9-逐一挂载格式化好的分区到指定的路径下(这里的mount挂载分区时不用单独指定格式,会自动识别)
#手动指定/dev/sdb1分区的格式为ext4且挂载到/mnt路径下
mount -t ext4 /dev/sdb1 /mnt
#直接将/dev/sdb1设备挂载到默认的/mnt目录下
mount /dev/sdb1 /mnt#10-创建/data1目录且将/dev/sdb2分区挂载到该目录下(剩下的其他分区可根据需要自行挂载)
mkdir /data1
mount /dev/sdb2 /data1
#如果需要对指定分区的类型进行修改(则操作如下)#1-使用fdisk命令进入指定磁盘(如:/dev/sdb)
fdisk /dev/sdb#2-查看磁盘的分区情况
p#3-查看当前磁盘支持的所有类型命令
l#4-修改磁盘类型(输入t进入修改模式,输入磁盘分区编号【如修改分区5的类型】,输入类型代码【如修改为HPFS/NTFS/exFAT】)命令
t
5
7#5-查看磁盘的分区情况
p#6-若修改的指定磁盘分区类型正确则保存修改后退出命令
w
注意:如果需要使用fdisk对磁盘进行分区等实操(最好是新创建一个磁盘进行操作),我们可以在虚拟机(如VMware对应的Linux系统启动前先编辑新增一个硬盘就可以了,在进行如下操作前最好是系统关机后再操作)。
选中需要新增硬盘的Linux系统-->点击鼠标右键【设置】-->【硬件】-->【添加】-->【硬盘】-->【下一步】-->【SCSI(推荐)】-->【下一步】-->【创建新虚拟磁盘】-->【下一步】-->【输入自己需要设置的硬盘大小】-->【将虚拟磁盘存储为单个文件】-->【下一步】创建完成后,关闭该虚拟机设置界面。然后重启该Linux系统。在VMware虚拟机上给Linux系统新增一块硬盘的详细操作如下图所示:
2.5、使用parted工具划分磁盘分区实操——推荐使用
parted磁盘管理工具可划分GPT格式分区,且对划分的磁盘分区没有大小限制;更适合现在磁盘的情况(目前磁盘一般都4T起步了); 如果系统没有parted命令,则可以执行【yum -y install parted】命令直接安装 | ||
序号 | parted查询命令 | 说明 |
1 | parted -l | 列出所有块设备的分区配置 |
2 | parted -h | 列出关于parted工具的参数内容及其说明信息 |
parted的使用分为两个部分【查询】和【交互操作】可直接输入【parted】进入磁盘的分区命令交互界面(默认进入第一块磁盘)。 | ||
序号 | parted交互模式常用参数 | 说明 |
1 | | 查看磁盘的分区信息,可简写为p;该命令有三个选项: 《1》devices 显示系统的所有块设备 《2》free 显示当前磁盘的所有信息(且显示磁盘的剩余空间) 《3》list,all 显示所有磁盘信息 |
2 | select | 选择需要编辑的设备(如切换到/dev/sdb设备命令:select /dev/sdb) 【因为直接输入parted进入命令交互模式后默认使用的是系统第一块磁盘;若系统有多块硬盘,就需要使用这个select命令切换了】 |
3 | help | 查看parted的交互命令及其含义 |
4 | rm | 删除指定数字编号的分区(如删除分区1命令是:rm 1) |
5 | mklabel | 创建磁盘的分区表结构(是设置msdos还是gpt格式)【如创建为gpt格式命令为:mklabel gpt】; |
6 | mkpart | 创建新分区 语法【mkpart 分区类型 [文件系统类型] 起始点 结束点】; 《1》分区类型主要有【primary(主分区)】【extended(扩展分区)】【logical(逻辑区)】; 《2》文件系统类型主要有【xfs、ext2、ext3、ext4、fat16、fat32、hfs、hfs+、linux-swap、ntfs 或 reiserfs】;该参数是可选的,可以不用填写。 《3》起始点:表示分区的起始位置 《4》结束点:表示分区的结束位置 |
7 | quit | 保存退出parted的命令交互模式,可简写为q(即:保存在命令交互模式的操作后再退出) |
对新创建的分区进行格式化与挂载操作 | ||
1 | 需要对所有新创建的分区逐一进行格式化 | 《1》格式化的格式一般选择ext4或者xfs【我们这里使用ext4格式对/dev/sdb1进行格式化】; 《2》对分区格式化命令: |
2 | 需要对所有新创建的分区格式化后进行逐一挂载 | 创建/data1目录且将/dev/sdb1分区挂载到该目录下(剩下的其他分区可根据需要自行挂载) |
三、其他资料
分区 - ArchWikihttps://wiki.archlinuxcn.org/wiki/Partitioning第 3 章 磁盘分区 | 管理存储设备 | Red Hat Enterprise Linux | 10 | Red Hat Documentation
https://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/10/html/managing_storage_devices/disk-partitions