Proxmox Virtual Environment如何修改镜像硬盘大小及OpenWrt如何修改大小

暗香疏影 创作者

以下是更新了使用PVE导入Openwrt的方法

PVE修改大小

PVE Wiki

首先先使用终端命令进入PVE,然后输入以下命令

1
2
3
4
5
6
7
qm resize <vmid> <disk> <size> 

#exemple: to add 5G to your virtio0 disk on vmid100:

qm resize 100 virtio0 +1G

# <disk> 填写的不是文件位置或文件名,而是网页版写的这个硬盘是什么接口,例如:virtio0, ide0, scsi0, sata0, efidisk0, tpmstate0

网页版操作不是直接在Disk上,而是Hardware > Hard Disk > Disk Action > Resize

OpenWrt修改大小

1 - OpenWrt论坛

我们已经修改好硬盘大小,现在需要进入OpenWrt里面修改硬盘大小使其格式化可读。

先安装以下组件:

1
opkg update && opkg install lsblk fdisk losetup resize2fs

之后按照教程使用fdisk我是不成功的。

方法2:
OpenWrt Docs - Expend Root FS

下载或者保存好:
下载方式:

1
2
3
wget -U "" -O expand-root.sh "https://openwrt.org/_export/code/docs/guide-user/advanced/expand_root?codeblock=0"

chmod+x ./expand-root.sh

文件内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# Configure startup scripts
cat << "EOF" > /etc/uci-defaults/70-rootpt-resize
if [ ! -e /etc/rootpt-resize ] \
&& type parted > /dev/null \
&& lock -n /var/lock/root-resize
then
ROOT_BLK="$(readlink -f /sys/dev/block/"$(awk -e \
'$9=="/dev/root"{print $3}' /proc/self/mountinfo)")"
ROOT_DISK="/dev/$(basename "${ROOT_BLK%/*}")"
ROOT_PART="${ROOT_BLK##*[^0-9]}"
parted -f -s "${ROOT_DISK}" \
resizepart "${ROOT_PART}" 100%
mount_root done
touch /etc/rootpt-resize
reboot
fi
exit 1
EOF
cat << "EOF" > /etc/uci-defaults/80-rootfs-resize
if [ ! -e /etc/rootfs-resize ] \
&& [ -e /etc/rootpt-resize ] \
&& type losetup > /dev/null \
&& type resize2fs > /dev/null \
&& lock -n /var/lock/root-resize
then
ROOT_BLK="$(readlink -f /sys/dev/block/"$(awk -e \
'$9=="/dev/root"{print $3}' /proc/self/mountinfo)")"
ROOT_DEV="/dev/${ROOT_BLK##*/}"
LOOP_DEV="$(awk -e '$5=="/overlay"{print $9}' \
/proc/self/mountinfo)"
if [ -z "${LOOP_DEV}" ]
then
LOOP_DEV="$(losetup -f)"
losetup "${LOOP_DEV}" "${ROOT_DEV}"
fi
resize2fs -f "${LOOP_DEV}"
mount_root done
touch /etc/rootfs-resize
reboot
fi
exit 1
EOF
cat << "EOF" >> /etc/sysupgrade.conf
/etc/uci-defaults/70-rootpt-resize
/etc/uci-defaults/80-rootfs-resize
EOF

更新

1
2
3
4
5
6
# Install packages
opkg update
opkg install parted losetup resize2fs

# Expand root partition/filesystem
sh /etc/uci-defaults/70-rootpt-resize

查看结果:

1
2
3
4
5
6
7
root@OpenWrt:~# df -Th
Filesystem Type Size Used Available Use% Mounted on
/dev/root ext4 994.3M 16.7M 961.6M 2% /
tmpfs tmpfs 1006.1M 64.0K 1006.0M 0% /tmp
/dev/sda1 ext4 15.7M 5.4M 10.0M 35% /boot
/dev/sda1 ext4 15.7M 5.4M 10.0M 35% /boot
tmpfs tmpfs 512.0K 0 512.0K 0% /dev

OpenWrt overlay修改大小

Overlay的本质,是在squashfs上实现用户修改文件导致无法重启成功失败后,自行修复。
我们使用eSir的镜像也是使用overlay作为软件安装的位置。
OpenWrt Overlay扩容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
root@OpenWrt:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 357.4M 0 loop /overlay
sda 8:0 0 1.5G 0 disk
├─sda1 8:1 0 16M 0 part /mnt/sda1
│ /boot
│ /boot
├─sda2 8:2 0 500M 0 part /rom
└─sda128 259:0 0 239K 0 part
sr0 11:0 1 1024M 0 rom


root@OpenWrt:~# df -Th
Filesystem Type Size Used Available Use% Mounted on
/dev/root squashfs 142.8M 142.8M 0 100% /rom
tmpfs tmpfs 997.0M 2.9M 994.1M 0% /tmp
/dev/loop0 f2fs 355.4M 116.4M 238.9M 33% /overlay
overlayfs:/overlay overlay 355.4M 116.4M 238.9M 33% /
/dev/sda1 vfat 16.0M 5.7M 10.3M 35% /boot
/dev/sda1 vfat 16.0M 5.7M 10.3M 35% /boot
tmpfs tmpfs 512.0K 0 512.0K 0% /dev
/dev/sda1 vfat 16.0M 5.7M 10.3M 35% /mnt/sda1

root@OpenWrt:~# losetup /dev/loop0
/dev/loop0: [0017]:15 (/sda2), offset 149553152

如上可以看出,overlay实际上表现为loop0 (loopback), 而通过losetup命令可以看出他实际保存在sda2上。
但是扩展overlay过度复杂,我们首先使用fdisk新建一个分区,例如sda3(ext4)

1
2
3
4
5
opkg update && opkg fdisk

[fdisk /dev/sda -->n -->enter, enter -->w]

mkfs.ext4 /dev/sda3

我们可以直接在OpenWrt中把挂载点全部删除并保存。然后重新生成配置。
这个时候,进入sda3挂载点里改为作为/overlay使用。
以前的配置会全部失效,我们重新配置好ip后进去,将备份的配置重新导入即可。而这个时候overlay将不会是loop0,而是sda3了。

  • 标题: Proxmox Virtual Environment如何修改镜像硬盘大小及OpenWrt如何修改大小
  • 作者: 暗香疏影
  • 创建于 : 2024-01-06 00:00:00
  • 更新于 : 2024-01-06 00:00:00
  • 链接: https://blog.23ikr.com/2024/01/06/2024-01-06-Proxmox-Resize-Image-and-OpenWrt-resize/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
Proxmox Virtual Environment如何修改镜像硬盘大小及OpenWrt如何修改大小