磁盘管理
一、分区概念
硬盘分区是指将硬盘的整体存储空间划分成多个独立的区域,分别用于安装操作系统,应用程序以及存储数据文件等。例如Windows系统也分为CDEFG盘,其中C盘一般作为安装操作系统的盘。这些盘就是一个个在物理硬盘上创建的独立的逻辑单元(分区)。
在分区之前,应该做一些准备和计划工作,包括一块硬盘要划分几个分区,每个分区应该有多大的容量,以及每个分区准备使用什么文件系统等等。从文件存放和管理方便,容易和快捷出发,建议将硬盘划分成多个分区,用来存放不同类型的文件。
硬盘分区从实质上说就是对硬盘的一种格式化。
硬盘分区的格式分为MBR和GPT两种:
(1)MBR分区:
MBR是主引导记录(Master Boot Record)的英文缩写,在传统硬盘分区模式中,引导扇区是每个分区(Partition)的第一扇区,而主引导扇区是硬盘的第一扇区。为了方便计算机访问硬盘,把硬盘上的空间划分成许许多多的区块(英文叫sectors,即扇区),然后给每个区块分配一个地址,称为逻辑块地址(即LBA)。
在MBR磁盘的第一个扇区内保存着启动代码和硬盘分区表。启动代码的作用是指引计算机从活动分区引导启动操作系统(BIOS下启动操作系统的方式);分区表的作用是记录硬盘的分区信息。
在MBR中,分区表的大小是固定的,一共可容纳4个主分区信息。在MBR分区表中逻辑块地址采用32位二进制数表示,因此一共可表示2^32(2的32次方)个逻辑块地址。如果一个扇区大小为512字节,那么MBR硬盘最大分区容量仅为2TB。
Tips:
- 单个分区大小不能超过2TB
- 主分区最多4个,如果分区多于4个,就要将其中一个分区设置为1个扩展分区(占用1个主分区的位置),然后在扩展分区内建立逻辑分区(逻辑分区的序号永远从5开始)。
(2)GPT分区
GPT是GUID磁碟分割表(GUID Partition Table)的缩写,含义“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准。
在GTP磁盘的第一个数据块中同样有一个与MBR(主引导记录)类似的标记,叫做PMBR。PMBR的作用是,当使用不支持GPT的分区工具时,整个硬盘将显示为一个受保护的分区,以防止分区表及硬盘数据遭到破坏。UEFI并不从PMBR中获取GPT磁盘的分区信息,它有自己的分区表,即GPT分区表。
GPT的分区方案之所以比MBR更先进,是因为在GPT分区表头中可自定义分区数量的最大值,也就是说GPT分区表的大小不是固定的。在Windows中,微软设定GPT磁盘最大分区数量为128个。另外,GPT分区方案中逻辑块地址(LBA)采用64位二进制数表示,可以表示2^64个逻辑块地址。除此之外,GPT分区方案在硬盘的末端还有一个备份分区表,保证了分区信息不容易丢失。
Tips:
- 没有主分区、扩展分区和逻辑分区,全部采用GUID来标识,最多支持128个分区;
- 可以支持2TB以上的分区
- GPT分区方案在硬盘的末端还有一个备份分区表,保证了分区信息不容易丢失。
二、实验前准备
给虚拟机添加一块全新的硬盘盘(NVMe,容量 20GB)
(1)由于NVMe硬盘不能热插拔,所以需要将虚拟机关机
命令:shutdown -h now
Tips:-h关机后不启动 -r关机后立即启动
-t xxx(数字)几秒后关机 -c取消一个shutdown进程
(2)在VMware左边的菜单栏上右键点击想要新增硬盘的虚拟机,选择设置,打开虚拟机设置界面。
在下方点击添加,硬件类型选择硬盘-》NVMe(V)-》创建新的虚拟磁盘-》磁盘大小选择20GB(将虚拟磁盘拆分为多个文件)-》完成
三、分区的基本操作方法
(1)MBR基本分区的操作方法:
A. 查看磁盘:fdisk -l
B. 进入fdisk操作界面:fdisk /dev/nvme0n2(按m可以查看帮助)、
C. 建立分区(大小为2G)
创建分区成功后,可以使用命令p查看当前分区
最后,一定要牢记使用w保存创建的分区
D. 让内核加载新的分区信息
partprobe ##重新读取分区信息
lsblk ##查看块设备的信息
Tips:
在使用fdisk创建分区时,我们会使用partprobe命令可以使kernel重新读取分区信息,从而避免重启系统,但是有时候会遇到下面错误信息“Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only.”(如上图所示)
其实不要担心和紧张, /dev/sr0是光驱(CD Drive),因为运行partprobe时没有指定设备,所以它会检查所有的块设备(block devices),由于光驱是read-only,所以报上述告警信息。但是partprobe命令还是成功执行的。
其实避免这个错误也很简单,你只需要使用partprobe检查、扫描指定设备即可。
E. 创建文件系统(对分区进行格式化)
F. 挂载(将块设备映射到系统上的指定目录上,实现对数据的读写)
临时挂载:
Tips:df -Th ##查看磁盘大小
df -i ##查看inode:文件的字节数,拥有者id,组id,权限,改动时间,链接数,数据block的位置
永久挂载:配置文件/etc/fstab,建议用硬件唯一标识符UUID来挂载
blkid ##显示可用块设备的信息,用于指定的键值对搜索一个设备,或是显示一个或多个设备的键值对
记录下该块设备的UUID后,在配置文件/etc/fstab中写入配置信息
确定保存后,重新挂载一次(mount -a),然后进行挂载点创建一个文件以供测试,确定新建的分区可以正常使用。
Tips:磁盘设备的常见命名(X代表磁盘号,Y代表分区号,Z代表总线号):
/dev/hdXY:机械硬盘(IDE等)
/dev/sdXY:机械硬盘(SATA/SCSI)/U盘
/dev/vdXY:虚拟磁盘
/dev/nvmeZnXpY:NVMe协议硬盘
/dev/sr0:光驱
/dev/mapper/part_name-dir_name:映射磁盘(LVM或者网络磁盘)
(2)GPT基本分区的操作方法:
A. 为虚拟机再添加一个新的硬盘nvme0n3
B. 新硬盘分区:gdisk /dev/nvme0n3(按?查看帮助)
通过帮助可以知道,常用命令n是新建一个分区,p是打印分区表,d是删除一个分区,w是保存设置并退出。详情如下:
最后按下w保存分区设置并退出。
最后使用命令lsblk查看块设备信息,此时已经可以看到刚新建的分区了
C. 格式化(此处用ext4文件系统)
D. 挂载(这里只演示永久挂载)
由于做gdisk的教学开始,与做fdisk使用的是两台不同的电脑,所以硬盘分区/dev/nvme0n2p1等块设备的UUID与前面的不一致,请谅解。
(3)使用命令parted进行分区操作
parted和fdisk类似,先选择要进行分区操作的硬盘/dev/nvme0n4
A. 创建分区
选择了/dev/nvme0n2作为我们操作的磁盘,接下来需要创建一个分区表(在parted中可以使用help命令打印帮助信息):
mklabel ##创建一个新的分区表
B. 完成分区操作
创建好分区表以后,接下来就可以进行分区操作了,执行mkpart命令,分别输入分区名称,文件系统和分区的起止位置。
Tips:
Start和End可以用百分比表示,比如0%和50%
使用print查看分区详情
C. 删除分区
如果分区错了,可以使用rm命令删除分区,比如我们要删除上面的分区,然后打印删除后的结果。
首先再创建一个分区
使用rm删除多余的分区
D. 格式化和挂载(与fdisk相同,下略)