快速上手Linux磁盘管理
一、虚拟机添加新硬盘
物理设备的命名规则
- 传统设备
- 固态硬盘
nvmen磁盘号[p1-10]
添加新硬盘
过程
- 关机
- 编辑虚拟机设置
后续根据自己需求配置
二、硬盘分区概述
MBR分区
概念
- MBR(Master Boot Record,主引导记录)包含硬盘一系列参数和一段引导程序,硬盘引导程序的主 要作用是检查分区表是否正确并且在系统硬件完成自检以后引导具有激活标志的分区上的操作系 统,并将控制权交给启动程序
- MBR是由分区程序(如Fdisk.exe)所产生的,它不依赖任何操作系统,而且硬盘引导程序也是可 以改变的,从而实现多系统共存
- MBR位于整个硬盘的0磁道0柱面1扇区
主引导扇区512B
MBR=446B
DPT(Disk Partition Table硬盘分区表)=64B
最后两个字节“55,AA”是分区的结束标志
MBR分区类型
- 主分区(primary partition)
一块硬盘最多4个主分区,主分区不可以再进行二次分区
主分区可以直接建立文件系统,存放数据
可以用来引导、启动操作系统
- 扩展分区(extended partition)
一块硬盘最多一个扩展分区,加主分区最多4个
不能创建文件系统
可以划分逻辑分区
- 逻辑分区(logical partition)
可以创建文件系统,存放数据
逻辑分区的数量没有限制
- 支持的分区数量:4个主分区或者3个主分区1个扩展分区
- 为什么MBR最多只能有4个主分区: 因为分区表占据64个字节,其中每个分区的信息占用16个字节, 分区表里面可以记录四个分区信息描述
- MBR分区表中最高支持磁盘容量为2.2TB
GPT分区
产生原因
- MBR分区表中最高支持磁盘容量为2.2TB
- MBR分区表中,没有备份机制,分区表被干掉则磁盘全部死光光
- MBR中存储开机管理程序的容量只有446B,无法存储较多内容
概念
- GPT(GUID Partition Table,全局唯一标识分区表)是一种比MBR分区更先进、更灵活的磁盘分区模式
- GPT分区表使用LBA(Logical Block Address)逻辑区块地址来记录磁盘引导、分区的相关信息
LAB区块大小(512B-4KB),默认为512B
LAB区块共68个,前34个记录分区信息,后34个进行备份
- 不在区分主分区与其它分区,默认情况下,GPT最多可支持128个分区
- 支持大于2.2TB的总容量及大于2.2TB的分区,最大支持 18EB(1EB=1024PB,1PB=1024TB,1TB=1024GB)
- GPT分区机制在较老的BIOS中不能识别,则提供了一个UEFI (Unified Extensible Firmware Interface)统一的可扩展固件接口,来取代传统的BISO,又称为UEFI BIOS,UEFI使用C语言编写, 支持较多的平台
三、lsblk命令
作用:查看磁盘信息
格式:lsblk 参数 设备名
-d | 仅列出硬盘本身信息,不显示分区信息 | ![]() |
-f | 列出磁盘的内的文件系统名称 | ![]() |
-i | 使用ASCII码格式输出信息 | ![]() |
-t | 显示磁盘的详细信息 | ![]() |
-p | 显示设备完整名称 | ![]() |
显示内容分析:
NAME | 设备名称,默认省略前导/dev 目录名 |
MAJ:MIN | 主要:次要设备代码 |
RM | 是否为可移动设备 |
SIZE | 容量 |
RO | 是否为只读 |
TYPE | 设备类别(磁盘、分区、光盘等) |
MOUNTPOINT | 挂载点 |
四、硬盘分区管理
fdisk管理分区
- fdisk命令工具默认将磁盘划分为==MBR==格式的分区
- 命令:fdisk 设备名
- 注意:fdisk命令以交互方式进行操作的,在菜单中选择相应功能键即可
指令 | 作用 | 指令 | 作用 |
a | 调整磁盘的启动分区 | p | 显示当前磁盘的分区信息 |
d | 删除磁盘分区 | t | 更改分区类型 |
l | 显示所有支持的分区类型 | u | 切换所显示的分区大小单位 |
m | 查看所有指令的帮助信息 | n | 创建新分区 |
q | 不保存更改,退出fdisk命令 | w | 把修改写入磁盘分区表,然后退出fdisk命令 |
g | 新建一个空的GPT分区表 | o | 新建一个空的DOS分区表 |
对于大于2.2T的硬盘分区:
gdisk管理分区
- 注意:gdisk命令针对GPT分区格式,若在MBR分区格式下进行添加分区,则所有数据会全部丢失, 切记:一块硬盘中fdisk与gdisk不能混用
- 格式:gdisk 设备名
同步分区到内核
👾注意:实际工作中,硬盘分区是应保留一定的自由空间,以备将来分区空间不足时可以临时扩容
五、格式化
格式化的目的
- 当我们拿到了一张大白纸,首先为了使用方便要裁剪,然后为了书写工整要先画格,这里的“白纸” 就是原始的硬盘,而“裁剪”意味着分区,然后的“画格”就是格式化,最后写入内容
- 格式化是对分区建立文件系统,文件系统是操作系统用于明确存储设备或分区上的文件的方法和数 据结构;即在存储设备上组织文件的方法
查看文件系统格式
- 方法:输入mkfs在键入tab(点击2次)进行命令补全,可显示支持的文件系统格式
格式化命令
mkfs.xfs -参数 硬盘分区名
参数
-f | 强制格式化,已存在文件系统时需要使用 |
-c | 建立文件系统前先检查坏块 |
-V | 输出建立文件系统的详细信息 |
六、blkid命令
- 显示设备的UUID值和文件系统名称
- UUID:全局单一标识符(Universally Unique Identifier),Linux系统会给所有设备分配一个唯一的 UUID值,以方便挂载
格式
blkid 设备名
blkid # 全部查看
七、挂载
- mount point:挂载点,是一个目录,该目录是进入磁盘分区(文件系统)的入口
- 挂载:将一个分区或者设备挂载至挂载点目录,建立连接,通过挂载点目录进入分区空间
mount命令
mount [参数] 设备名 挂载点目录
参数:
-a | 依照配置文件/etc/fstab的数据将所有未挂载的磁盘都挂载上来 |
-t | 指定文件系统类型 |
-o | 特殊设备选项:挂载设备时使用逗号分割输入额外参数 |
- 使用设备名挂载
- 使用UUID值挂载
[root@server ~]# blkid /dev/sda2
/dev/sda2: UUID="27301fb0-2d51-40a7-8508-fd11550c4aaa" TYPE="xfs"
PARTLABEL="Linux filesystem" PARTUUID="93b2b535-d875-44e4-9134-87b0c203d046"
[root@server ~]# mount UUID="27301fb0-2d51-40a7-8508-fd11550c4aaa" /mnt/
- 挂载光盘
[root@server ~]# mount /dev/sr0 /mnt/
mount: /media: WARNING: source write-protected, mounted read-only. #只读挂载
- 查看挂载信息
[root@server ~]# mount[root@server ~]# mount | grep /dev/sda
- 只读挂载
- 修改权限重新挂载(不停机更新)
👺注意
- 单一文件系统不应该被重复挂载在不同的挂载点(目录)中
- 单一目录不应该重复挂载多个文件系统
- 作为挂载点的目录,应为空目录,否则原有数据会隐藏
[root@server ~]# mkdir /msda3
[root@server ~]# echo "hello" > /msda3/test.txt
[root@server ~]# ls /msda3
test.txt
[root@server ~]# mount /dev/sda3 /msda3
[root@server ~]# ls /msda3 # test.txt隐藏,卸载设备后恢复
umount命令
- 卸载分区,要移除USB磁盘、U盘、光盘和硬盘时,需要先卸载
格式:
umount [参数] 设备名称 [挂载点]
参数:
-f | 强制卸载 |
[root@server ~]# umount /dev/sda1
[root@server ~]# umount /dev/sr0
暴力解占:
👹注意
- 若正使用文件系统,则应使用cd命令离开该目录后再卸载
开机挂载
配置文件:
- 路径:/etc/fstab
应用配置文件:
异常启动
特殊挂载
挂载大文件
- 当只有一个分区,剩余空间还很大,自由空间很小不能进行新的分区,则可以在当前分区制作一个 大文件,在进行挂载,相当于一个新的分区来使用
增加swap分区
- swap分区:类似于Windows系统虚拟内存的功能,将一部分硬盘空间虚拟成内存来使用,从而解决内存容量不足的情况,因为swap毕竟是用硬盘资源虚拟的,所以速度上比真实物理内存要慢(内存将暂时闲置的资源放到硬盘缓解内存空间压力)
swap空间容量推荐:
内存大小 | 2G | 4G | 8G | 16G | 64G |
swap大小 | 2G | 6G | 16G | 64G | 64G |
查看:
free -h
添加过程:
新建分区->格式化该分区->启用新的swap->查看系统信息->挂载
swap开机挂载:
swap优先级更改:
①临时更改
②开机挂载配置文件永久更改
使用大文件建立swap
开机挂载:
八、查看磁盘空间使用量
df命令
- 列出文件系统的磁盘空间占用情况
- df,disk free,通过文件系统来快速获取空间大小的信息,当我们删除一个文件的时候,这个文件 不是马上就在文件系统当中消失了,而是暂时消失了,当所有程序都不用时,才会根据OS的规则释 放掉已经删除的文件, df记录的是通过文件系统获取到的文件的大小,他比du强的地方就是能够看到已经删除的文件,而且计算大小的时候,把这一部分的空间也加上了,更精确了
格式:
df -参数 目录或文件名
参数:
-a | 列出所有的文件系统,包括系统特有的/proc等文件系统 |
-k | 以KB的容量显示各文件系统 |
-m | 以MB的容量显示各文件系统 |
-h | 以人们较易阅读的GB,MB,KB等格式自行显示 |
-H | 以M=1000K替代M=1024K的进位方式 |
-T | 连同该分区的文件系统名称(例如ext3)也列出 |
-i | 不用硬盘容量,而以inode的数量来显示 |
# 由于df主要读取的数据几乎都是针对整个文件系统,因此读取的范围主要是在Super block内的信息,所以这个命令显示结果的速度非常快速。
du命令
- du:显示磁盘空间使用量(统计目录或文件所占磁盘空间大小),在默认情况下,文件大小的单位 是KB
- du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和,当文件系统也确定删除了该文件后,这时候du与df就一致了
格式:
du -参数 文件或目录名
参数:
-a | 列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已; |
-h | 以人们较易读的容量格式(G/M)显示; |
-s | 列出总量,而不列出每个个别的目录占用了容量; |
-S | 不包括子目录下的总计,与-s有点差别; |
-k | 以KB列出容量显示; |
-m | 以MB列出容量显示。 |
九、在磁盘中查找文件
find命令
在系统中如果需要通过文件的元数据来对文件进行查找通常使用find命令
参数
-name | 通过名字方式查找 | ![]() |
-user | 通过文件拥有者身份查找 | ![]() |
-group | 通过文件拥有组身份查找 | ![]() |
-type f d s b l
| 通过文件类型查找 | ![]() |
-perm 222 /222 -222 | 通过文件权限查找 | |
-exec | 处理查找出的文件 | ![]() |
-maxdepth 1 | 设定查找深度为1 | ![]() |
-mindepth 1 | 设定查找浅度为1 | ![]() |
-cmin 1 -1 +1 | 文件的最后一次更改时间 | |
-size +|-| 1M | 通过文件大小查找 | ![]() |
-o | 条件或 | ![]() |
-a | 条件与 | ![]() |
-not | 条件非 | ![]() |
十、设备中的链接
硬盘数据分类
- 用户数据(user data):即文件的数据块(data block),存储数据真实空间
- 元数据(metadata):存储文件附加属性,如:文件的大小、创建的时间、所有者等信息
硬连接
- linux系统允许多个文件指向同一个inode,即允许一个文件拥有多个有效地路径名
- 理解:硬连接就是指向原始文件inode的指针
建立硬连接
格式:
ln -参数 源文件 目标连接文件
硬连接文件id一致,两文件一样,两文件互为硬连接,硬连接文件会占用和源文件一样的存储空间
硬连接不可用于目录,不可以跨分区,删除源后硬连接文件仍可以使用
软连接
- 软连接是一种符号连接,类似于windows的“快捷方式”,仅包含所连接的路径名
格式:
ln -s 源文件 目标连接名
软连接文件id不一致,软连接文件指向源文件,软连接文件不会占用和源文件一样的存储空间,删除源文件后软连接文件不可访问
软连接可以用于目录,可以跨分区,删除源后软连接文件不可以使用