Linux 入门指南:从零基础到玩转命令行 12

📅 2026/8/3 2:03:16 👁️ 阅读次数 📝 编程学习
Linux 入门指南:从零基础到玩转命令行 12

Linux 硬盘分区管理

主要分为 MBR 和 GPT 分区

主引导扇区由三个部分组成:

MBR-Master Boot Record

在 linux 中,管理员可以创建最多15个分区

每个分区最大不超过 2T

GPT分区方案最多可提供128个分区

  • LBA0(保护性MBR),分为两个部分:
  • 第一部分是与MBR中446字节相似的区块,用于存放第一阶段的启动引导程序
  • 第二部分是与MBR分区表记录区对应,该区域存储一个特殊标识符0xEE,用于表示该磁盘为GPT格式。若磁盘管理程序(比较老的软件)无法识别该磁盘,不能修改这个分区信息,进一步保护磁盘。
  • LBA1(GPT表头记录),记录了分区表自身的位置和大小,同时也记录了前面提到备份用的GPT分区所在位置(最后34个LBA),还放置了分区表的校验码(CRC32),校验码的作用是让操作系统判断GPT的正确与否,倘若发现错误则可以从备份的GPT中恢复正常运行。
  • LBA2-33,记录分区信息,每个LBA可以提供4组的分区记录,默认情况下可以有4×32=128组分区记录。因为每个LBA都有512字节,所以每组分区记录所占128字节,除去每组记录需要的标识符和相关记录信息外,GPT在每组记录中提供了64位记载分区的扇区总数。
  • 虽然GPT最大支持128个分区,但是实际使用过程中分区超过第120个会出现无法格式化使用的情况。

MBR 分区 使用 fdisk 命令

命令作用
fdisk -l罗列全部硬盘 + 分区详情
fdisk -s /dev/sda1查看分区总大小
fdisk /dev/sdb进入交互式分区界面

进入交互式界面后

按键功能
m查看所有帮助菜单(命令列表)
p打印当前硬盘已有分区
n新建分区(主分区 / 扩展分区 / 逻辑分区)
d删除已有分区
t修改分区系统类型(比如 swap 交换分区)
w保存分区表,退出(最重要)
q不保存任何修改,直接退出

以上完成后,进行重启,格式化,最后挂载使用

# 重启partprobe# 格式化mkfs.xfs /dev/某个硬盘# 挂载mount/dev/某个硬盘 /某个目录

GPT 分区 使用 gdisk

其系统默认没有 gdisk 需要安装

操作内容基本和 fdisk 一样

交互式操作如下:gdisk /dev/sdb

指令功能说明
?查看全部帮助菜单
p列出硬盘现有所有分区
n新建 GPT 分区
d删除指定分区
t修改分区类型(swap、Linux 文件系统等)
x高级功能(备份分区表、修复分区)
w写入分区表,保存修改并退出
q不保存改动,直接退出

最后也是需要重启,格式化,挂载验证

wipefs 用来查看和清除磁盘信息

# 查看磁盘管理信息[root@centos7 ~]# wipefs /dev/sdb# 清除未挂载磁盘的分区表[root@centos7 ~]# wipefs -a /dev/sdb# 禁止使用 -f 强制清除分区表[root@centos7 ~]# wipefs -fa /dev/sdb# 彻底擦除ddif=/dev/zeroof=/dev/sdb

parted 可用 MBR GPT

基础指令一样 都是 -l

交互式界面操作

命令功能
print / p查看磁盘分区详情
mklabel gpt将磁盘改成 GPT 分区表(推荐大容量盘)
mklabel msdos改成老式 MBR 分区表
mkpart创建新分区
rm 分区号删除分区
resizepart扩容 / 缩小分区大小(fdisk/gdisk 做不到)
quit退出(parted 修改即时生效,无需 w 保存)

注:parted 所操作的命令立即生效

fdisk gdisk parted 区别

对比维度fdiskgdiskparted
支持分区表仅 MBR仅 GPTMBR、GPT 全都支持
最大磁盘容量≤2TB>2TB>2TB 无限大
分区数量最多 4 主分区128 个主分区不限(GPT 下 128)
修改生效方式保存 w 后需重启 /partprobe需要刷新分区表改动立即生效
分区扩容缩容不支持不支持原生支持 resize 调整分区大小
使用难度简单适中功能最全,略微复杂
适用场景老旧小硬盘练习单纯 GPT 分区生产环境大容量硬盘、分区扩容

持久化挂载

要想持久化挂载 只需要通过vim /etc/fstab文件中添加一个条目

# 首先查看硬盘的详细信息[root@centos7 ~]# blkid /dev/sdb1/dev/sdb1:UUID="f5c35f10-0274-45af-b044-73694989fe01"TYPE="xfs"PARTLABEL="data01"PARTUUID="432d7d79-1a08-4429-bf38-7ab1444a0ab9"# 创建挂载的目录[root@centos7 ~]# mkdir /data01# 添加条目[root@centos7 ~]# vim /etc/fstab # 最后一行增加一个条目UUID="f5c35f10-0274-45af-b044-73694989fe01"/data01 xfs defaults00# 进行挂载[root@centos7 ~]# mount /dev/sdb1 /data01# 取消持久挂载只需删除条目即可
  • **第一个字段指定设备。**可以使用UUID或device来指定设备。
  • **第二个字段是目录挂载点。**通过它可以访问目录结构中的块设备。挂载点必须存在;如果不存在,请使用mkdir命令进行创建。
  • 第三个字段包含文件系统类型,如xfs或ext4 。
  • 第四个字段是挂载选项,以逗号分隔的。 defaults是一组常用选项。详细信息参考mount(8) 。
  • 第五个字段指定dump命令是否备份设备。
  • 第六个字段指定fsck顺序字段,决定了在系统启动吋是否应运行fsck命令,以验证文件系统是否干净。 该字段中的值指示了 fsck的运行顺序。 对于XFS文件系统, 请将该字段设为0 ,因为XFS并不使用fsck来检查自己的文件系统状态。 对于ext4 文件系统,如果是根文件系统, 请将该字段设 为 1 ; 如果是其他ext4 文件系统, 则将该字段设为2。 这样, fsck就会先处理根文件系统,然后同步检查不同磁盘上的文件系统,并按顺序检查同一磁盘上的文件系统。

Linux RAID 存储技术

磁盘冗余阵列:把多块物理硬盘合并成一个逻辑盘

两大核心目的:

  1. 提升读写速度(多块硬盘同时干活)
  2. 数据冗余备份(坏一块硬盘,数据不丢失)
RAID 级别硬盘数量要求容量总大小读写性能容错能力(最多坏几块盘)核心特点适用场景
RAID0≥2 块所有硬盘容量相加速度最快0 块,任意一块损坏全部数据丢失只提速、无备份,极度不安全临时缓存、不重要临时文件(生产禁止存放重要数据)
RAID1(镜像)只能 2 块总容量 = 单块硬盘大小(一半空间存备份)读快,写入一般最多坏 1 块盘两块硬盘内容完全一模一样,安全性高系统盘、存放重要小数据
RAID5≥3 块总容量 =(盘数 - 1)× 单盘容量读写均衡最多坏任意 1 块盘奇偶校验分散在所有硬盘,兼顾容量、速度、安全普通文件服务器、企业常规存储(最经典通用)
RAID6≥4 块总容量 =(盘数 - 2)× 单盘容量写入略慢于 RAID5可同时坏 2 块硬盘双重校验,容错更高大容量硬盘、对数据安全要求高的存储
RAID10(1+0)≥4 块 偶数硬盘总容量 = 总硬盘容量 ÷2读写速度顶尖每组镜像最多坏 1 块先两两镜像(RAID1),再做条带(RAID0),速度 + 安全拉满数据库、网站业务、高并发读写场景(生产首选高性能方案)

只求速度不要数据:RAID0

两块硬盘存系统稳妥:RAID1

性价比兼顾容量安全:RAID5

大容量硬盘怕双盘损坏:RAID6

数据库高并发读写最优:RAID10

现阶段常用的

RAID 级别现如今使用场景推荐程度
RAID1服务器系统盘⭐⭐⭐⭐⭐ 必选
RAID10数据库、核心业务盘⭐⭐⭐⭐⭐ 生产首选
RAID6大容量归档存储、冷数据⭐⭐⭐⭐
RAID5老旧机房存量设备、小容量低速硬盘⭐ 不建议新部署
RAID0测试、临时缓存⭐ 禁止正式业务使用

管理 raid 存储技术的 mdadm 命令

参数作用
-C / --create创建 RAID 阵列
-v显示详细过程
-l指定 RAID 级别(0/1/5/6/10)
-n指定使用几块硬盘组成阵列
-x热备盘数量(硬盘坏了自动顶替)
-D / --detail查看 RAID 阵列详细状态
-S停止阵列
-A组装、唤醒阵列
-r移除故障硬盘
-a添加新硬盘进阵列
-G扩容

以 raid1 为例

[root@server-node1 ~21:47:50]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda8:00200G0disk ├─sda18:101G0part /boot └─sda28:20199G0part ├─centos-root253:0050G0lvm / ├─centos-swap253:103.9G0lvm[SWAP]└─centos-home253:20145.1G0lvm /home sdb8:16020G0disk sdc8:32020G0disk sdd8:48020G0disk sde8:64020G0disk sdf8:80020G0disk sdg8:96020G0disk sr011:014.4G0rom[root@server-node1 ~22:07:02]# mdadm -C /dev/md1 --level 1 --raid-device 2 /dev/sd{b,c}mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store'/boot'on this device please ensure that your boot-loader understands md/v1.x metadata, or use--metadata=0.90Continue creating array?yesmdadm: Defaulting to version1.2metadata mdadm: array /dev/md1 started.[root@server-node1 ~22:08:13]# mdadm -D /dev/md1/dev/md1: Version:1.2Creation Time:Sun Aug222:08:132026Raid Level:raid1 Array Size:20954112(19.98GiB21.46GB)Used Dev Size:20954112(19.98GiB21.46GB)Raid Devices:2Total Devices:2Persistence:Superblock is persistent Update Time:Sun Aug222:08:462026State:clean, resyncing Active Devices:2Working Devices:2Failed Devices:0Spare Devices:0Consistency Policy:resync Resync Status:31% complete Name:server-node1:1(local tohostserver-node1)UUID:a27a6b5f:22900728:6dd0de65:79f197ae Events:5Number Major Minor RaidDevice State08160activesync/dev/sdb18321activesync/dev/sdc[root@server-node1 ~22:08:46]# mdadm -D /dev/md1/dev/md1: Version:1.2Creation Time:Sun Aug222:08:132026Raid Level:raid1 Array Size:20954112(19.98GiB21.46GB)Used Dev Size:20954112(19.98GiB21.46GB)Raid Devices:2Total Devices:2Persistence:Superblock is persistent Update Time:Sun Aug222:09:592026State:clean Active Devices:2Working Devices:2Failed Devices:0Spare Devices:0Consistency Policy:resync Name:server-node1:1(local tohostserver-node1)UUID:a27a6b5f:22900728:6dd0de65:79f197ae Events:17Number Major Minor RaidDevice State08160activesync/dev/sdb18321activesync/dev/sdc[root@server-node1 ~22:11:03]# lsblk /dev/md1NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT md19:1020G0raid1[root@server-node1 ~22:11:22]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda8:00200G0disk ├─sda18:101G0part /boot └─sda28:20199G0part ├─centos-root253:0050G0lvm / ├─centos-swap253:103.9G0lvm[SWAP]└─centos-home253:20145.1G0lvm /home sdb8:16020G0disk └─md19:1020G0raid1 sdc8:32020G0disk └─md19:1020G0raid1 sdd8:48020G0disk sde8:64020G0disk sdf8:80020G0disk sdg8:96020G0disk sr011:014.4G0rom[root@server-node1 ~22:11:52]# lsblk /dev/sdb /dev/sdcNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb8:16020G0disk └─md19:1020G0raid1 sdc8:32020G0disk └─md19:1020G0raid1[root@server-node1 ~22:12:34]# mkfs.xfs /dev/md1mkfs.xfs: /dev/md1 appears to contain an existing filesystem(xfs). mkfs.xfs: Use the-foption to force overwrite.[root@server-node1 ~22:12:40]# mkfs.xfs -f /dev/md1meta-data=/dev/md1isize=512agcount=4,agsize=1309632blks=sectsz=512attr=2,projid32bit=1=crc=1finobt=0,sparse=0data=bsize=4096blocks=5238528,imaxpct=25=sunit=0swidth=0blks naming=version2bsize=4096ascii-ci=0ftype=1log=internal logbsize=4096blocks=2560,version=2=sectsz=512sunit=0blks, lazy-count=1realtime=noneextsz=4096blocks=0,rtextents=0

Linux 逻辑卷管理 LVM

物理设备 → PV 物理卷 → VG 卷组 → LV 逻辑卷(最终挂载使用)

层级全称大白话解释
PVPhysical Volume 物理卷被 LVM 识别的硬盘 / 分区(/dev/sdb、/dev/sdb1),加入资源池的最小单元
VGVolume Group 卷组多个 PV 拼凑在一起的大空间资源池,一个服务器可以建多个 VG
LVLogical Volume 逻辑卷从 VG 池子中划出一部分空间,就是我们最终挂载使用的分区
FS文件系统xfs/ext4,格式化 LV 后存放文件

PV = 一块块积木硬盘

VG = 积木拼成的大箱子(总存储空间)

LV = 从箱子里隔出来一个个储物格子,格子大小可以随时放大缩小

常用命令

功能简洁命令详细查看
物理卷 PVpvspvdisplay
卷组 VGvgsvgdisplay
逻辑卷 LVlvslvdisplay
创建 PVpvcreate 磁盘-
创建 VGvgcreate 组名 磁盘-
创建 LVlvcreate -L 大小 -n lv 名 组名-
卸载 PV VG LVremove
扩容 LVlvextend + 空间 /dev/xxx-
扩容 VGvgextend 组名 新磁盘-
缩减 PV VG LV 文件reduce
数据移动pvmove

逻辑卷设备名支持以下三种格式:

  • /dev/vname/lvame
  • /dev/mapper/vname-lvame
  • /dev/dm-N

他们的空间扩容和缩减都有固定的顺序

一、LV 空间扩容(日常最常用,无需卸载、不停业务)

固定顺序(从上到下执行)

  1. 查看 VG 剩余空间:

    vgs
    • 有空闲空间:直接扩容 LV
    • 无空闲:先加硬盘 → 创建 PV →vgextend把 PV 加入 VG
  2. 扩充逻辑卷大小:lvextend给 LV 增加容量

  3. 刷新文件系统,让系统识别新增空间

    • XFS(CentOS7 + 默认):xfs_growfs 挂载目录
    • EXT4:resize2fs /dev/vg名/lv名

顺序口诀:先扩 LV → 再扩文件系统

⚠️ 绝对不能反过来:先刷文件系统再扩 LV 会损坏数据

二、LV 缩减空间(仅 EXT4 支持;XFS 不支持缩减)

缩减必须离线,全程顺序不可逆,错一步丢数据

完整步骤:

  1. 卸载逻辑卷(必须卸载,无法在线缩容):umount 挂载点
  2. 磁盘完整性检测(必做):e2fsck -f /dev/vg/lv
  3. 先缩小文件系统容量(目标最终大小):resize2fs /dev/vg/lv 目标容量
  4. 再缩减 LV 逻辑卷容量lvreduce -L 目标容量 /dev/vg/lv
  5. 重新挂载使用:mount /dev/vg/lv 挂载目录
操作类型执行先后顺序注意事项
扩容 LVlvextend → xfs_growfs/resize2fs在线执行,不用卸载
缩容 LV卸载→e2fsck→resize2fs→lvreduce→挂载XFS 禁止缩容
临时卸载关掉占用进程 → umount-
整套删除卸载 → lvremove → vgremove → pvremove和创建顺序完全相反

四、彻底删除整套 LVM(销毁 LV→VG→PV,清空所有数据)

逆着创建的顺序删除:

创建顺序:PV → VG → LV → 格式化 → 挂载

删除顺序:

  1. umount 卸载挂载目录
  2. 删除逻辑卷:lvremove
  3. 删除卷组:vgremove
  4. 清除磁盘 LVM 标记、删除 PV:pvremove

XFS 文件

XFS 文件支持扩展不支持缩减

扩展:扩展逻辑卷 LV --扩展文件系统

EXT4 文件

EXT4 文件支持扩展和缩减

扩展:扩展逻辑卷 LV --扩展文件系统

XFS 禁止缩容 |
| 临时卸载 | 关掉占用进程 → umount | - |
| 整套删除 | 卸载 → lvremove → vgremove → pvremove | 和创建顺序完全相反 |

四、彻底删除整套 LVM(销毁 LV→VG→PV,清空所有数据)

逆着创建的顺序删除:

创建顺序:PV → VG → LV → 格式化 → 挂载

删除顺序:

  1. umount 卸载挂载目录
  2. 删除逻辑卷:lvremove
  3. 删除卷组:vgremove
  4. 清除磁盘 LVM 标记、删除 PV:pvremove

XFS 文件

XFS 文件支持扩展不支持缩减

扩展:扩展逻辑卷 LV --扩展文件系统

EXT4 文件

EXT4 文件支持扩展和缩减

扩展:扩展逻辑卷 LV --扩展文件系统