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系统会优先使用优先级更大的交换空间