磁盘管理与文件系统
目录
- 磁盘基础
- 磁盘接口类型
- 磁盘分区表示
- 管理磁盘及分区
- 管理文件系统
- 挂载、卸载文件系统
- 设置文件系统自动挂载
磁盘基础(硬盘Hard Disk Drive,简称HDD)
硬盘的物理结构
盘片∶硬盘有多个盘片,每盘片2面
磁头∶每面一个磁头
硬盘的数据结构
扇区∶盘片被分为多个扇形区域,每个扇区存放512字节的数据,硬盘的最小存储单位
磁道∶ 同一盘片不同半径的同心圆,是由磁头在盘片表面划出的圆形轨迹
柱面∶ 不同盘片相同半径构成的圆柱面,由同一半径圆的名个磁道组成
硬盘的存储容量
公式:硬盘存储容量= 磁头数×磁道 (柱面)数x每道扇区数x每扇区字节数(512字节)
可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域
磁盘接口类型
按数据接口不同,大致分为IDE、SATA、SCSI、SAS、光纤通道,接口速度不是实际硬盘传输的速度
IDE,并口数据线连接主板与硬盘,抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被 SATA 所取代。
SATA,抗干扰性强,支持热插拔等功能,速度快,纠错能力强。
SCSI,小型机系统接口,SCSI硬盘广为工作站级个人电脑以及服务器所使用, 资料传输时CPU占用率较低,转速快,支持热插拔等。
SAS,是新一代的SCSI技术, 和SATA硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到 6Gb/s。
磁盘分区表示
主引导记录MBR(Master Boot Record)
MBR是主引导记录,位于硬盘第一个物理扇区处,MBR中包含硬盘的主引导程序和硬盘分区表。MBR总共512字节,前446字节是主引导记录分区表保存在MBR扇区中的第447-510字节中。分区表有4个分区记录区,每个分区记录区占16字节。主启动记录(MBR)磁盘分区支持最大卷为2.2TB,每个磁盘最多有4个主分区,或3个主分区、1个扩展分区和在扩展分区里面分多个逻辑区
磁盘分区表示
Linux中将硬盘、分区等设备均表示为文件
例如:/dev/sdb5
hd 表示IDE设备 sd 表示SCSI设备
硬盘的顺序号,以字母a、b、C.... 示
分区的顺序号,以数字1、2、3..表示。
主分区从1-4,第一个逻辑分区始终从5开始。
查看磁盘分区 fdisk -l 【磁盘设备】
全局唯一标识分区表(GUID Partition Table,缩写∶GPT)
GPT是一个实体硬盘的分区结构。它是可扩展固件接口标准的一部分,用来替代BIos中的主引导记录分区表。
传统的主启动记录(MBR)磁盘分区支持最大卷为2.2TB,每个磁盘最多有4个主分区,或3个主分区、1个扩展分区和在扩展分区里面分多个逻辑分区。
与MBR分区方法相比,GPT具有更多的优点,因为它允许每个磁盘有多达128个分区,支持高达18EB(千兆兆字节)的卷大小,允许将主磁盘分区表和备份磁盘分区表用于冗余,还支持唯一的磁盘和分区 ID (GUID)。
1.若磁盘小于2TB,可用fdisk /dev/sdb 进行分区,即MBR 分区格式
2.若磁盘大于2TB,可用parted /dev/sdb 进行分区,因为MBR分区磁盘是不能大于2.2TB,所以超过2TB一般使用GPT
使用GPT创建步骤
第一步:选择分区硬盘,使用parted命令类似于fdisk(表示在parted中输入的命令,其他为自动打印的信息)
例如:parted /dev/hdd
第二步:创建分区,选择了/dev/hdd作为我们操作磁盘,接下来需要创建一个分区表
第三步:创建好分区表以后,接下来就可以进行分区操作了,执行mkpart命令,分别输入分区名称,文件系统和分区的起止位置
第四步:分好区后可以使用print命令打印分区信息,验证分区信息
*删除分区示例:如果分区错了,可以使用rm命令删除分区
第五步:格式化操作,完成后即可挂载使用
例如:mkfs.ext4 /dev/hdd1
mkdir /data
mount /dev/hdd1 /data
Linux中使用的文件系统类型
文件系统(File System)类型决定了向分区中存放、读取文件数据的方式和效率,在对分区进行格式化时需要选择所使用的文件系统类型。在 Windows 操作系统中,经常使用的文件系统类型包括FAT32、NTFS 等格式;而在 Linux系统中,最常使用的文件系统主要包括以下几种格式。
EXT4∶第 4代扩展文件系统,用于存放文件和目录数据的分区,是Linux系统中默认使用的文件系统。EXT4 是典型的日志型文件系统,其特点是保存有磁盘存取记录的日志数据,便于恢复,在存取性能和稳定性方面更加出色。CentOS 6使用。
SWAP∶ 交换文件系统,作用于硬盘上,用于为 Linux 系统建立交换分区。交换分区的作用相当于虚拟内存,能够在一定程度上缓解物理内存不足的问题。一般建议将交换分区的大小设置为物理内存的1.5 ~2 倍。简单来说,当系统内存不足时把一些空闲软件放到虚拟内存中,全力运行需要的软件,当下次需要运行某个空闲软件时,在把其他空闲的软件放入到虚拟内存中,将这次需要运行的软件交换出来。例如,对于拥有512MB 物理内存的主机,其交换分区的大小建议设置为 1024MB。如果服务器的物理内存足够大(如 8GB 以上),也可以不设置交换分区。交换分区不用于直接存储用户的文件和目录等数据。
XFS∶ 存放文件和目录数据的分区,高性能的日志文件系统,特别擅长于处理大文件,可支持上百万TB的存储空间,是CentOS 7系统中默认使用的文件系统。由于 XFS 文件系统开启日志功能,所以即便发生宕机也不怕数据遭到破坏,这种文件系统可以根据日志记录在短时间内进行数据恢复。
Linux 系统还广泛支持其他各种类型的文件系统,如 JFS、FAT16、FAT32、NTFS、LVM等。JFS 文件系统多用于商业版本的UNIX操作系统中,具有出色的性能表现。由于 NTFS 是微软公司的专有文件系统,Linux系统默认只支持从NTFS分区读取文件,如果需要向 NTFS分区中写入文件数据,需要结合其他辅助软件(如NTFS-3G)
首先我们添加一个50G的新硬盘方便后面的实验
管理磁盘及分区
检查并确认新硬盘
查看磁盘分区
可以查看、确认新增磁盘的设备名称和位置
格式:fdisk -l [磁盘设备]
新硬盘设备还未进行初始化,没有包含有效的分区信息。对于已有的分区可以查看出常见的一些信息参数
Device (设备)∶ 分区的设备文件名称
Boot∶ 是否是引导分区。若是,则有"*"标识
Start∶ 该分区在硬盘中的起始位置 (柱面数)
End∶ 该分区在硬盘中的结束位置 (柱面数)
Blocks∶ 分区的大小,以 Blocks(块)为单位,默认的块大小为 1024 字节。
Id∶ 分区对应的系统 ID 号。例如,83表示Linux中的XFS分区或EXT4分区、8e表示LVM逻辑卷,82表示SWAP分区(虚拟内存)
System∶ 分区类型。
规划管理磁盘分区
在硬盘设备中创建、删除、更改分区等操作同样通过fdisk命令进行,只要使用硬盘的设备文件作为参数,即进入交互模式的分区管理界面进行设置
格式:fdisk [磁盘目录]
例如:fdisk /dev/sdb
交互模式中的常用指令∶
m∶获取帮助菜单
n∶新建分区
p∶查看分区情况
d∶删除分区
t∶变更分区的类型
w∶保存分区操作并退出
q∶不保存分区操作并退出
创建分区步骤
进入交互模式后
第一步:n新建分区
第二步:选择创建分区类型:p主分区、e扩展分区、l逻辑分区
第三步:设置分区1(范围1~4,按Enter接受默认值)
第四步:设置柱面序列:直接按Enter接受默认值即可
第五步:设置分区大小:+20G(指定大小为20GB,如果按Enter键接受默认值表示所有空间)
第六步:w保存退出
*变更硬盘(特别是正在使用的硬盘)的分区设置以后,建议最好将系统重启一次,或者执行"partprobe "命令使操作系统检测新的分区表状况。以防格式化分区时损坏硬盘中已有的数据。
例如:partprobe /dev/sdb(刷新磁盘)
创建一个主分区
创建一个逻辑分区
创建好分区表后保存退出
可以查看已经分好的分区,并且sdb4为扩展分区,其中包含了两个逻辑分区sdb5,sdb6。
管理文件系统
mkfs创建文件系统
mkfs命令,Make Filesystem,创建文件系统(格式化),一个前端的工具,可以自动加载不同的程序来创建多种类型的分区,而后端包括有多个与mkfs命令相关的工具程序,这些程序位于/sbin/目录中
格式:mkfs -t 文件系统类型 分区设备
例如:mkfs -t xfs /dev/sdb1
CentOS6 系统默认使用ext4文件系统,而 CentOS7系统默认使用xfs文件系统。当然文件系统的选择是要根据实际的生产环境和硬盘类型等条件来决定的,例如 SAS/ SATA 硬盘文件系统选择方案可根据具体情况分为以下几类∶
如果是数据库业务,则选择 xfs 类型的文件系统
如果有大量小文件的业务,一般首选 ReiserFS 的文件系统
常规应用选择默认的文件系统即可
mkswap 创建交换文件系统
在Linux系统中,Swap分区的作用类似于Windows 系统中的"虚拟内存",可以在一定程度上缓解物理内存不足的情况。当当前Linux 主机运行的服务较多,需要更多的交换空间支撑应用时,可以为其增加新的交换分区。
使用 mkswap 命令工具可以在指定的分区上创建交换文件系统,目标分区应先通过fdisk工具将ID号设为82。
格式:mkswap 分区设备
例如:mkswap /dev/sdb5
然后启用生效:swapon /dev/sdb5启用交换分区
swapoff /dev/sdb5停用交换分区
首先代码号改为交换分区的ID号82,然后创建挂载分区
需要启动后才可以看到sdb6的内存已经添加到交换系统swap中
挂载、卸载文件系统
在Linux 系统中,对各种存储设备中的资源访问(如读取、保存文件等)都是通过目录结构进行的,虽然系统核心能够通过"设备文件"的方式操纵各种设备,但是对于用户来说,还需要增加一个"挂载"的过程,才能像正常访问目录一样访问存储设备中的资源。
当然,在安装Linux 操作系统的过程中,自动建立或识别的分区通常会由系统自动完成挂载,如"/"分区、"/boot"分区等。然而对于后来新增加的硬盘分区、光盘等设备,有时候还需要管理员手动进行挂载,实际上用户访问的是经过格式化后建立的文件系统。挂载一个分区时,必须为其指定一个目录作为挂靠点(或称为挂载点),用户通过这个目录访问设备中的文件、目录数据。
挂载文件系统mount
格式:mount[-t 文件类型]存储设备 挂载点目录
mount -o loo ISO镜像文件 挂载点目录
-t∶用于指定文件系统类型,通常可以省略,由系统自动识别
-o∶ 挂载参数列表,以英文逗号分隔;或用来描述特殊设备,用loop指定
例如:mount /dev/cdrom /mnt
mount /dev/sdbl /opt
例如:挂载已下载到系统中的镜像文件
mount -o loop CentOS-7-x86 64-DVD-1708.iso /media
:mount -a——重新读取mount挂载
卸载文件系统umount
格式:umount [-lf] 存储设备或者挂载点目录
-l:表示解除正在繁忙的文件系统
-f:表示强制
查看磁盘使用情况df
格式:df [选项]
显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示
-h∶ 显示分区的容量单位
-T∶ 显示文件系统的类型
-i∶ 显示分区的inode号码数量
*文件数据跟着磁盘走,类型于U盘的作用,即使到其他目录,保存到磁盘的数据还是会显示,挂载到的目录原本中的数据会暂时不显示,断开挂载继续显示
设置文件系统自动挂载
系统中的/etc/fstab 文件可以视为 mount 命令的配置文件,其中存储了文件系统的静态挂载数据。Linux 系统在每次开机时,会自动读取/etc/fstab文件的内容,自动挂载所指定的文件系统。默认的 fstab文件中包括了根分区、/boot分区、交换分区及proc tmpfs 等伪文件系统的挂载配置。
格式:vim/vi /etc/fstab 进行添加修改自动挂载文件
第1字段∶设备名或设备卷标名。
第2字段∶文件系统的挂载点目录的位置
第3字段∶ 文件系统类型,如 xfs、swap 等。
第4字段∶ 挂载参数,即mount命令"-o"选项后可使用的参数。例如,defaults(默认参数)、rw (可读写)、ro(只读)、noexec (禁用执行程序)。
第5字段;表示文件系统是否需要 dump 备份(dump 是一个备份工具)。一般设为1时表示需要,设为0时将被dump 忽略。
第6字段∶ 该数字决定在系统启动时进行磁盘检查的顺序。0表示不进行检查,1表示优先检查,2表示其次检查。根分区可设为1,其他分区设为2。
*查看设备UID,可以在/etc/fstab中使用设备识别号作为设备名,建议在公有云等大型环境中使用,查找时不易出错——blkid命令
添加进入/etc/fstab文件
重启后自动挂载