方案是用zfs做raid0,并且把zfs作为proxmox的根文件系统。那现在问题就来了,想实现这一套方案的话,安装proxmox就只能用iso来装了,但是这机器没有ipmi,咋办呢?
好在kimsufi后台还提供了一个基于debian的救援系统!我们可以在这个救援系统里面安装kvm然后把硬盘直通给虚拟机来安装proxmox。这里就记录一下折腾的过程。
首先登录到kimsufi的后台,把这个监控关了:
这里说下为啥要把这个关了,因为如果你开着这个,到时候装系统要是配置哪里出了问题导致机器网络不通的话,你在后台执行硬重启会卡很久,因为它这个监控会ping你的机器ip,如果不通的话就会卡很久才有反应,很浪费时间,所以这里先关了,后面等配置全部好了后再打开。
接着点右上角的Netboot,在里面选择Rescue,然后点Next:
点Confirm:
再点右上角的Restart执行硬重启,等待片刻,邮箱里面会收到救援系统的ssh登录ip/账号/密码。
登录到救援系统内,首先查看硬盘的基本情况:
lsblk
可以看到之前系统做了raid1:
查看阵列状态:
mdadm --detail /dev/md127
可以看到这个阵列当前正在工作:
我们需要先停止这个阵列:
mdadm --stop /dev/md127
然后删除两块硬盘的分区表:
wipefs -a /dev/sda wipefs -a /dev/sdb
在这个救援系统内查看机器的公网ip,并记录备用:
ip a
回显类似:
eth0:... link/ether ... inet xx.xx.xx.xx ...
查看网关ip:
ip route list
回显类似:
default via xx.xx.xx.xx dev eth0
查看dns:
cat /etc/resolv.conf
回显类似:
nameserver 213.186.33.99
查看机器的ipv6地址:
ip -6 a
回显类似:
查看机器的ipv6网关:
ip -6 route list
回显类似:
kimsufi的网站上虽然标明每台机器只有/128的ipv6,但实际可用应该是/64,为了后续的步骤能够正常进行,这里先简单检查一下机器到底能用多少个ipv6,可以先往机器的主网卡接口添加一个ipv6测试:
ip addr add 2001:41d0:x:xxxx::2/128 dev eno1
在别的机器上能p
pvekclean
,请先安装git clone https://github.com/jordanhillis/pvekclean.git cd pvekclean chmod +x pvekclean.sh
安装完成后执行pvekclean
即可
./pvekclean.sh
echo 'deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription' >> /etc/apt/sources.list.d/pve-no-subscription.list
apt update -y && apt dist-upgrade -y
apt-get update && apt-get install vim lrzsz unzip net-tools curl screen uuid-runtime git -y && apt dist-upgrade -y
sed -i_orig "s/data.status === 'Active'/true/g" /usr/share/pve-manager/js/pvemanagerlib.js sed -i_orig "s/if (res === null || res === undefined || \!res || res/if(/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js sed -i_orig "s/.data.status.toLowerCase() !== 'active'/false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js systemctl restart pveproxy
reboot
E: Sub-process /usr/bin/dpkg returned an error code
zfs的raid,就像软raid,通过计算机的计算来实现raid,但是缓存从哪里来?内存啊,速度比硬盘快的多,而sun的 Solaris,以前就是怪物一样的超级大内存,所以ZFS在设计的时候,就很耗内存,移植到linux之后还带着这样的基因,占用50%的物理内存做zfs缓存。
我的32G内存,就占了一半多一点,系统还得占点。
arcstat,pve管理界面,这些地方都能看到。
这就是ZFS允许减小允许使用ARC大小的最大大小的原因。此设置在/etc/modprobe.d/zfs.conf
文件中完成。
例如,如果您希望ARC永远不要超过32 GB,请添加以下行:
options zfs zfs_arc_max=34359738368
# 设置为1G options zfs zfs_arc_max=1073741824
简单设置命令为:
echo "options zfs zfs_arc_max=1073741824" >> /etc/modprobe.d/zfs.conf
根据你的物理内存,自己计算吧,1G:1*1024*1024*1024*1024
如果根文件系统也使用了ZFS,你必须在每次修改该参数后更新initramfs,如下:
update-initramfs -u
内存占用从16G多变成1G多了。
你就自己看arcstat或PVE的管理界面吧。
apt -y update apt -y install qemu qemu-kvm wget http://download.proxmox.com/iso/proxmox-ve_7.1-1.iso qemu-system-x86_64 \ -enable-kvm \ -nodefaults \ -cdrom /root/proxmox-ve_7.1-1.iso \ -hda /dev/sda \ -hdb /dev/sdb \ -cpu host \ -smp 4 \ -m 8G \ -net nic \ -net user \ -vga std \ -vnc 0.0.0.0:0 \ -usbdevice tablet \ -k en-us
活动昨天跟风入手了KIMSUFI-LE
独服,配置和价格都很不错。唯一槽点是机器只有下行是G口,上行被限制在了100M。听说有几率中奖开到上下都是G口,还听说有几率IPV6的上下行都是G口(仅IPV4限速)。结果我开的机器2个奖都没中(′⌒`)。
写这个教程主要是给IPV6中奖者开小鸡一个参考。IPv4设置较简单,这里只设置了小鸡可以访问IPv4外网,并没有给小鸡分配端口转发(
当创建kvm虚拟机后忘记密码、某些文件丢失或损坏无法继续使用虚拟机,宿主机挂载镜像来解决这样的难题。
1 raw格式
方法一
对于未分区镜像文件直接使用loop:
第一步:
file image.img 查看什么格式
第二步:mount -o loop p_w_picpath.img /mnt/p_w_picpath
lxc容器在这一步,已经可以直接挂载文件到指定位置了
已分区的镜像文件:
如果已知分区的起始位置
mount -o loop,offset=32256 p_w_picpath.img /mnt/p_w_picpath
方法二:
使用losetup + kpartx
losetup /dev/loop0 p_w_picpath.img
kpartx -a /dev/loop0
mount /dev/mapper/loop0p1 /mnt/p_w_picpath
kpartx命令的作用,是让Linux内核读取一个设备上的分区表,然后生成代表相应分区的设备。
kpartx -l p_w_picpathfile 可以查看一个映像文件中的分区,使用 kpartx -a p_w_picpathfile 命令后,就可以通过 /dev/mapper/loop0pX (其中X是 分区号)来访问映像。
2 qcow2格式
对于qcow2格式需要使用qemu-nbd这个工具,如果没有请用yum安装.
modprobe nbd max_part=63
qemu-nbd -c /dev/nbd0 p_w_picpath.img
mount /dev/nbd0p1 /mnt/p_w_picpath
3 如果是LVM格式的镜像:
vgscan
vgchange -ay
mount /dev/VolGroupName/LogVolName /mnt/p_w_picpath
4 最后使用结束需释放资源:
umount /mnt/p_w_picpath
vgchange -an VolGroupName
killall qemu-nbd
kpartx -d /dev/loop0
losetup -d /dev/loop0
默认LXC容器不允许docker嵌套。要启动虚拟化嵌套功能,需要按照以下步骤在proxmox的母鸡上进行后续操作。
本教程使用新创建的虚拟机进行讲解 (假设创建了 CT100) :
cd /etc/pve/lxc
需要先停止lxc容器,之后对配置文件进行修改
nano 100.conf
在cores字段下加入以下代码:
features: nesting=1,fuse=1,