Yang Dibangun
Sebuah mesin bare metal yang menjalankan Proxmox VE sebagai hypervisor-nya sendiri, dengan mirror ZFS di kedua drive NVMe, sebuah bridge yang memberikan alamat nyata kepada tamu, dan virtualisasi bersarang yang diaktifkan dan diverifikasi — artinya tamu di mesin ini dapat menjalankan tamu sendiri.
Nesting adalah alasan untuk melakukan ini di metal daripada di instance virtual. Anda tidak dapat melakukan nesting di dalam hypervisor orang lain dengan hasil yang dapat diprediksi, dan di BM-E tidak ada hypervisor kami yang menghalangi: Anda mendapatkan IPMI, tombol power, dan board. Apa yang berjalan di atasnya adalah keputusan Anda.
Sebelum Memulai
- BM-E: tiga puluh dua core Zen 4, 256 GB ECC, empat drive NVMe, dan delapan alamat IPv4. IPMI dapat diakses melalui VPN, yang disiapkan oleh dukungan saat mesin diserahkan.
- Proxmox VE 8 dipilih saat pemesanan, atau ISO khusus yang diunggah melalui panel. Kedua jalur berakhir di installer yang sama.
- Setengah jam ketika tidak ada yang membutuhkan mesin, karena langkah pertama me-reboot beberapa kali.
1. Instalasi
Hubungkan ke konsol melalui VPN manajemen, mount ISO dan boot. Di layar pemilihan disk, pilih keempat perangkat NVMe, pilih zfs (RAID10), dan buka opsi lanjutan:
ashiftpada 12, yang merupakan nilai yang benar untuk sektor 4-kilobyte dan tidak dapat diubah setelahnya tanpa membangun ulang pool.compresspada lz4. Ini menghabiskan sebagian kecil core dan biasanya mengembalikan sepertiga ruang.hdsizedikurangi untuk menyisakan ruang untuk penyimpanan tamu, kecuali Anda ingin pool root memiliki semuanya.
Atur alamat manajemen dan gateway dari detail panel, dan gunakan nama FQDN mesin sebagai hostname. Dua reboot kemudian Anda memiliki prompt login dan antarmuka web di port 8006.
2. Repositori dan Paket
Repositori enterprise akan gagal tanpa langganan dan memenuhi setiap apt update sampai Anda mengatasinya:
rm -f /etc/apt/sources.list.d/pve-enterprise.sources
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-community.list
apt update && apt full-upgrade -y
apt install -y ifupdown2 chrony zfsutils-linux
reboot3. Memori untuk ZFS
ARC akan tumbuh hingga setengah RAM Anda, dan pada mesin yang tugasnya menjalankan tamu, memori itu memiliki penggunaan yang lebih baik:
echo "options zfs zfs_arc_max=34359738368" > /etc/modprobe.d/zfs.conf
update-initramfs -u -k allTiga puluh dua gigabyte ARC pada mesin 256 GB menyisakan banyak untuk caching tanpa membuat tamu kelaparan. Reboot agar berlaku, atau atur langsung dengan echo ke /sys/module/zfs/parameters/zfs_arc_max jika tidak bisa.
4. Jaringan
Delapan alamat tidak banyak, jadi tamu berada di bridge pribadi dan hanya yang membutuhkan alamat publik yang mendapatkannya dirutekan. Edit /etc/network/interfaces:
auto lo
iface lo inet loopback
auto enp1s0f0
iface enp1s0f0 inet static
address <public address>/24
gateway <gateway>
auto vmbr0
iface vmbr0 inet static
address 10.20.0.1/24
bridge-ports none
bridge-stp off
bridge-fd 0
post-up iptables -t nat -A POSTROUTING -s 10.20.0.0/24 -o enp1s0f0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s 10.20.0.0/24 -o enp1s0f0 -j MASQUERADE
iface vmbr0 inet6 static
address 2001:db8:1a2b:20::1/64IPv6 tidak memerlukan translasi alamat, karena /64 yang dirutekan ke mesin memang dirutekan: tetapkan alamat darinya ke tamu di bridge dan mereka mencapai internet secara langsung. Ketidaksimetrisan antara dua keluarga ini tidak elegan, tetapi itu adalah bentuk jujur dari ruang alamat yang kita tinggali.
sysctl -w net.ipv4.ip_forward=1
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/80-pve.conf
echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.d/80-pve.conf
ifreload -a5. Virtualisasi Bersarang
cat /sys/module/kvm_amd/parameters/nestedPada kernel saat ini ini sudah mencetak 1. Jika mencetak 0:
echo "options kvm-amd nested=1" > /etc/modprobe.d/kvm-amd.conf
update-initramfs -u && rebootNesting juga mengharuskan tamu melihat CPU yang mengakui memiliki fitur tersebut, yang berarti tipe prosesor harus host. Selain itu akan menyajikan model CPU sintetis dengan ekstensi virtualisasi disembunyikan, dan hypervisor dalam menolak untuk mulai dengan kesalahan yang tidak menyebutkan ini sama sekali.
6. Sebuah Tamu
cd /var/lib/vz/template/iso
wget https://cloud.debian.org/images/cloud/trixie/latest/debian-13-genericcloud-amd64.qcow2
qm create 100 --name inner --memory 16384 --cores 8 --cpu host \
--net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-single --ostype l26 \
--agent enabled=1 --machine q35 --bios ovmf
qm set 100 --efidisk0 local-zfs:1
qm importdisk 100 debian-13-genericcloud-amd64.qcow2 local-zfs
qm set 100 --scsi0 local-zfs:vm-100-disk-1,discard=on,ssd=1
qm set 100 --boot order=scsi0
qm set 100 --ipconfig0 ip=10.20.0.100/24,gw=10.20.0.1
qm set 100 --sshkeys /root/.ssh/authorized_keys
qm set 100 --ciuser admin
qm start 100discard=on dengan ssd=1 berarti penghapusan di dalam tamu dikembalikan ke pool daripada menumpuk sebagai ruang yang hilang.
7. Firewall
Antarmuka web di port 8006 tidak seharusnya dapat diakses publik. Batasi di tingkat pusat data ke alamat apa pun yang Anda kelola — endpoint tunnel dari panduan WireGuard adalah kandidat yang jelas:
cat > /etc/pve/firewall/cluster.fw <<EOF
[OPTIONS]
enable: 1
policy_in: DROP
[RULES]
IN SSH(ACCEPT) -source 10.7.0.0/24
IN ACCEPT -source 10.7.0.0/24 -dport 8006 -proto tcp
IN ACCEPT -p icmp
EOF
systemctl restart pve-firewallVerifikasi
Host dulu:
pveversion -v | head -3
zpool status rpool
zpool list -o name,size,alloc,free,frag,cap
arc_summary | head -12Pool melaporkan ONLINE dengan dua pasangan mirror, dan target ARC berada pada tiga puluh dua gigabyte yang Anda atur, bukan pada setengah mesin.
Sekarang inti dari pembangunan ini. Masuk ke tamu dan periksa prosesor yang diberikan:
ssh [email protected]
lscpu | grep -E "Model name|Virtuali"
grep -c svm /proc/cpuinfoNama model harus EPYC asli, dan baris virtualisasi harus melaporkan AMD-V. Angka nol dari perintah ketiga berarti tipe prosesor bukan host, dan semua yang di bawah akan gagal.
Lalu jalankan mesin di dalam mesin:
apt install -y qemu-system-x86 qemu-utils cpu-checker
kvm-ok
wget https://dl-cdn.alpinelinux.org/alpine/v3.22/releases/x86_64/alpine-virt-3.22.0-x86_64.iso
qemu-system-x86_64 -enable-kvm -m 2048 -cdrom alpine-virt-3.22.0-x86_64.iso -nographickvm-ok mencetak bahwa akselerasi dapat digunakan, diikuti oleh boot Alpine yang mencapai prompt login dalam beberapa detik daripada merangkak, adalah verifikasi. Tanpa nesting, perintah yang sama menolak secara langsung atau mengemulasi dalam perangkat lunak dengan kecepatan sekitar seperdua puluh dari kecepatan asli, yang tidak salah lagi.
Terakhir, konfirmasi bahwa antarmuka tertutup dari luar:
curl -m5 -k https://<public address>:8006/ ; echo "exit $?"Timeout koneksi adalah jawaban yang benar.
Setelahnya
Snapshot di ZFS gratis sampai mereka berbeda, jadi jadwal zfs-auto-snapshot malam hampir tidak ada biaya dan telah menyelamatkan lebih banyak mesin daripada kebijakan backup mana pun. Rebuild di metal dilakukan pada hari yang sama, tetapi rebuild mengembalikan mesin kosong, yang merupakan hal yang berbeda dari mengembalikan mesin Anda.