外观
加一块新盘:三种做法
机器里插了一块新硬盘,Web UI 的 节点 → Disks 能看到它,但没法直接用。这篇把它变成可用的存储。
初始化磁盘会清空它
下面所有做法都会抹掉目标磁盘上的全部数据。开始前:
- 用
lsblk -o NAME,SIZE,MODEL,SERIAL按容量、型号和序列号三重确认目标盘,不要只看/dev/sdb这种名字——插拔顺序变化会让设备名漂移。 - 确认这块盘上没有你还要的数据。
- 确认它不是系统盘。系统盘是
lsblk里挂载了/的那块。
先决定用哪种
| 做法 | 适合 | 优点 | 代价 |
|---|---|---|---|
| 目录存储 (Directory) | 放备份、ISO、大文件 | 简单,什么都能放,qcow2 可快照 | 单盘无冗余,性能一般 |
| LVM-Thin | 只放虚拟机/容器磁盘 | 性能好,原生快照,精简分配 | 放不了 ISO 和备份,单盘无冗余 |
| ZFS | 想要冗余、校验、快照 | 数据校验、灵活快照、可多盘冗余 | 吃内存,单盘时冗余为零但开销照吃 |
单盘的情况下怎么选
- 这块盘用来放备份 → 目录存储。
- 这块盘用来跑虚拟机 → LVM-Thin(或 ZFS,如果你想要快照和校验且内存宽裕)。
- 这块盘用来存大文件、以后可能给 NAS 虚拟机 → 先别加进 PVE,考虑整盘直通,见硬件直通。
准备:确认磁盘并清理旧签名
sh
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,MODEL,SERIAL确认目标盘(假设是 /dev/sdb)没有挂载点、不是系统盘。
Web UI 的 节点 → Disks 里,新盘的 Usage 列应该显示 No。如果显示有分区或文件系统,说明盘上有旧数据。确认可以抹掉后,选中它点 Wipe Disk。
Wipe Disk 不可撤销
这个按钮会清除磁盘的分区表和文件系统签名。点下去之前,最后确认一次序列号。
做法一:目录存储
适合放备份、ISO、模板和大文件。
Web UI
节点 → Disks → Directory → Create: Directory:
| 字段 | 填什么 |
|---|---|
| Disk | 选目标磁盘 |
| Filesystem | ext4(稳妥)或 xfs |
| Name | 存储 ID,例如 backup-hdd |
| Add Storage | 勾上,自动注册为 PVE 存储 |
点 Create。PVE 会分区、格式化、挂载到 /mnt/pve/<name>,并写入 /etc/pve/storage.cfg。
之后:选内容类型
创建完成后到 数据中心 → 存储 → 选中它 → 编辑,勾选它该放的内容:
- 作备份盘:勾
VZDump backup file,顺便设置保留策略。 - 放 ISO:勾
ISO image、Container template。 - 放虚拟机磁盘:勾
Disk image、Container。注意此时要用 qcow2 格式才能快照。
做法二:LVM-Thin
适合专门放虚拟机和容器磁盘。
节点 → Disks → LVM-Thin → Create: Thinpool:
| 字段 | 填什么 |
|---|---|
| Disk | 目标磁盘 |
| Name | 例如 vmdata |
| Add Storage | 勾上 |
创建后它只能放 Disk image 和 Container,这是块存储的固有限制。
精简分配意味着可以超额分配
LVM-Thin 允许你给客户机分配的总容量超过物理容量。方便,但写满时客户机会遇到写入失败。把 lvs -a 里的 Data% 当作必须监控的指标,细节见 local 与 local-lvm。
做法三:ZFS
适合想要数据校验、灵活快照,或者有多块盘想做冗余。
节点 → Disks → ZFS → Create: ZFS:
| 字段 | 说明 |
|---|---|
| Name | 池名,例如 tank |
| RAID Level | 单盘选 Single Disk;两块同容量盘选 Mirror;四块起可选 RAID10 |
| Compression | 保持默认(on,通常是 lz4)。它几乎总是划算 |
| ashift | 不懂就保持默认 12(对应 4K 扇区) |
| Devices | 选参与的磁盘 |
ZFS 的两个前提
内存:ZFS 用 ARC 做缓存,默认会占用可观的内存。在内存本来就紧张的机器上加 ZFS 池,会挤压客户机可用内存。加之前先读 ZFS 入门 里关于 zfs_arc_max 的部分。
vdev 不可随意增删:池建好后,往 RAIDZ 里加盘、或者从池里移除 vdev,限制很多。建池时就要想清楚最终形态,这和 LVM 的灵活扩容不是一回事。
创建后 PVE 会自动注册一个 ZFS 类型的存储,可以放虚拟机磁盘和容器。想在同一个池上再放文件(ISO、备份),可以建一个 ZFS 数据集并作为目录存储挂上,属于存储进阶的内容。
检查结果
无论哪种做法,创建后确认:
sh
# 1. 新存储出现并处于 active
pvesm status
# 2. 配置已写入
cat /etc/pve/storage.cfg
# 3. 目录存储确认挂载点
df -h | grep /mnt/pve
# 4. ZFS 确认池状态为 ONLINE
zpool status然后做一次真实写入测试:如果是备份盘,手动跑一次小虚拟机的备份;如果是虚拟机盘,建一台测试虚拟机并开机。能写、能读、重启宿主机后还在,才算真的可用。
重启一次再交付
目录存储依赖 /etc/fstab 或 systemd 挂载单元。重启宿主机一次,确认存储自动挂载回来。这一步能发现「当时能用、重启后消失」的问题。
常见问题
Disks 里看不到新盘。 检查供电和数据线;lsblk 里也没有的话是硬件层面没认到。热插拔的盘可以试 echo "- - -" > /sys/class/scsi_host/host0/scan(各 host 编号都试一遍)。
Wipe Disk 按钮是灰的。 说明这块盘正在被使用——已挂载、在某个卷组里、或者是 ZFS 池成员。先解除占用。
加完盘之后 local-lvm 的容量没变。 这两件事无关。新盘是独立的存储,要扩 local-lvm 得把新盘加进 pve 卷组,见 local 与 local-lvm。