PVE 虚拟机与磁盘管理完整操作指南

PVE 虚拟机与磁盘管理完整操作指南

📁 镜像扩容操作

# 在 pve 给 immortalwrt 扩容
echo "开始镜像扩容操作..."
apt install parted p7zip-full gzip -y
cd /var/lib/vz/template/iso/
dd if=/dev/zero bs=1M count=3500 >> immortalwrt-24.10.4-x86-64-generic-squashfs-combined.img 
parted immortalwrt-24.10.4-x86-64-generic-squashfs-combined.img
# parted 交互命令:
# resizepart 2 100%
# quit
echo "✅ 镜像扩容完成"

🖥️ 创建 OpenWrt 虚拟机


# 创建 Openwrt 虚拟机
echo "开始创建 OpenWrt 虚拟机..."
qm create 1000 --name immortalwrt-Outer --memory 768 --net0 virtio,bridge=vmbr0
qm importdisk 1000 /var/lib/vz/template/iso/immortalwrt-24.10.4-x86-64-generic-squashfs-combined.img local-lvm --format qcow2
qm set 1000 --scsi0 local-lvm:vm-1000-disk-0 --boot order='scsi0'
# 可选:添加第二个网卡(如果需要)
qm set 1000 --net1 virtio,bridge=vmbr1
echo "✅ OpenWrt 虚拟机创建完成"

💾 磁盘直通配置


# 磁盘直通配置
echo "配置磁盘直通..."

# 方法一:命令行直通(将磁盘 /dev/sdb 直通给虚拟机 1002)
qm set 1002 -virtio2 /dev/sdb

# 方法二:配置文件直通
echo "编辑虚拟机配置文件..."
nano /etc/pve/qemu-server/1001.conf
# 在文件中添加:
# virtio2: /dev/sdb

echo "✅ 磁盘直通配置完成"

🔧 完整的磁盘挂载配置流程


# 磁盘挂载配置
echo "开始磁盘挂载配置..."

# 1. 设置 DNS(临时)
echo "nameserver 192.168.1.1" | sudo tee /etc/resolv.conf

# 2. 安装必要工具
apt install util-linux -y

# 3. 查看所有磁盘和分区信息
echo "=== 磁盘信息 ==="
lsblk
echo "=== 分区详情 ==="
fdisk -l

# 4. 获取磁盘 UUID 的多种方法
echo "=== 获取磁盘 UUID ==="
echo "方法一 - 查看特定磁盘:"
blkid /dev/sdb
blkid /dev/sdb1

echo "方法二 - 查看所有磁盘:"
blkid

echo "方法三 - 使用 lsblk 查看:"
lsblk -f

echo "方法四 - 查看 UUID 目录:"
ls -la /dev/disk/by-uuid/

# 5. 创建挂载点
sudo mkdir -p /mnt/sdb

# 6. 临时挂载测试(重要!先测试再写入 fstab)
echo "=== 临时挂载测试 ==="
sudo mount /dev/sdb1 /mnt/sdb
df -h | grep sdb

# 7. 测试读写权限
echo "=== 测试读写权限 ==="
sudo touch /mnt/sdb/test-write.txt
sudo ls -la /mnt/sdb/test-write.txt
sudo rm /mnt/sdb/test-write.txt

# 8. 卸载测试分区
sudo umount /mnt/sdb

# 9. 将 UUID 写入 /etc/fstab(替换为实际的 UUID)
echo "=== 配置 fstab ==="
# 先备份原 fstab
sudo cp /etc/fstab /etc/fstab.backup.$(date +%Y%m%d)

# 获取实际的 UUID(请根据上面的 blkid 输出修改)
DISK_UUID=$(blkid -s UUID -o value /dev/sdb1)
echo "检测到磁盘 UUID: $DISK_UUID"

echo "UUID=$DISK_UUID /mnt/sdb ext4 defaults 0 2" | sudo tee -a /etc/fstab

# 10. 测试 fstab 配置
echo "=== 测试 fstab 配置 ==="
sudo mount -a
if [ $? -eq 0 ]; then
    echo "✅ fstab 配置测试成功"
    echo "=== 当前挂载状态 ==="
    df -h | grep sdb
else
    echo "❌ fstab 配置有错误,请检查"
    echo "=== 错误信息 ==="
    dmesg | tail -20
fi

# 11. 验证重启后自动挂载
sudo systemctl daemon-reload

echo "✅ 磁盘挂载配置完成"

🎯 磁盘信息查看与故障排查


# 磁盘信息查看与故障排查
echo "=== 磁盘详细信息 ==="
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,UUID
echo "=== 磁盘使用情况 ==="
df -hT
echo "=== inode 使用情况 ==="
df -i

# 故障排查命令
echo "=== 故障排查命令 ==="
# 检查磁盘健康状态
sudo smartctl -a /dev/sdb 2>/dev/null || echo "smartctl 未安装或设备不支持"

# 强制检查文件系统(如果怀疑有错误)
# sudo fsck /dev/sdb1

echo "✅ 所有操作完成"

📝 操作说明

⚠️ 重要注意事项:

  1. 镜像扩容前确保有足够的存储空间
  2. 分区调整时确认分区编号(通常是第2个分区)
  3. 磁盘直通前确保磁盘未被系统使用
  4. 修改 fstab 前会自动备份原文件
  5. 务必先测试挂载再写入 fstab,避免系统启动失败

🔄 操作顺序建议:

  1. 先执行磁盘信息查看,确认设备路径
  2. 进行临时挂载测试
  3. 测试读写权限
  4. 配置 fstab
  5. 最后验证自动挂载

🛠️ 常用检查命令:

# 检查分区信息
fdisk -l

# 检查挂载情况
df -h

# 检查 fstab 语法
mount -a

No Comments

Send Comment Edit Comment


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
Previous
Next