磁盘存储与文件系统完全指南
一、磁盘扫描与管理
1. 添加磁盘后立即生效方法
# 扫描新添加的磁盘
echo '- - -' > /sys/class/scsi_host/host0/scan # 根据实际情况调整host0/1/2
# Ubuntu多host处理
for i in {0..2}; do
echo '- - -' > /sys/class/scsi_host/host$i/scan
done
2. 磁盘使用流程
- 设备分区 – 划分磁盘空间
- 创建文件系统 – 格式化分区
- 挂载新文件系统 – 使分区可用
3. 核心磁盘命令
| 命令 | 功能描述 | 常用选项 |
|---|---|---|
dd |
读取、转换并输出数据 | if=输入文件, of=输出文件, ibs=输入块大小, obs=输出块大小, count=块数, skip=跳过输入块, seek=跳过输出块 |
df |
显示磁盘空间使用 | -h人类可读格式, -T文件系统类型, -iinode使用, --total总计信息 |
du |
显示文件/目录磁盘使用 | -h人类可读格式, -s仅显示总计, -c最后显示总计, -d指定深度, --max-depth最大深度 |
二、磁盘分区管理
1. 分区方案对比
| 特性 | MBR | GPT |
|---|---|---|
| 最大磁盘容量 | 2TB | 8ZB |
| 最大分区数 | 4主分区或3主+1扩展(N逻辑) | 128主分区 |
| 分区标识 | /dev/sda1-4(主), /dev/sda5+(逻辑) | /dev/sda1-/dev/sda128 |
| 技术背景 | 512字节MBR(446引导+64分区表) | 主+备份分区表 |
| 启动兼容性 | BIOS | UEFI |
2. MBR分区表操作
备份与恢复:
# 备份MBR分区表
mkdir /data
dd if=/dev/sda of=/data/dpt.img bs=1 count=64 skip=446
# 光盘救援恢复步骤:
1. 开机按Esc或调整BIOS为CD-ROM启动
2. 选择"Rescue a Rocky Linux system"
3. 选择"Skip to shell"
4. 获取备份:scp root@10.0.0.157:~/dpt.img ./
5. 恢复:dd if=dpt.img of=/dev/sda bs=1 seek=446
6. 重启:reboot
fdisk交互命令:
fdisk /dev/sda
a切换启动标志d删除分区F列出空闲空间l列出已知分区类型n添加新分区p打印分区表t更改分区类型v验证分区表w写入并退出q不保存退出g创建新GPT分区表o创建新DOS分区表
3. GPT分区管理
gdisk操作:
gdisk /dev/nvme0n1
交互命令与fdisk类似
4. 分区查看命令
fdisk -l # 查看分区表(dos表示MBR)
lsblk # 树状显示块设备
hexdump -C -n 512 /dev/sda -v # 查看前512字节
三、文件系统管理
1. Linux文件系统类型
| 类型 | 特点 | 创建命令 |
|---|---|---|
| ext2 | 早期Linux文件系统 | mkfs.ext2 |
| ext3 | 带日志的ext2 | mkfs.ext3 |
| ext4 | 乌班图推崇 | mkfs.ext4 |
| xfs | rocky推崇 | mkfs.xfs |
| swap | 虚拟内存 | mkswap |
| iso9660 | 光盘文件系统 | – |
| btrfs | 高级文件系统 | mkfs.btrfs |
| reiserfs | 高效小文件存储 | mkfs.reiserfs |
2. 文件系统操作
# 查看分区文件系统
lsblk -f
# 创建文件系统
mkfs.ext4 /dev/sdb1
mkfs.xfs /dev/sdc1
3. 挂载管理
临时挂载:
mount /dev/sdb1 /mnt/data
umount /mnt/data # 或 umount /dev/sdb1
持久挂载(/etc/fstab):
# 格式:<设备> <挂载点> <类型> <选项> <备份> <检查>
# 根分区示例
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 defaults 0 1
# 数据分区示例
UUID=1234-5678 /home/data ext4 defaults,noatime 0 2
# 设备名挂载示例
/dev/sdb1 /mnt/backup xfs defaults 0 0
# 虚拟文件系统
proc /proc proc defaults 0 0
# 生效命令
mount -a
mount -o remount /mountpoint # 重新挂载
查看挂载信息:
cat /etc/fstab
blkid # 查看UUID
四、文件系统异常修复
1. 修复流程
1. 卸载文件系统:umount /dev/sdX
2. 执行修复工具:fsck/xfs_repair
3. 重新挂载验证:mount /dev/sdX /mountpoint
2. 修复工具
ext系列修复(e2fsck):
e2fsck /dev/sdb1
-y自动回答yes-f强制修复-p自动安全修复
xfs修复(xfs_repair):
xfs_repair /dev/sdb1
-f修复文件而非设备-n只检查不修复-d允许修复只读挂载设备
3. 修复案例
场景:文件系统损坏
# 准备环境
rm -rf /mount ; mkdir /mount/ext -p
mkfs.ext4 /dev/sdb1
mount /dev/sdb1 /mount/ext/
cp /etc/fstab /mount/ext/f{1,2}
# 人为破坏
dd if=/dev/zero of=/dev/sdb1 bs=1M count=1
# 修复过程
umount /dev/sdb1
e2fsck /dev/sdb1
# 验证修复
mount /dev/sdb1 /mount/ext/
ls /mount/ext/
fstab错误处理:
# 注释错误条目
sed -i '/mount\/xfs/s@^@#@' /etc/fstab
# 检查修改
grep 'mount/xfs' /etc/fstab
# 重新挂载
systemctl daemon-reload
mount -a
mount | grep /mount
# 重启验证
reboot
五、SWAP管理
# 禁用SWAP
1. sed -i '/swap/s/^/#/' /etc/fstab # 注释配置
2. swapoff -a # 禁用所有swap
# 启用SWAP
1. sed -i '/swap/s/^#//' /etc/fstab # 取消注释
2. swapon -a # 启用所有swap
六、RAID技术
1. RAID级别对比
| 类型 | 最少磁盘 | 容错能力 | 特点 | 利用率 |
|---|---|---|---|---|
| RAID0 | 2 | 无 | 数据分块存储,提升性能 | 100% |
| RAID1 | 2 | 1盘 | 完全镜像 | 50% |
| RAID4 | 3 | 1盘 | 专用校验盘 | (n-1)/n |
| RAID5 | 3 | 1盘 | 分布式校验 | (n-1)/n |
| RAID6 | 4 | 2盘 | 双分布式校验 | (n-2)/n |
| RAID10 | 4 | 1组 | 先镜像后分条 | 50% |
| RAID01 | 4 | 1组 | 先分条后镜像 | 50% |
2. RAID创建示例
# 创建RAID5
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sd{b,c,d}1
七、LVM逻辑卷管理
1. LVM结构
- PV(物理卷) – 物理磁盘/分区
- VG(卷组) – PV的集合(相当于大硬盘)
- LV(逻辑卷) – 从VG划分的逻辑分区
- PE(物理块) – 默认4M
- LE(逻辑块) – 默认4M
2. LVM操作命令
| 对象 | 命令 | 功能 |
|---|---|---|
| PV | pvcreate /dev/sdXn |
创建物理卷 |
pvdisplay |
显示物理卷信息 | |
pvremove |
移除物理卷 | |
| VG | vgcreate vg00 /dev/sdXn |
创建卷组 |
vgextend vg00 /dev/sdYn |
扩展卷组 | |
vgreduce vg00 /dev/sdXn |
缩小卷组 | |
| LV | lvcreate -L 10G -n lvdata vg00 |
创建逻辑卷 |
lvextend -L +5G /dev/vg00/lvdata |
扩展逻辑卷 | |
lvreduce -L 5G /dev/vg00/lvdata |
缩小逻辑卷 |
3. LVM创建流程
# 1. 准备磁盘(分区ID改为8e)
# 2. 创建物理卷
pvcreate /dev/sdb
# 3. 创建卷组
vgcreate vg_data /dev/sdb
# 4. 创建逻辑卷
lvcreate -L 20G -n lv_www vg_data
# 5. 创建文件系统
mkfs.xfs /dev/vg_data/lv_www
# 6. 挂载使用
mkdir /www
mount /dev/vg_data/lv_www /www
4. LVM扩容与缩减
EXT4扩容:
lvextend -L +5G /dev/vg_data/lv_db
resize2fs /dev/vg_data/lv_db
EXT4缩减:
umount /db
fsck -f /dev/vg_data/lv_db
resize2fs /dev/vg_data/lv_db 15G
lvreduce -L 15G /dev/vg_data/lv_db
mount -a
XFS扩容:
lvextend -L +5G -r /dev/vg_data/lv_www # -r自动调整文件系统
八、软件包管理
1. RPM/YUM (RedHat系)
RPM命令:
rpm -ivh package.rpm # 安装
rpm -e package # 卸载
rpm -qi package # 查询信息
rpm -ql package # 查询文件列表
rpm -qf /path/file # 查询文件所属包
YUM仓库配置:
# /etc/yum.repos.d/rocky.repo
[baseos]
name=Rocky Linux $releasever BaseOS
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/BaseOS/$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
YUM命令:
yum repolist # 查看仓库列表
yum search keyword # 搜索包
yum list available # 查看可用包
yum install package # 安装包
yum provides */cmd # 查找命令所属包
yum --downloadonly --downloaddir=/path/ install package # 只下载不安装
yum clean all # 清除缓存
yum makecache # 重建缓存
2. DPKG/APT (Debian系)
DPKG命令:
dpkg -i package.deb # 安装
dpkg -r package # 移除
dpkg -p package # 完全移除(含配置)
dpkg -l # 列出已安装包
dpkg -l | grep nginx # 查找特定包
APT操作:
# 源配置:/etc/apt/sources.list
apt update # 更新缓存
apt install package # 安装
apt purge package # 完全移除
apt autoremove # 自动移除不需要的包
apt-cache madison nginx # 查看可用版本
# 彻底清理
apt purge ufw lxd lxd-client lxcfs liblxc-common
apt purge $(dpkg -l | grep '^rc' | awk '{print $2}')
九、网络诊断工具
tcpdump高级用法
基本选项:
-i指定接口-D列出可用接口-c捕获包数量-w写入文件-r读取文件-s设置包长度
过滤选项:
host指定主机port指定端口net指定网络src/dst源/目标地址and/or/not逻辑组合
输出选项:
-n不解析地址-v详细输出-X十六进制+ASCII输出-t不显示时间戳
示例:
tcpdump -i eth0 host 192.168.1.100
tcpdump tcp port 22
tcpdump -c 5 -w capture.pcap
tcpdump -r capture.pcap
十、系统管理技巧
1. Ubuntu桌面安装
apt install ubuntu-desktop -y
2. 搭建YUM仓库
yum -y install httpd
systemctl enable --now httpd
# 将仓库文件放入/var/www/html
3. 更改Ubuntu源
1. vim /etc/apt/sources.list
2. 替换为阿里云镜像
3. apt update
4. apt-cache policy package
4. 包管理器对比
| 操作 | RPM | YUM | DPKG | APT |
|---|---|---|---|---|
| 安装 | rpm -ivh |
yum install |
dpkg -i |
apt install |
| 移除 | rpm -e |
yum remove |
dpkg -r |
apt remove |
| 查询 | rpm -qa |
yum list |
dpkg -l |
apt list |
| 清缓存 | – | yum clean all |
– | apt clean |