Appearance
Linux磁盘挂载
目标: 规范化多硬盘服务器的存储挂载,确保数据盘 (HDD) 正确挂载到
/srv/data。 警告: 磁盘操作涉及数据安全,请务必严格按照步骤执行。如果不确定,请先截图询问 AI。
1. 磁盘规划
对于典型的 "SSD (系统) + HDD (数据)" 组合:
| 物理磁盘 | 分区 | 挂载点 | 用途 |
|---|---|---|---|
| SSD (系统盘) | /dev/sda1 (通常) | / | 操作系统, Docker Images, 配置文件 |
| HDD (数据盘) | /dev/sdb1 (通常) | /srv/data | Nextcloud 网盘数据, Jellyfin 媒体库, 数据库文件 |
2. 确认磁盘状态 (观察)
在操作前,先看清楚你有哪些盘。
bash
# 1. 查看块设备 (树状图,最直观)
lsblk
# 重点看 SIZE (容量) 和 MOUNTPOINT (挂载点)
# 找那个容量很大 (比如 1T/4T) 且 MOUNTPOINT 为空的设备,记下它的名字 (如 sdb)
# 2. 查看文件系统类型
sudo blkid
# 如果你的 HDD 已经格式化过,这里会显示 TYPE="ext4" 或 "ntfs"3. 挂载步骤 (实操)
3.1 创建挂载点
bash
sudo mkdir -p /srv/data3.2 格式化磁盘 (仅限新盘!)
🛑 危险警告: 格式化会清空磁盘所有数据!
- 如果你是从旧机器拆下来的盘,不要格式化,直接跳到 3.3!
- 如果是刚买的全新空盘,执行下面命令。
bash
# 假设你的 HDD 是 /dev/sdb (请根据 lsblk 确认!)
# 格式化为 Linux 标准的 ext4 文件系统
sudo mkfs.ext4 /dev/sdb3.3 临时挂载 (测试)
先试着挂载一下,看看能不能成。
bash
# 挂载 /dev/sdb 到 /srv/data
sudo mount /dev/sdb /srv/data
# 验证
df -h | grep data
# 应该能看到类似: /dev/sdb 1.8T 20K 1.8T 1% /srv/data3.4 永久挂载 (修改 /etc/fstab)
这是最关键的一步。如果不配这个,重启后挂载就没了;配错了,系统可能起不来。
获取 UUID (唯一标识符,比 /dev/sdb 更靠谱):
bashsudo blkid /dev/sdb # 复制输出中的 UUID="xxxx-xxxx-xxxx" 引号里的内容备份 fstab (保命操作):
bashsudo cp /etc/fstab /etc/fstab.bak编辑 fstab:
bashsudo nano /etc/fstab在文件末尾添加一行 (将
xxxx替换为你的真实 UUID):text# Data Disk UUID=xxxx-xxxx-xxxx /srv/data ext4 defaults 0 2- 提示:
nano保存是Ctrl+O, 回车确认, 退出是Ctrl+X。
- 提示:
🛑 验证配置 (必做!): 千万不要直接重启! 先执行下面命令测试:
bashsudo mount -a- 如果不报错: 恭喜,配置正确。
- 如果报错: 不要重启! 立即检查
/etc/fstab拼写,或者用sudo mv /etc/fstab.bak /etc/fstab还原备份。
4. 目录权限管理 (Permissions)
磁盘挂载好后,默认是 root 权限。为了让你的 Docker 容器和当前用户能读写,需要修改权限。
4.1 核心概念
- Owner (属主): 文件属于谁 (比如
allen)。 - Group (属组): 文件属于哪个组 (通常也是
allen)。 - Mode (模式): 读(r)、写(w)、执行(x)。
4.2 统一权限操作
假设你的登录用户是 allen (请替换为你实际的用户名):
bash
# 1. 确认你的用户名
whoami
# 输出: allen
# 2. 将 /srv/data 的所有权改为你
# -R 表示递归 (连同里面的子文件夹一起改)
sudo chown -R allen:allen /srv/data
# 3. 赋予组写权限 (775)
# 这样不仅你是 owner 能写,同组的进程也能写 (便于 Docker 映射)
sudo chmod -R 775 /srv/data4.3 验证权限
bash
# 尝试创建一个文件
touch /srv/data/test_write.txt
# 查看文件详情
ls -l /srv/data/test_write.txt
# 应该显示: -rw-rw-r-- 1 allen allen ...
# 删除测试文件
rm /srv/data/test_write.txt5. 常见问题 (Q&A)
Q: Docker 容器报错
Permission denied怎么办?- A: 通常是因为容器内的用户 ID (UID) 和宿主机不一致。
- 快速解法:
sudo chmod -R 777 /srv/data/xxx(给所有人都开放权限,内网环境可接受)。 - 标准解法: 查看容器文档,设置
PUID/PGID环境变量为你的用户 ID (查看 ID 命令:id)。
Q: 开机进不去系统了 (Maintenance Mode)!
- A: 说明
/etc/fstab写错了。 - 输入 root 密码进入终端。
- 重新挂载根目录为读写:
mount -o remount,rw / - 编辑 fstab:
nano /etc/fstab,把刚刚加的那行删掉或注释掉 (#)。 - 重启:
reboot。
- A: 说明
