前言
云服务器买了数据盘,登上去却找不到?新增磁盘从"裸设备"到"能用的目录"要经历三步:分区 → 格式化 → 挂载。这篇把全流程和日常排查一次讲清。
一、看清磁盘现场
# 列出所有块设备(最常用, 一目了然)
lsblk
# NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
# vda 252:0 0 40G 0 disk
# └─vda1 252:1 0 40G 0 part /
# 查看磁盘与分区详情
fdisk -l
# 已挂载文件系统的容量与使用率
df -h
# 目录实际占用大小
du -sh /var/log
云主机系统盘一般是
vda(virtio)或sda;TYPE=disk是整盘,part是分区,lvm是逻辑卷。
二、分区:fdisk 与 parted
小于 2TB 用 fdisk(MBR),大于 2TB 必须 parted(GPT)。
# fdisk 交互式操作(以新盘 /dev/vdb 为例)
fdisk /dev/vdb
# 输入 n (新建) -> p (主分区) -> 回车默认起始 -> 回车默认结束 -> w (写入)
parted 方式(可脚本化,支持大容量):
parted /dev/vdb --script mklabel gpt
parted /dev/vdb --script mkpart primary ext4 0% 100%
# 让内核重读分区表
partprobe
lsblk # 已能看到 vdb1
三、格式化
# ext4: 兼容性最好
mkfs.ext4 /dev/vdb1
# xfs: RHEL 系默认, 大文件高性能, 但不能缩容
mkfs.xfs /dev/vdb1
# 带卷标
mkfs.ext4 -L data /dev/vdb1
选择建议:通用场景 ext4,大文件/高吞吐场景 xfs。
四、挂载与开机自动挂载
# 临时挂载(重启失效)
mkdir -p /data
mount /dev/vdb1 /data
df -h | grep data
# 卸载(注意不能在挂载点目录内执行)
umount /data
# 查看挂载详情与 UUID
blkid /dev/vdb1
永久挂载写入 /etc/fstab(推荐用 UUID,设备名可能漂移):
# <设备/UUID> <挂载点> <类型> <选项> <dump> <fsck顺序>
UUID=xxxx-xxxx-xxxx /data ext4 defaults,noatime 0 2
# 写完必须验证语法, 错误的 fstab 可能导致重启起不来!
mount -a && echo "fstab OK"
五、LVM:弹性的磁盘管理
固定分区不够用时,LVM(Logical Volume Manager)可以把多块盘"Pool"起来动态扩容。
核心三层结构:
物理盘 PV (Physical Volume)
↓ 组成
卷组 VG (Volume Group) ← 资源池
↓ 划分
逻辑卷 LV (Logical Volume) ← 格式化挂载用这个
# 1. 创建 PV
pvcreate /dev/vdb /dev/vdc
# 2. 创建 VG(名字 data-vg)
vgcreate data-vg /dev/vdb /dev/vdc
# 3. 创建 LV(用掉全部空间)
lvcreate -l 100%FREE -n data-lv data-vg
# 4. 格式化并挂载
mkfs.xfs /dev/data-vg/data-lv
mount /dev/data-vg/data-lv /data
不停机在线扩容(云盘扩容后):
# 假设在云控制台把磁盘从 100G 扩到 200G
echo 1 > /sys/class/block/vdb/device/rescan # 重读磁盘容量
pvresize /dev/vdb
lvextend -l +100%FREE /dev/data-vg/data-lv
xfs_growfs /data # xfs 在线扩文件系统
# 若是 ext4: resize2fs /dev/data-vg/data-lv
df -h /data
六、日常排查:磁盘满了怎么办
# 1. 确认哪个分区满
df -h
# 2. 定位大目录(逐层下钻)
du -hx --max-depth=1 / 2>/dev/null | sort -rh | head
du -hx --max-depth=1 /var | sort -rh | head
# 3. 常见"重灾区"
du -sh /var/log/* | sort -rh | head
journalctl --vacuum-size=500M # 收缩系统日志
find / -size +500M -type f 2>/dev/null | xargs ls -lh
# 4. 注意: 删除了文件但空间没释放?
# 说明文件仍被某进程打开着
lsof +L4 | grep deleted
# 处理: 重启或 reload 对应进程(如 logrotate 后 nginx -s reload)
小结
| 步骤 | 命令 |
|---|---|
| 查盘 | lsblk / fdisk -l |
| 分区 | fdisk(<2T)/ parted(>2T, GPT) |
| 格式化 | mkfs.ext4 / mkfs.xfs |
| 挂载 | mount + /etc/fstab(用 UUID) |
| 弹性管理 | pvcreate → vgcreate → lvcreate |
| 空间排查 | df -h → du -hx → lsof +L4 |
本文是「Linux 运维」系列第 1 篇,下篇预告:云计算入门。