一、磁盘管理
1. 磁盘的概念
1.1 磁盘概述
磁盘是一种用于存储数据的硬件设备,属于计算机存储设备的一种,包括软盘、硬盘、光盘等。常见的包括磁性的硬盘(HDD)和非磁性的固态硬盘(SSD),可以安装在计算机的内部,也可以外接计算机。通常来说,硬盘是指传统的普通硬盘,也就是机械硬盘。
1.2 硬盘结构
-
硬盘的物理结构:
-
盘片:硬盘有多个盘片,盘片的里面都可以读写数据。
-
磁头:用于读写数据,每个盘面都有一个对应的磁头。
-
永磁铁:保证磁头有着稳定磁性。
-
空气滤纸:过滤空气中的灰尘等,以免损坏盘片从而导致数据丢失。
-
主轴:让盘片旋转,以便于快速读取数据。
-
-
硬盘的数据结构:
- 扇区:硬盘的最小存储单位,盘片被分为多个扇形区域,每个扇区存放512字节的数据。
- 磁道:磁道是硬盘盘片上的一个圆形轨迹,所有在同一半径上的扇区组成一个磁道。由于盘片的外圈比内圈长,因此外圈的磁道比内圈的磁道能存储更多的数据。
- 柱面:指所有盘片上具有相同半径的磁道的集合。在物理上,一个柱面由所有盘片上位于相同位置的磁道组成。
2. 硬盘的分区和使用
在Linux系统中,硬盘的分区和使用有两种方法:MBR(主引导记录)和GPT(全局唯一标识分区表)。磁盘空间在2T以下,使用MBR分区;磁盘空间在2T以上,使用GPT分区。
2.1 MBR分区
在MBR分区当中,分区主要分为3种类型:主分区、扩展分区、逻辑分区。
- 主分区:主分区是硬盘上可以直接使用的分区,最多可以有4个分区。
- 扩展分区:扩展分区是一种特殊的分区,它自身不存储数据,而是用来包含一个或多个逻辑分区。如果需要创建超过4个分区,将其中一个主分区设置为扩展分区,然后在扩展分区内创建更多的逻辑分区。
- 逻辑分区:逻辑分区是存在于扩展分区内的一个或多个分区。在操作系统中表现为独立的分区,但实际上是扩展分区的一部分。
在MBR分区中,主分区和逻辑分区的分区号被分为1~4号,逻辑分区的分区号默认从5开始。
2.2 GPT分区
GPT分区是一种新型分区方法,与MBR分区不同,不再受限于扇区的大小。使用全局唯一标识的GUID来标识分区,可以支持更大空间的硬盘,可以分出的分区数也更多,最多可以有128个分区,并且不再区分分区的类型。
2.3 分区的原因和缺点
- 原因
- 不分区就无法使用硬盘。
- 优化硬盘的I/O性能,也就是硬盘的读写性能。
- 提高修复速度。
- 不同分区可以设置为不同的文件系统。
- 缺点
- 分区一旦建立,不能修改,只能够格式化重新设置。
- 没有高可用功能,没有备份,不能够扩容。
2.4 硬盘和分区的表示方法
在Linux系统中,万物皆文件,所以硬盘和分区在Linux当中都是以文件的形式存在。下面是Linux系统中的硬盘和分区表示形式:
/dev/sda
/dev/sda1
- /dev:Linux系统中,硬件设备所在目录
- sda:
- sd:设备的类型,sd表明是SCSI设备。
- a:硬盘号,表示第几块硬盘,以a、b、c……来表示。
- sda1:
- sd:设备的类型,sd表明是SCSI设备。
- a:硬盘号,表示第几块硬盘,以a、b、c……来表示。
- 1:分区号,表示是第几个分区。
2.5 分区常用命令
与分区方法对应,在Linux系统中,也有两种分区相关命令。对应MBR分区的命令是fdisk,对应GPT分区的是gdisk命令。
-
fdisk命令 – 管理磁盘分区
fdisk的意思是固定磁盘(fixed disk)或格式化磁盘(format disk),功能是管理磁盘的分区信息,可以用来对磁盘进行MBR分区操作。
fdisk [选项] [设备名]
常见的选项:
选项 功能 -l 非交互式查看 -
不使用-l选项,那么则是交互式管理磁盘的管理和分区。
交互模式的常用命令:
- m:显示帮助菜单
- p:显示当前分区表
- n:新建分区
- d:删除分区
- l:查看分区类型
- t:修改分区类型
- w:保存
- q:退出
-
-
gdisk命令 – 交互式管理GPT分区设备
gdisk命令来自英文词组“GPT fdisk”的缩写,其功能是用于交互式管理GPT分区设备。
gdisk [选项] 设备名
常见的选项:
选项 功能 -l 查看分区信息 交互模式的常用命令:
- m:显示帮助菜单
- p:显示当前分区表
- n:新建分区
- d:删除分区
- l:查看分区类型
- t:修改分区类型
- w:保存
- q:退出
-
mkfs命令 – 对设备进行格式化文件系统操作
mkfs命令来自英文词组make file system的缩写,功能是对设备进行格式化文件系统操作。
mkfs 系统 设备名
-
mkfs命令还把常用的文件系统用后缀的方式保存为多个命令:mkfs.文件系统,使用方法和mkfs类似。
mkfs.文件系统 设备名
-
-
mount命令 – 将设备挂载到目录
mount命令的功能是将硬盘或分区等挂载到目录。
mount 设备 挂载目录
常见的选项:
选项 功能 -a 挂载fstab文件中配置的所有文件系统 -
umount命令 – 取消挂载
umount命令的功能是取消设备的挂载。
umount [选项] 设备名或挂载目录
常见的选项:
选项 功能 -f 强制卸载 -l 断开文件系统 -
lsblk命令 – 查看系统的磁盘使用情况
lsblk命令来自英文词组list block devices的缩写,功能是查看系统的磁盘使用情况。包括硬盘、分区和USB设备等。它会显示设备名称、挂载点、分区大小等信息。
lsblk
-
blkid命令 – 显示块设备信息
blkid命令来自英文词组“block ID”的缩写,功能是用于显示块设备信息,也就是硬盘或光盘设备的UUID等相关信息。
blkid 设备名
2.6 硬盘分区主要流程
- 进行分区设置。
- 格式化文件系统。
- 挂载分区。
二、文件系统
1. 文件系统概述
文件系统是用于存储设备的数据的一种系统,允许用户对文件进行访问、管理和修改。下面是文件系统的主要功能:
- 数据的储存和组织:在存储设备上保存数据;通过目录和文件名来组织数据文件,使得用户可以方便地找到和访问文件。
- 数据的保护:提供权限机制,对数据进行控制和保护。
- 数据的访问:提供了硬盘的访问接口,通过接口可以访问硬盘存储的数据。
- 数据的管理:提供给用户能够读取、写入、修改和删除文件的功能。
2. 常见的文件系统
- EXT4:Ubuntu默认的文件系统,是Linux系统原生的文件系统,拥有稳定性和高性能的特点。
- XFS:CentOS 7默认的文件系统,适用于大型文件和高性能需求的场景。
- NTFS:Windows的文件系统。
- ISO 9660:光盘的文件系统。只能读。
- NFS:网络文件系统。可以实现多个主机之间的文件资源共享。
三、Linux新增硬盘
新增两块硬盘,一块60GB、一块8TB。
1. MBR分区
-
查看系统的磁盘名称,MBR分区适用于2TB以内的硬盘。
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS …… sdb 8:16 0 60G 0 disk sdc 8:32 0 8T 0 disk ……
-
使用fdisk命令将硬盘sdb进行分区。
注意:交互式界面中,显示默认的都可以直接按回车。
要求:创建一个主分区、一个扩展分区,并在一个扩展分区上创建一个逻辑分区。
fdisk /dev/sdb # 创建主分区,分配30G 命令(输入 m 获取帮助): n 分区类型 p 主分区 (0 primary, 0 extended, 4 free) e 扩展分区 (逻辑分区容器) 选择 (默认 p): p 分区号 (1-4, 默认 1): 1 第一个扇区 (2048-125829119, 默认 2048): Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-125829119, 默认 125829119): +30G 创建了一个新分区 1,类型为“Linux”,大小为 30 GiB。 # 创建扩展分区,分配29G # 总硬盘空间为60G,主分区分配了30G,但这不能够配置剩下的30G # 因为还需要空间存储分区的相关信息数据 命令(输入 m 获取帮助): n 分区类型 p 主分区 (1 primary, 0 extended, 3 free) e 扩展分区 (逻辑分区容器) 选择 (默认 p): e 分区号 (2-4, 默认 2): 第一个扇区 (62916608-125829119, 默认 62916608): Last sector, +/-sectors or +/-size{K,M,G,T,P} (62916608-125829119, 默认 125829119): +29G 创建了一个新分区 2,类型为“Extended”,大小为 29 GiB。 # 创建逻辑分区,在创建完扩展分区后才有逻辑分区的选项 命令(输入 m 获取帮助): n 分区类型 p 主分区 (1 primary, 1 extended, 2 free) l 逻辑分区 (从 5 开始编号) 选择 (默认 p): l 添加逻辑分区 5 第一个扇区 (62918656-123734015, 默认 62918656): Last sector, +/-sectors or +/-size{K,M,G,T,P} (62918656-123734015, 默认 123734015): +15G 创建了一个新分区 5,类型为“Linux”,大小为 5 GiB。 命令(输入 m 获取帮助): w 分区表已调整。 将调用 ioctl() 来重新读分区表。 正在同步磁盘。
-
格式化分区的文件系统。
mkfs.ext4 /dev/sdb1 mkfs.ext4 /dev/sdb5
-
挂载分区。
使用mount命令临时挂载分区。
# 创建挂载目录 mkdir /mnt/sdb1 mkdir /mnt/sdb5 # 挂载分区到对应目录 mount /dev/sdb1 /mnt/sdb1 mount /dev/sdb5 /mnt/sdb5
挂载完成后,使用df命令,查看挂载是否成功。
df -h 文件系统 大小 已用 可用 已用% 挂载点 …… /dev/sdb1 30G 24K 28G 1% /mnt/sdb1 /dev/sdb5 15G 24K 14G 1% /mnt/sdb5
要想实现自动挂载,就需要配置/etc/fastab文件,文件的配置格式如下:
设备UID或设备路径 设备挂载点 文件系统类型 defaults 0 0
- 设备UID或设备路径:设备的UID可以通过blkid命令查看,设备路径即/dev/sdb1。
- 设备挂载点:设备所挂载的目录。
- 文件系统类型:创建分区时,所指定的文件系统类型。
- defaults:权限设置,默认给所有权限。
- 0:是否备份文件,0表示不备份。
- 0:是否检查系统,0表示不检查。
具体的配置内容如下:
/dev/sdb1 /mnt/sdb1 ext4 defaults 0 0 /dev/sdb5 /mnt/sdb5 ext4 defaults 0 0
保存文件后,使用mount -a命令即可手动刷新挂载fstab文件中所设置的文件系统,不需要重新启动系统。
2. GPT分区
-
查看系统的磁盘名称,GPT分区可适用于2TB以上的大容量硬盘。
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS …… sdb 8:16 0 60G 0 disk sdc 8:32 0 8T 0 disk ……
-
使用gdisk命令将硬盘sdc进行分区。
注意:交互式界面中,显示默认的都可以直接按回车。
gdisk /dev/sdc GPT fdisk (gdisk) version 1.0.8 Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present Creating new GPT entries in memory. # 创建分区1 Command (? for help): n Partition number (1-128, default 1): First sector (34-17179869150, default = 2048) or {+-}size{KMGTP}: # 起始扇区,可回车默认 Last sector (2048-17179869150, default = 17179869150) or {+-}size{KMGTP}: +4T # 设置分区大小 Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): # 分区类型,可回车默认,8300代表Linux文件系统分区类型 Changed type of partition to 'Linux filesystem' Command (? for help): w # 保存配置 Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): y OK; writing new GUID partition table (GPT) to /dev/sdc. The operation has completed successfully.
-
格式化分区的文件系统。
mkfs.ext4 /dev/sdc1
-
挂载分区。
使用mount命令临时挂载分区。
# 创建挂载目录 mkdir /mnt/sdc1 # 挂载分区到对应目录 mount /dev/sdc1 /mnt/sdc1
挂载完成后,使用df命令,查看挂载是否成功。
df -h 文件系统 大小 已用 可用 已用% 挂载点 …… /dev/sdc1 4.0T 28K 3.8T 1% /mnt/sdc1
配置/etc/fastab文件实现自动挂载,具体的配置内容如下:
/dev/sdc1 /mnt/sdc1 ext4 defaults 0 0
保存文件后,使用mount -a命令。