当前位置: 首页 > news >正文

Linux学习——管理基本存储(十八)

一、添加分区 —— 给硬盘划分 “功能区域”

当我们给 Linux 服务器新增一块硬盘后,第一步要做的就是 “分区”—— 把硬盘划分为一个或多个 “分区”,就像给一本书分章节,让不同分区承担不同用途(如存放数据、作为交换空间)。Linux 中分区工具主要分两类:fdisk(适用于 MBR 分区表,支持最大 2TB 硬盘)和 parted(适用于 GPT 分区表,支持超 2TB 硬盘),需根据硬盘容量选择。

1.1 前提:确认新增硬盘信息

首先要明确新增硬盘的设备名(如 /dev/sdb//dev/sdc),避免误操作现有硬盘(如系统盘 /dev/sda):

# 查看系统中所有硬盘及分区信息(lsblk更直观)lsblk# 或用fdisk查看详细信息fdisk -l

参数解释:

NAME:就是装置的文件名,该输出项会省略 /dev 等前面的目录。

MAJ:MIN:表示设备的主要(MAJ)和次要(MIN)设备号。这两个数字是内核用于识别和管理设备的标识符。

RM:是否为可卸除装置(removable device),如光盘、USB 磁盘等。

SIZE:此参数代表容量。

RO:是否为只读装置的意思。

TYPE:代表设备类型,是磁盘(disk)、分区槽(partition)还是只读存储器(rom)等。

MOUTPOINT:挂载点的位置。

1.2 场景 1:2TB 以下硬盘 —— 用 fdisk 创建 MBR 分区

MBR 分区表支持最大 2TB 硬盘,最多可创建 4 个主分区(或 3 个主分区 + 1 个扩展分区),适合普通数据盘场景。以 “给 /dev/sdb(100GB)创建一个 10GB 主分区” 为例:

步骤 1:进入 fdisk 交互模式
# 操作/dev/sdb硬盘(替换为你的硬盘设备名)fdisk /dev/sdb

进入后会显示 Command (m for help): 提示符,等待输入指令。

步骤 2:新建 MBR 分区

按以下顺序输入指令(括号内为说明,输入后按回车):

1,n(new:新建分区);

2,选择分区类型:p(primary:主分区,MBR 最多 4 个);

3,分区号:默认 1(直接回车,第一个主分区);

4,起始扇区:默认从第一个可用扇区开始(直接回车);

5,结束扇区:输入 +10G(表示分区大小 10GB,也可输入具体扇区数);

6,w(write:保存分区表并退出,此步执行后分区才生效)。

步骤 3:验证分区
# 查看/dev/sdb的分区情况,应显示/dev/sdb1(10GB主分区)lsblk /dev/sdb# 或 fdisk -l /dev/sdb

1.3 场景 2:超 2TB 硬盘 —— 用 parted 创建 GPT 分区

当硬盘容量超过 2TB 时,MBR 分区表无法识别全部空间,必须使用 GPT 分区表(支持最大 18EB 硬盘,最多 128 个主分区),对应的工具是 parted。以 “给 /dev/sdc(3TB)创建一个 2TB 主分区” 为例:

步骤 1:进入 parted 交互模式
# 操作/dev/sdc硬盘(替换为你的超2TB硬盘设备名)parted /dev/sdc

进入后会显示 (parted) 提示符,等待输入指令。

步骤 2:创建 GPT 分区表

首先需将硬盘格式化为 GPT 分区表(默认可能为 MBR):

1,输入 mklabel gpt(设置分区表类型为 GPT);

2,系统提示 “警告:会销毁所有数据”,输入 Yes 确认(确保硬盘无重要数据);

3,输入 print(验证分区表),输出中 “Partition Table: gpt” 表示创建成功。

步骤 3:新建 GPT 分区

继续在交互模式中操作:

1,输入 mkpart(mkpart:创建 GPT 分区);

2,输入分区名称(自定义,如 data_part1,仅用于识别,无功能限制);

3,选择文件系统标记(仅为备注,实际格式化需后续操作):输入 ext4(或 xfs);

4,起始位置:输入 0%(从硬盘起始位置开始,也可输入 1GB 跳过引导区);

5,结束位置:输入 2000GB(表示分区大小 2TB,也可输入 66% 占硬盘 66% 空间);

6,输入 quit(退出交互模式,parted 操作实时生效,无需单独保存)。

步骤 4:验证分区
# 查看/dev/sdc的分区情况,应显示/dev/sdc1(2TB GPT分区)lsblk /dev/sdc# 或 fdisk -l /dev/sdc(输出中会显示“Disk label type: gpt”)

1.4 分区时一些注意点

1,不要误操作系统盘:执行 fdisk/parted 前,务必通过 lsblk 确认硬盘设备名(如 /dev/sdb//dev/sdc),误操作 /dev/sda(系统盘)会导致系统崩溃;

2,MBR 与 GPT 不可混用:2TB 以下硬盘可任选,但超 2TB 硬盘必须用 GPT;

3,parted 操作实时生效:parted 无需 “保存”,执行 mkpart/rm 后立即生效,误操作无法撤销,需格外谨慎;

4,分区前备份数据:无论用哪种工具,分区都会清空硬盘数据,操作前务必备份。

二、第二步:创建文件系统 —— 给分区 “格式化”

分区创建后,只是给硬盘划了 “空章节”,还需要 “格式化”—— 即创建 “文件系统”,让 Linux 能识别并存储数据(类似 Windows 的 NTFS、FAT32)。Linux 常用文件系统有 ext4(通用稳定,适合数据盘)和 xfs(红帽默认,支持大文件和快速恢复)。

2.1 核心概念:文件系统的作用

文件系统定义了 “如何在分区中存储文件、记录文件位置、管理空闲空间”,没有文件系统的分区,Linux 会提示 “无法识别的文件系统”,无法使用。

2.2 用 mkfs 创建文件系统

无论 MBR 分区(如 /dev/sdb1)还是 GPT 分区(如 /dev/sdc1),创建文件系统的命令一致,以下以 ext4 和 xfs 为例:

示例 1:创建 ext4 文件系统(以 /dev/sdb1 为例)
# mkfs.文件系统类型 分区设备名mkfs.ext4 /dev/sdb1
  • 执行后提示 “是否继续”,输入 y 确认;
  • 若需安装 ext4 工具(部分系统默认未装):yum install e2fsprogs -y(红帽)/ apt install e2fsprogs -y(Ubuntu)。
示例 2:创建 xfs 文件系统(以 /dev/sdc1 为例)
mkfs.xfs /dev/sdc1
  • 红帽系统需先安装 xfs 工具:yum install xfsprogs -y。
可选:添加文件系统标签(方便识别)

给文件系统加 “标签”(别名),后续挂载时可通过标签定位,避免设备名变化导致挂载失效:

# ext4文件系统:e2label 分区设备名 标签名e2label /dev/sdb1 data_disk_ext4# xfs文件系统:xfs_admin -L 标签名 分区设备名xfs_admin -L data_disk_xfs /dev/sdc1

2.3 验证文件系统

# 查看分区的文件系统类型和标签blkid /dev/sdb1# 输出示例:/dev/sdb1: UUID="xxx" TYPE="ext4" LABEL="data_disk_ext4"

三、第三步:持久挂载 —— 让分区重启后仍可用

创建文件系统后,需要 “挂载”—— 将分区关联到系统的某个目录(如 /mnt/data),才能通过该目录访问分区数据。默认 “临时挂载” 会在重启后失效,需配置 “持久挂载”(通过 /etc/fstab 文件)。

3.1 临时挂载(测试用)

先通过临时挂载验证分区和文件系统是否正常:

# 1. 创建挂载点目录(自定义,建议放在/mnt或/data下)mkdir -p /mnt/data# 2. 临时挂载(以/dev/sdb1为例,挂载到/mnt/data)mount /dev/sdb1 /mnt/data# 3. 验证挂载:查看挂载情况df -h /mnt/data # 输出应显示/dev/sdb1 -> /mnt/data# 或 mount | grep /mnt/data

3.2 持久挂载(核心:配置 /etc/fstab)

Linux 启动时会读取 /etc/fstab 文件,自动挂载配置的分区。推荐用 UUID(分区唯一标识)配置,避免设备名变化(如硬盘插拔后 /dev/sdb1 变为 /dev/sdc1)导致挂载失效。

步骤 1:获取分区的 UUID
# 查看分区的UUID(以/dev/sdb1为例)blkid /dev/sdb1# 记录输出中的UUID值,如 "12345678-1234-1234-1234-1234567890ab"
步骤 2:编辑 /etc/fstab 文件
# 用vim编辑/etc/fstabvim /etc/fstab

在文件末尾添加一行,格式为:

UUID=分区UUID 挂载点 文件系统类型 挂载选项 0 0

示例(以 /dev/sdb1、ext4、挂载点 /mnt/data 为例):UUID=12345678-1234-1234-1234-1234567890ab /mnt/data ext4 defaults 0 0
挂载选项说明(常用 defaults)
  • defaults:包含 rw(读写)、auto(开机自动挂载)、exec(允许执行程序)、nouser(禁止普通用户挂载);
  • 只读挂载:将 defaults 改为 ro;
  • 禁止执行程序(提高安全性):defaults,noexec。
步骤 3:验证 fstab 配置

配置后必须执行 mount -a 测试,避免配置错误导致系统无法启动:

# 自动挂载/etc/fstab中所有未挂载的分区mount -a# 再次验证挂载df -h /mnt/data # 确认分区已挂载

3.3 挂载注意点

1,挂载点目录需存在:挂载前必须创建挂载点(如 /mnt/data),否则挂载失败;

2,mount -a 必测:修改 /etc/fstab 后若不测试,配置错误会导致系统启动时卡在 “按 Ctrl+D 继续” 界面,需输入 root 密码修正;

3,不要覆盖系统目录:避免将分区挂载到 /home、/var 等系统目录(除非是专门的用户数据盘),否则会覆盖原有数据。

四、第四步:管理交换空间 —— 给系统 “扩展内存”

交换空间(Swap)是 Linux 的 “虚拟内存”—— 当物理内存(RAM)不足时,系统会将不常用数据暂存到交换空间,释放物理内存给活跃进程。管理交换空间包括 “创建交换分区 / 文件”“启用”“持久化”。

4.1 交换空间推荐大小

交换空间大小需根据物理内存和用途调整,并非越大越好:

物理内存大小

普通服务器推荐大小

数据库 / 高负载服务推荐大小

≤2GB

物理内存的 2 倍

物理内存的 3 倍

2GB~8GB

等于物理内存

物理内存的 1.5 倍

8GB~64GB

4GB~8GB

物理内存的 1 倍

>64GB

4GB~16GB

8GB~32GB

4.2 方式 1:创建交换分区(推荐,性能更好)

交换分区可基于 MBR 或 GPT 创建,步骤类似普通分区,差异在于 “分区类型需设为交换类型”。以 “给 /dev/sdb(100GB)创建 4GB 交换分区” 为例:

步骤 1:创建交换分区(MBR 为例,GPT 类似)
fdisk /dev/sdb# 1. 输入n→p→分区号3→起始扇区默认→结束扇区+4G(创建4GB分区)# 2. 输入t(修改分区类型)→分区号3→输入82(Linux swap类型代码)# 3. 输入w保存退出
步骤 2:格式化交换分区(专用命令 mkswap)
mkswap /dev/sdb3 # /dev/sdb3为刚创建的交换分区
步骤 3:启用交换分区(临时)
swapon /dev/sdb3# 验证:查看交换空间使用情况free -h # 输出中Swap行应显示/dev/sdb3的信息# 或 swapon --show
步骤 4:持久化交换分区(写入 /etc/fstab)
# 获取交换分区的UUIDblkid /dev/sdb3# 编辑/etc/fstab,添加交换空间配置vim /etc/fstab# 格式:UUID=交换分区UUID swap swap defaults 0 0UUID=87654321-4321-4321-4321-ba0987654321 swap swap defaults 0 0# 测试配置mount -aswapon --show # 确认交换空间已启用

4.3 方式 2:创建交换文件(适合无空闲分区场景)

交换文件(Swap File)是 Linux 系统中通过普通文件模拟的 “虚拟内存载体” —— 它本质是一个存储在硬盘上的普通文件(如 /swapfile),但经过专门的格式化(mkswap 命令)后,被系统识别为 “交换空间”,用于在物理内存(RAM)不足时,暂存不常用的进程数据,释放物理内存给活跃进程。

简单来说:​

  • 它不是硬件分区,而是软件层面的 “虚拟交换分区”;​
  • 功能与交换分区完全一致(都是充当虚拟内存),但创建和管理更灵活。

若硬盘已无空闲空间创建分区,可通过 “交换文件” 实现交换空间(性能略低于交换分区,但灵活)。以 “创建 4GB 交换文件 /swapfile” 为例:

步骤 1:创建交换文件
# 创建4GB空文件(bs=1M:块大小1MB,count=4096:4096块,总大小4GB)dd if=/dev/zero of=/swapfile bs=1M count=4096#指令意为 dd if=输入源 of=输出目标 [bs=块大小] [count=块数量]#dd:date Duplicator if:input file  of:output file /dev/zero为一个特殊字符设备文件,无限生成二进制0字节。
# 设置权限(仅root可读写,避免安全风险)chmod 600 /swapfile
步骤 2:格式化交换文件
mkswap /swapfile
步骤 3:启用并持久化
# 临时启用swapon /swapfile# 持久化:写入/etc/fstabecho "/swapfile swap swap defaults 0 0" >> /etc/fstab# 验证free -h

4.4 交换空间日常管理

1. 关闭交换空间
# 关闭指定交换分区/文件swapoff /dev/sdb3 # 关闭交换分区# 或 swapoff /swapfile # 关闭交换文件# 关闭所有交换空间swapoff -a
2. 调整交换空间优先级(多交换设备时)

在 /etc/fstab 中添加 pri=数值(数值越大优先级越高),系统优先使用高优先级交换空间:

# 示例:让/dev/sdb3(交换分区)优先级高于/swapfile(交换文件)​UUID=xxx swap swap defaults,pri=10 0 0 # /dev/sdb3的配置,优先级10​/swapfile swap swap defaults,pri=5 0 0 # /swapfile的配置,优先级5系统会优先使用优先级更大的交换空间

http://www.dtcms.com/a/365711.html

相关文章:

  • A股大盘数据-2025093分析
  • Provider中的watch、read、Consumer、ChangeNotifierProvider、ValueNotifierProvider
  • 信息融智学=信息哲学+信息科学+信息技术+信息系统工程+信息处理之智
  • 数据库选择有讲究?SQLite、PostgreSQL还是MySQL?
  • 全渠道 + 低代码:如何打造 “内外协同” 的客服管理系统体系?
  • http和https区别是什么
  • docker 安装 redis 并设置 volumes 并修改 修改密码(三)
  • 【TypeScript】事件循环
  • k8s的SidecarSet配置和initContainers
  • 《四川棒球知识百科》球速最快的运动之一·棒球1号位
  • Omi录屏专家 Screen Recorder Mac中文
  • 如何在私域运营中快速建立信任,三招解决你的烦恼!
  • linux---------------网络基础概念
  • 【IQA技术专题】 无参考自然图像IQA:NIQE
  • 审核问题——一个关于版本号的乌龙事件
  • Elasticsearch面试精讲 Day 6:Query DSL查询语法详解
  • 2025年9月,十大求职神器测评:谁是Offer收割机之王?
  • 玳瑁的嵌入式日记D32-0903(网络编程)
  • Nginx简介
  • 自学嵌入式第三十四天:网络编程-TCP
  • dumpsys alarm 简介
  • Java+AI开发实战与知识点归纳系列:Spring流式输出实战——LangChain4j与Ollama集成
  • Spring Authorization Server 1.5.2 使用YML配置的方式,最常用法总结
  • VAR的教师强制teacher forcing
  • Canaan 阿瓦隆 A1246I 81T矿机评测:性能、功耗与能效全面分析
  • 解锁产品说明书的“视觉密码”:多模态 RAG 与 GPT-4 的深度融合 (AI应用与技术系列)
  • 【收藏必备】大模型面试宝典:Transformer到实战应用全解析,助你斩获30W年薪offer!
  • Debezium日常分享系列之:Debezium 3.3.0.Alpha2发布
  • MySQL 行转列 (Pivot) 的 N 种实现方式:静态、动态与 GROUP_CONCAT 详解
  • C++入门小馆:C++11第一弹