19.管理基本存储

一、添加分区,文件系统和持久挂载

分区是对磁盘(如/dev/sda/dev/vdb)的逻辑划分,常见分区表格式为 MBR 和 GPT。

(1)创建MBR分区

  • 特点:支持最大磁盘容量 2TB,最多 4 个主分区(或 3 个主分区 + 1 个扩展分区,扩展分区内可分多个逻辑分区)。

  • 工具fdisk(适用于 MBR 和 GPT,传统工具)。

  • 步骤及命令

    1. 进入磁盘分区工具:fdisk /dev/sdb(假设操作磁盘为/dev/sdb)。
    2. 输入命令交互:
      • n:新建分区(选择主分区p或扩展分区e,设置分区号、起始扇区、大小,如+10G表示 10GB)。
      • p:查看分区表。
      • w:保存并退出(q为不保存退出)。
    3. 生效分区表:partprobe /dev/sdb(无需重启刷新分区信息)。

例:在/dev/sdb创建 1 个 10GB 的主分区

复制代码
fdisk /dev/sdb
# 输入n → p → 1(分区号)→ 回车(默认起始扇区)→ +10G → p(确认)→ w(保存)
partprobe /dev/sdb  # 刷新分区表

(2)创建GPT分区

  • 特点:支持超过 2TB 的磁盘,最多 128 个分区,支持 UEFI 启动。

  • 工具gdisk(GPT 专用,fdisk也可支持但gdisk更适配)。

  • 步骤及命令

    1. 进入工具:gdisk /dev/sdc(操作磁盘/dev/sdc)。
    2. 交互命令:
      • n:新建分区(设置分区号、起始扇区、大小,如+20G)。
      • p:查看分区表。
      • w:保存退出(需输入Y确认)。
    3. 生效分区表:partprobe /dev/sdc

例:在/dev/sdc创建 1 个 20GB 的 GPT 分区

复制代码
gdisk /dev/sdc
# 输入n → 回车(默认分区号)→ 回车(起始扇区)→ +20G → 回车(默认类型)→ p → w → Y
partprobe /dev/sdc

(3)删除分区

  • 工具fdisk(MBR)或gdisk(GPT),操作类似。

  • 步骤

    1. 进入工具:fdisk /dev/sdb(或gdisk /dev/sdc)。
    2. 输入d → 选择要删除的分区号 → p确认删除 → w保存。

例:删除/dev/sdb的 1 号分区

复制代码
fdisk /dev/sdb
# 输入d → 1(分区号)→ p(确认)→ w(保存)
partprobe /dev/sdb

(4)创建文件系统

分区需格式化为文件系统才能存储数据,常见文件系统:ext4(Linux 主流)、xfs(RHEL/CentOS 默认)、btrfs(高级特性)等。

  • 命令mkfs.文件系统类型 分区路径
  • 示例
    • 格式化/dev/sdb1为 ext4:mkfs.ext4 /dev/sdb1
    • 格式化/dev/sdc1为 xfs:mkfs.xfs /dev/sdc1(需安装xfsprogs工具)
    • 快速格式化(跳过检查):mkfs.ext4 -F /dev/sdb1

(5)持久挂载(重启不失效)

临时挂载用mount,但重启后失效;持久挂载需配置/etc/fstab文件。

步骤

  1. 创建挂载点:mkdir /data(目录需存在)。

  2. 获取分区 UUID(推荐用 UUID,避免设备名变动):blkid /dev/sdb1(输出类似UUID="xxx")。

  3. 编辑/etc/fstab,添加一行:

    UUID=xxx /data ext4 defaults 0 0

  4. 字段含义:分区 UUID → 挂载点 → 文件系统类型 → 挂载参数(defaults包含rwsuid等)→ dump 备份(0 为不备份)→ fsck 检查(0 为不检查,根分区为 1)。

  5. blkid 命令,lsblk命令用于显示块设备(如硬盘分区、U 盘等)的属性,包括 UUID、文件系统类型等,需要 root 权限(或 sudo)。

  6. /etc/fstab 是持久化挂载配置文件,若分区已配置持久挂载,其中会记录 UUID(推荐用 UUID 配置)

4.生效配置:mount -a(检查配置是否有误,无报错则成功)。

注:

  • 分区表:MBR(小磁盘)、GPT(大磁盘 / UEFI),分别用fdiskgdisk管理。
  • 文件系统:mkfs.ext4mkfs.xfs等格式化分区。
  • 持久挂载:通过/etc/fstab配置 UUID 实现,避免依赖设备名。

二、挂载文件系统

挂载(Mount)是将分区或存储设备(如硬盘分区、U 盘、ISO 镜像等)关联到 Linux 系统目录树中的一个目录(称为 "挂载点"),使系统能够访问该设备中的数据。

  • 挂载点必须是已存在的空目录(若目录非空,挂载后原内容会被临时隐藏,卸载后恢复)。
  • 临时挂载:重启后失效;持久挂载:通过配置文件保存,重启后自动生效。

(1)手动挂载文件系统(临时生效)

使用 mount 命令手动挂载,适用于临时访问设备,重启后挂载关系会消失。

复制代码
mount [选项] 设备路径 挂载点目录
  • 常用选项:
    • -t 文件系统类型:指定文件系统(如 ext4、xfs、ntfs 等,通常可省略,系统会自动识别)。
    • -o 挂载参数:设置挂载属性(如ro只读、rw读写、noatime禁用访问时间记录等)。
例:1)挂载分区到指定目录

假设将 /dev/sdb1(ext4 文件系统)挂载到 /data 目录:

复制代码
# 1. 先创建挂载点(若不存在)
mkdir -p /data

# 2. 挂载分区
mount /dev/sdb1 /data

# 验证:查看挂载状态
df -h /data  # 显示挂载信息
mount | grep /data  # 过滤特定挂载点
2)只读挂载
复制代码
mount -o ro /dev/sdc1 /backup  # 以只读方式挂载/dev/sdc1到/backup
30卸载手动挂载的文件系统

使用 umount 命令(注意不是unmount):

复制代码
umount /data  # 通过挂载点卸载
# 或通过设备路径卸载
umount /dev/sdb1

(2)持久挂载文件系统

通过配置 /etc/fstab 文件实现持久挂载,系统启动时会自动读取该文件并挂载所有配置的设备。

1. /etc/fstab 文件格式

每行代表一个挂载配置,字段用空格或制表符分隔,格式如下:

复制代码
设备标识  挂载点  文件系统类型  挂载参数  dump备份  fsck检查
  • 设备标识 :推荐用 UUID(避免设备名变动,如/dev/sdb1可能变为/dev/sdc1),也可用设备路径或标签(LABEL)。
  • 挂载参数 :常用defaults(包含rwsuiddevexecautonouserasync),按需添加其他参数(如noatime)。
  • dump 备份:0 表示不备份,1 表示备份(几乎不用,通常设 0)。
  • fsck 检查 :0 表示不检查,1 表示优先检查(根分区/设 1),2 表示次优先检查(其他分区设 2)。
2)挂载步骤

(1)获取设备 UUID

复制代码
blkid /dev/sdb1  # 假设输出:UUID="a1b2c3d4-1234-5678-90ab-cdef12345678" TYPE="ext4"

2)编辑 /etc/fstab

复制代码
# 用文本编辑器打开(如vim、nano)
sudo vim /etc/fstab

# 添加一行配置(以UUID为例)
UUID=a1b2c3d4-1234-5678-90ab-cdef12345678  /data  ext4  defaults  0  2

3)验证配置(关键步骤)

配置后必须执行以下命令,检查是否有错误(若有错误可能导致系统无法启动):

复制代码
sudo mount -a  # 挂载所有/etc/fstab中未挂载的设备

4)生效验证

复制代码
df -h /data  # 查看是否已挂载

例:挂载网络共享(NFS)

复制代码
# 格式:服务器IP:共享路径  本地挂载点  nfs  挂载参数  0  0
192.168.1.100:/shared  /mnt/nfs  nfs  defaults  0  0
类型 命令 / 工具 特点 关键文件 / 命令
手动挂载 mount 临时生效,重启消失 umount 卸载,df -h 查看
持久挂载 配置 /etc/fstab 重启自动生效 mount -a 验证配置

三、管理交换空间

(1)交换空间概念

交换空间(Swap Space)是 Linux 系统中用于临时存储内存中不常用数据的区域,当物理内存(RAM)不足时,系统会将部分不活跃的内存数据转移到交换空间,释放物理内存供活跃进程使用。

  • 作用:避免内存溢出导致进程崩溃,提升系统稳定性(但性能低于物理内存)。
  • 形式 :可以是交换分区 (独立的磁盘分区)或交换文件(普通文件格式,更灵活)。
  • 大小建议:通常为物理内存的 1~2 倍(如 8GB 内存可配 8~16GB 交换空间,大内存服务器可适当减小比

(2)创建交换空间步骤(分区 / 文件两种方式)

方式一:创建交换分区(推荐用于物理机,需磁盘分区)
  1. 创建分区 (使用fdiskgdisk,以fdisk为例):

    操作磁盘(如/dev/sdb)

    sudo fdisk /dev/sdb

    输入n创建分区→选择分区类型(默认主分区)→设置大小(如+8G)→t修改类型为swap(编号82)→w保存

2、格式化交换分区(mkswap命令):

复制代码
sudo mkswap /dev/sdb1  # /dev/sdb1为刚创建的交换分区

3.启用交换分区swapon命令):

复制代码
sudo swapon /dev/sdb1

4.持久化生效 (配置/etc/fstab):

复制代码
# 获取交换分区UUID
blkid /dev/sdb1  # 假设UUID="abc123-def456"
# 添加到/etc/fstab
echo 'UUID=abc123-def456  none  swap  sw  0  0' | sudo tee -a /etc/fstab
方式二:创建交换文件(推荐用于虚拟机 / 云服务器,无需分区)
  1. 创建交换文件ddfallocatefallocate更高效):

    创建8GB的交换文件(/swapfile)

    sudo fallocate -l 8G /swapfile

    若fallocate不可用,用dd:sudo dd if=/dev/zero of=/swapfile bs=1G count=8

2.设置权限(仅 root 可读写,避免安全风险):

复制代码
sudo chmod 600 /swapfile

3.格式化交换文件

复制代码
sudo mkswap /swapfile

4.启用交换文件

复制代码
sudo swapon /swapfile

5.持久化生效 (配置/etc/fstab):

复制代码
echo '/swapfile  none  swap  sw  0  0' | sudo tee -a /etc/fstab
验证与管理命令
  • 查看当前交换空间使用情况:

    free -h # 显示总内存和交换空间
    swapon --show # 列出已启用的交换空间

关闭交换空间(临时)

复制代码
sudo swapoff /dev/sdb1  # 关闭交换分区
# 或 sudo swapoff /swapfile  # 关闭交换文件
方式 适用场景 核心命令 持久化配置
交换分区 物理机、固定磁盘环境 fdiskmkswapswapon /etc/fstab中添加分区 UUID
交换文件 虚拟机、云服务器、临时扩展 fallocatemkswapswapon /etc/fstab中添加文件路径

四、知识点总结

  1. 对 Linux 磁盘进行分区时有哪两种方案?分别加以详细说明。

答:MBR(Master Boot Record,主引导记录)分区方案

支持的磁盘容量最大为 2TB。

最多可创建 4 个主分区,若需更多分区,需将其中一个主分区设为扩展分区,再在扩展分区内创建逻辑分区(逻辑分区数量受限于操作系统,通常最多 15 个)。32位制存储

分区信息存储在磁盘的第一个扇区(512 字节),包含引导程序和分区表,分区表占 64 字节,每个分区条目占 16 字节。

兼容性好,几乎所有操作系统都支持,但不支持超过 2TB 的磁盘和 UEFI 启动模式。

GPT(GUID Partition Table,全局唯一标识分区表)分区方案

支持的磁盘容量远超 MBR,理论上可支持 18EB(1EB = 1024PB)。

最多可创建 128 个主分区,无需扩展分区和逻辑分区。

分区信息存储在分区表头部和尾部,且有备份分区表,提高了数据安全性,能更好地抵抗磁盘错误。64位制存储

支持 UEFI 启动模式,适用于大容量磁盘和新型操作系统,但旧版操作系统可能不支持。

2.简单说下创建 MBR 磁盘分区涉及哪几个步骤?

答:1.识别磁盘设备(如 fdisk -l 查看磁盘名称,如 /dev/sdb)。

2.进入分区工具(如 fdisk /dev/sdb)。

3.创建分区(输入 n,选择主分区或扩展分区,设置分区编号、起始扇区和大小)。

4.保存分区表(输入 w 写入并退出)。

5.重新读取分区表(如 partprobe /dev/sdb)。

3. 创建 GPT 分区与创建 MBR 分区有什么不同?

答:

分区工具:GPT 常用 gdisk 或 parted(需指定 gpt 格式),MBR 常用 fdisk。

分区数量:GPT 最多 128 个主分区,MBR 最多 4 个主分区(需更多分区需扩展分区 + 逻辑分区)。

磁盘容量支持:GPT 支持超 2TB 磁盘,MBR 最大支持 2TB。

分区表存储:GPT 有主分区表和备份分区表,MBR 分区表仅在磁盘首个扇区。

启动支持:GPT 通常配合 UEFI 启动,MBR 配合 BIOS 启动。

4. 在创建分区时就会在分区上创建文件系统吗?

答:不会。创建分区只是划分磁盘区域,文件系统需后续通过 mkfs 系列命令(如 mkfs.ext4、mkfs.xfs)单独创建。

5. 如何持久挂载文件系统?

答:(1)查看分区 UUID 或设备路径(用lsblk --fs命令)。

(2)编辑 /etc/fstab 文件,添加一行格式为 UUID=xxx 挂载点 文件系统类型 defaults 0 0 的条目(如 UUID=1234-ABCD /mnt/data ext4 defaults 0 0)。

(3)执行 mount -a 验证挂载配置是否生效。

6. Linux 为什么要使用 swap?

答:swap 作为交换空间,当物理内存不足时,系统可将部分不常用的内存数据暂存到 swap 中,释放物理内存供活跃进程使用,防止因内存不足导致进程崩溃,提高系统稳定性。

7. 过度使用 swap 有什么缺点?

答:swap 位于磁盘,读写速度远慢于物理内存,过度使用会导致系统响应迟缓、程序运行卡顿,甚至出现应用无响应,严重影响系统性能。

8. 如何持久激活交换空间?

答:(1)创建 swap 文件或分区(如 mkswap /dev/sdc1)。

(2)编辑 /etc/fstab,添加 UUID=xxx swap swap defaults 0 0(UUID 为 swap 分区 / 文件的 UUID)。

(3)执行 swapon -a 激活。

  1. 使用哪个命令可以查看文件系统的 UUID?

答:lsblk -fp

相关推荐
文火冰糖的硅基工坊4 小时前
[嵌入式系统-150]:智能机器人(具身智能)内部的嵌入式系统以及各自的功能、硬件架构、操作系统、软件架构
android·linux·算法·ubuntu·机器人·硬件架构
njsgcs4 小时前
动态识别文件夹下flask接口
1024程序员节
安当加密4 小时前
CAS汽车固件签名:从“完成签名”到“安全治理”的演进之路
1024程序员节
傻童:CPU4 小时前
C语言需要掌握的基础知识点之矩阵
c语言·1024程序员节
摘星编程4 小时前
技术引领场景革新|合合信息PRCV论坛聚焦多模态文本智能前沿实践
合合信息·1024程序员节·textin·多模态文本·fidok
ink@re4 小时前
消息队列集群——RabbitMQ
分布式·rabbitmq·1024程序员节
cs阿坤dn4 小时前
SQL-Server2019离线部署安装【CentOS7.4】
1024程序员节
Pocker_Spades_A4 小时前
金仓多模数据库平替MongoDB的电子证照国产化实践——从2TB数据迁移到1600+并发支撑
数据库·1024程序员节
彭刷子4 小时前
《商户查询缓存案例》使用案例学习Redis的缓存使用;缓存击穿、穿透、雪崩的原理的解决方式
redis·1024程序员节