Linux 存储管理的核心是对块设备(硬盘、分区、逻辑卷等)的识别、分区、格式化、挂载及后续维护,需遵循 “硬件→分区→文件系统→目录树” 的层级逻辑。以下从基础到进阶,系统讲解 Linux 存储基本管理的关键知识点与操作。
Linux 中所有存储硬件(如硬盘、U 盘、SSD)均以块设备文件形式存在于 /dev
目录下,需先识别设备再进行后续操作。
不同类型的存储设备,其 /dev
下的命名有固定规律:
通过以下命令查看系统已识别的存储设备及分区信息:
示例:用 lsblk -f
查看设备信息
[root@localhost ~]
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 5f4dcc3b-0000-0000-0000-000000000001 /boot
├─sda2 swap 5f4dcc3b-0000-0000-0000-000000000002 [SWAP]
└─sda3 xfs 5f4dcc3b-0000-0000-0000-000000000003 /
sdb
└─sdb1 xfs 5f4dcc3b-0000-0000-0000-000000000004 /mnt/data
硬盘需先分区(将物理硬盘划分为多个逻辑区域),再格式化文件系统。Linux 支持两种主流分区表格式:MBR 和 GPT。
操作步骤示例:给 /dev/sdb
硬盘创建 1 个 100GB 的 Linux 分区
- 进入 fdisk 交互模式(需 root):
- 输入命令操作(交互提示见
m
帮助):
n
:新建分区 → 选择 p
(主分区)→ 分区号(默认 1)→ 起始扇区(默认)→ 结束扇区(输入 +100G
表示 100GB)
t
:修改分区类型 → 输入 83
(Linux 分区,默认即 83)
w
:保存分区表(此步执行后分区才生效,不可逆!)
- 刷新分区表(无需重启):
操作步骤示例:给 /dev/sdc
硬盘创建 GPT 分区表并新建 200GB 分区
- 进入 parted 交互模式:
- 输入命令操作:
mklabel gpt
:创建 GPT 分区表(会清除硬盘所有数据!)
mkpart primary xfs 0% 200GB
:新建主分区(文件系统类型暂填 xfs,起始位置 0%,结束位置 200GB)
print
:查看分区结果
quit
:退出(自动保存)
分区后需格式化(创建文件系统),才能被 Linux 识别并存储文件。Linux 支持多种文件系统,需根据场景选择。
mkfs
是创建文件系统的通用命令,需指定文件系统类型(通过子命令或 -t
选项)。
当文件系统损坏(如突然断电)时,需通过工具检查修复(修复前建议备份数据!)。
Linux 中,文件系统必须挂载到某个目录(挂载点),才能通过目录树访问其中的文件。挂载分为「临时挂载」和「永久挂载」。
- 挂载点:一个空目录(若目录非空,挂载后原内容会被隐藏,卸载后恢复)。
- UUID:块设备的唯一标识(即使设备名变化,UUID 不变,适合永久挂载)。
- /etc/fstab:系统启动时自动挂载文件系统的配置文件(永久挂载需编辑此文件)。
临时挂载仅当前会话生效,重启后失效。
mount /dev/[文件系统] /[挂载点目录]
- 创建挂载点(必须是空目录):
- 挂载 ext4 分区
/dev/sdb1
到 /mnt/data
:
mount /dev/sdb1 /mnt/data
- 挂载 Swap 分区(特殊挂载,用
swapon
):
- 查看已挂载的文件系统:
通过 /etc/fstab
配置,实现系统开机自动挂载(编辑前务必备份文件!)。
每行对应一个挂载配置,字段用空格 / 制表符分隔:
<设备标识> <挂载点> <文件系统类型> <挂载选项> <dump> <pass>
- 设备标识:可填
/dev/sdb1
(设备名)或 UUID=xxx
(推荐,更稳定)。
- 挂载选项:常用
defaults
(包含 rw, suid, dev, exec, auto, nouser, async),特殊需求可加 noexec
(禁止执行文件)、ro
(只读)等。
- dump:0(不备份)、1(备份,通常根分区设 1)。
- pass:0(不检查)、1(优先检查,根分区设 1)、2(次优先检查,其他分区设 2)。
- 获取
/dev/sdb1
的 UUID:
- 编辑
/etc/fstab
(用 vim 或 nano):
添加一行:
UUID=5f4dcc3b-1234-5678-90ab-cdef00000001 /mnt/data ext4 defaults 0 2
- 验证配置(避免开机挂载失败):
若 /etc/fstab
配置错误(如 UUID 输错、挂载点不存在),系统可能无法开机。此时需进入救援模式,注释错误行并重新挂载。
传统分区的大小固定,无法动态调整(需卸载后扩容 / 缩容)。LVM(Logical Volume Manager) 通过 “物理卷→卷组→逻辑卷” 的层级,实现存储的动态扩容 / 缩容,适合需要灵活管理的场景(如服务器数据分区)。
以 “创建 LVM 并挂载” 为例,步骤如下:
yum install -y lvm2
apt install -y lvm2
pvcreate /dev/sdb1 /dev/sdc1
pvs
pvdisplay
vgcreate vg_data /dev/sdb1 /dev/sdc1
vgs
vgdisplay
从 vg_data
中划分 200GB 逻辑卷 lv_doc
:
lvcreate -L 200G -n lv_doc vg_data
lvs
lvdisplay
mkfs.xfs /dev/vg_data/lv_doc
mkdir -p /mnt/doc
echo "/dev/vg_data/lv_doc /mnt/doc xfs defaults 0 2" >> /etc/fstab
mount -a
- 先确保 VG 有剩余空间(
vgs
查看),若不足需先添加新 PV 到 VG:
pvcreate /dev/sdd1
vgextend vg_data /dev/sdd1
- 扩容 LV:
lvextend -L +100G /dev/vg_data/lv_doc
- 扩容文件系统(必须执行,否则 LV 扩容后文件系统不识别新增空间):
df -h
:查看已挂载文件系统的空间使用(-h
人性化显示,-i
查看 inode 使用)。
du -sh [目录]
:查看目录 / 文件的大小(-s
汇总,-h
人性化,-d 1
显示一级子目录)。
du -sh /home
du -hd 1 /var
iostat
:查看磁盘读写速率(需安装 sysstat
包):
iotop
:实时查看进程的磁盘 I/O 占用(类似 top
,需安装 iotop
包)。
- 磁盘满了:用
df -h
定位满的分区,再用 du -sh *
找到大文件 / 目录,删除无用数据(注意:不要删除系统关键文件,如 /var/log
下的日志可清理旧文件)。
- 挂载点无法卸载:提示 “device is busy”,表示有进程正在使用该挂载点,用
fuser -m /mnt/data
找到占用进程,杀死后再卸载(umount /mnt/data
)。
Linux 存储管理的核心流程可概括为:
识别设备(lsblk/fdisk)→ 分区(fdisk/parted)→ 格式化(mkfs)→ 挂载(mount/fstab)→ 维护(LVM / 监控)。
需重点掌握:
- 设备命名规则与识别命令;
/etc/fstab
永久挂载配置(避免开机失败);
- LVM 动态管理(扩容 / 缩容);
- 日常监控与故障排查(df/du/iostat)。
实际操作中,务必先备份数据,尤其是分区、格式化、LVM 调整等破坏性操作,避免数据丢失。