Virtueller Arbeitsplatz: Unterschied zwischen den Versionen

Aus /usr/space Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 11: Zeile 11:


== ZFS ==
== ZFS ==
Deduplikation soll NICHT sinnvoll sein?
Die Deduplikation frisst extrem viel RAM und sonstige Ressourcen, daher normalerweise nicht sinnvoll. Es lassen sich auch nicht wirklich Windows und Linux Maschinen deduplizieren. Es gibt ein Testprogramm dass die zu erwartende Speichereinsparung berechnet.


<nowiki>
Nützliche Einstellungen:
Nützliche Einstellungen:
compression          gzip
compression          gzip
Zeile 21: Zeile 22:
encryption            aes-256-ccm  
encryption            aes-256-ccm  
keylocation          prompt
keylocation          prompt
keyformat            passphrase
keyformat            passphrase</nowiki>


zfs create -o encryption=aes-256-ccm  -o keylocation=prompt -o keyformat=passphrase rpool/data/vm-130-disk-1-enc
zfs create -o encryption=aes-256-ccm  -o keylocation=prompt -o keyformat=passphrase rpool/data/vm-130-disk-1-enc
Zeile 29: Zeile 30:
Bestehenden Tank zu einem Mirror machen:
Bestehenden Tank zu einem Mirror machen:
https://blog.fosketts.net/2017/12/11/add-mirror-existing-zfs-drive/
https://blog.fosketts.net/2017/12/11/add-mirror-existing-zfs-drive/
zpool attach rpool /dev/disk/by-id/ata-CT1000MX500SSD1_1845E1D61131-part3 /dev/disk/by-id/ata-Samsung_SSD_860_QVO_2TB_S4CYNF0MB06216B-part3
<nowiki>zpool attach rpool /dev/disk/by-id/ata-CT1000MX500SSD1_1845E1D61131-part3 /dev/disk/by-id/ata-Samsung_SSD_860_QVO_2TB_S4CYNF0MB06216B-part3
zpool attach <poolname> <bestehende Disk> <neue Disk>
zpool attach <poolname> <bestehende Disk> <neue Disk>
zpool status <- gibt uns die Infos dazu aus
zpool status <- gibt uns die Infos dazu aus</nowiki>


== Nextcloud Server ==
== Verschlüsselte VM ==
Verschlüsselten Speicherplatz erstellen
Damit erben neu angelegte Maschinen automatisch den Schlüssel
 
* ZFS Volume verschlüsselt anlegen:  zfs create -o encryption=aes-256-ccm -o keylocation=prompt -o keyformat=passphrase zssd/crypt
* Rechenzentrum -> Storage -> Hinzufügen -> ZFS
* Verschlüsseltes Volume wählen, Maschinen dort anlegen
 
* VM´s können erst gestartet werden nachdem das volume entschlüsselt wurde, hab mir dazu ein Script angelegt mit folgenden Zeilen:
zfs mount zssd/crypt -l # fragt nach dem Passwort, es reicht wenn das Root-Volume entschlüsselt wird


== Windows 10 Arbeitsplatz ==
== Windows 10 Arbeitsplatz ==
Zeile 52: Zeile 62:
!Achtung! Böse Zungen behaupten dass es so möglich ist aus einer gecrackten Win7 Installation einen gültigen Win10 Key zu erhalten. Das wäre natürlich illegal, auch wenn die Aktivierung damit problemlos funktioniert!
!Achtung! Böse Zungen behaupten dass es so möglich ist aus einer gecrackten Win7 Installation einen gültigen Win10 Key zu erhalten. Das wäre natürlich illegal, auch wenn die Aktivierung damit problemlos funktioniert!


=== Unnötigen Win10 Mist entfernen ===
Das sogenannte Decrapifier Script entfernt auf einer jungfräulichen Win10 Installation sämtliches unerwünschtes Windows Zubehör. Achtung - löscht auch sämtliche Benutzerdaten!
https://community.spiceworks.com/scripts/show/4378-windows-10-decrapifier-18xx-19xx


Ich führe das gerne mit -clearstart aus, damit wird auch das Startmenü bereinigt.
== Remotedesktop-Verbesserung ==
gpedit.msc ausführen
Computerkonfiguration -> Administrative Vorlagen -> Windows-Komponenten -> Remotedesktopdienste -> Remotedesktopsitzungs-Host -> Umgebung für Remotesitzung sowie RemoteFX für windows Server
 
Hier aktivieren wir alles was die Qualität raufschraubt und die Netzwerknutzung verringert (weniger Daten = weniger Latenz lautet die Theorie). Bringt natürlich nur was wenn man im LAN verbunden ist, welche Option wozu müsste mal getestet werden. Danach ist es jedenfalls möglich über Remotedesktop nahezu Lagfrei 3D-CAD auszuführen!
 
Ganz wichtig ist die Einstellung "Hardwareadapter für alle Remotedesktopdienste-Sitzungen verwenden". Damit erlauben wir die Nutzung unserer guten teuren Grafikkarte fürs Zeichnen über RDP. Zu sehen ist das im Task-Manager bzw. Ressourcen-Monitor, wo die Auslastung der GPU angezeigt wird. Außerdem gibts noch einige Hardwarebeschleuniger und sonstige Codecs zu aktivieren.
 
Hier meine Liste, ohne Gewähr:
<nowiki>
Einstellung Status Kommentar
RemoteFX für Windows Server 2008 R2
Maximale Farbtiefe einschränken Deaktiviert Nein
Entfernen des Remotedesktophintergrunds erzwingen Nicht konfiguriert Nein
Hardwaregrafikadapter für alle Remotedesktopdienste-Sitzungen verwenden Aktiviert Nein
Maximale Bildschirmauflösung begrenzen Aktiviert Nein
Anzahl Überwachungen beschränken Aktiviert Nein
Element "Trennen" aus dem Dialog "Herunterfahren" entfernen Nicht konfiguriert Nein
Eintrag "Windows-Sicherheit" aus dem Startmenü entfernen Nicht konfiguriert Nein
Verwendung erweiterter RemoteFX-Grafiken für RemoteApp Aktiviert Nein
H.264/AVC 444-Grafikmodus für Remotedesktopverbindungen priorisieren Aktiviert Nein
H.264/AVC-Hardwarecodierung für Remotedesktopverbindungen konfigurieren Aktiviert Nein
Komprimierung für RemoteFX-Daten konfigurieren Aktiviert Nein
Bildqualität für adaptive RemoteFX-Grafik konfigurieren Aktiviert Nein
RemoteFX-Codierung für RemoteFX-Clients für Windows Server 2008 R2 SP1 aktivieren Aktiviert Nein
Adaptive RemoteFX-Grafiken konfigurieren Aktiviert Nein
WDDM-Grafiktreiber für Remotedesktopverbindungen verwenden Aktiviert Nein
Ein Programm beim Herstellen der Verbindung ausführen Nicht konfiguriert Nein
Immer Desktop bei Verbindungsherstellung anzeigen Nicht konfiguriert Nein </nowiki>




== Remotedesktop-Verbesserung ==
Wichtig, im RDP Client Optionen -> Leistung -> Dauerhafte Bitmapzwischenspeicherung aktivieren/deaktivieren. Die Einstellung verändert die schnelle Reaktion beim vollständigen Bildschirminhalt-Aktualisieren (drehen vom ganzen CAD-Modell)


== GPU-Passthrough==
== GPU-Passthrough==
https://pve.proxmox.com/wiki/Pci_passthrough
https://pve.proxmox.com/wiki/Pci_passthrough


Das meiste ist unnötig, wir brauchen die IOMMU:
Das meiste ist unnötig, möglicherweise auch das laden der IOMMU:
/etc/default/grub
/etc/default/grub  
Intel: GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on"
Intel: GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on"
AMD: GRUB_CMDLINE_LINUX_DEFAULT="amd_iommu=on"
AMD: GRUB_CMDLINE_LINUX_DEFAULT="amd_iommu=on"
update-grub
update-grub


Module laden mittels:
Bei neuen Versionen mit ZFS-Root und EFI wird nicht grub verwendet, stattdessen hier eintragen: /etc/kernel/cmdline
pve-efiboot-tool refresh
https://pve.proxmox.com/pve-docs/chapter-sysadmin.html#sysboot
 
Module laden mittels (zuerst prüfen ob die nicht schon geladen sind):
nano /etc/modules
nano /etc/modules
vfio
vfio
Zeile 78: Zeile 117:




Mit dem stock Kernel hat das jetzt schon funktioniert, nach einem Update auf den neuesten war folgender Schritt notwendig:
Mit dem stock Kernel hat das jetzt schon funktioniert, nach einem Update auf den neuesten war folgender Schritt notwendig, mit der frischen Installation rennts wieder ohne:


Device und Vendor ID finden:
Device und Vendor ID finden:
Zeile 99: Zeile 138:




== OpenVPN-Server ==
Sobald das funktioniert hat bootet er in der server-Konsole auf einen schwarzen Bildschirm - die reale grafikkarte ist jetzt display 1! Entweder vor den Monitor setzen oder davor Remotedeskop freischalten!
 
Wir erstellen einen OpenVPN Server mit einer Netzwerkbrücke ins lokale LAN (10.0.0.2)
Zugriff über Port forwarding und DynDNS
Client IP wird dabei vom vpn Server vergeben, Achtung das darf mit dem lokalen DHCP nicht kollidieren!
 
* Priviligierten Container mit Ubuntu erstellen
 
*tun/tap Device dem Container hinzufügen mittels der Zeile:
*Proxmox Server* /etc/pve/lxc/102.conf
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
 
*Containert HERUNTERFAHREN, Starten.
 
* Abhängigkeiten erstellen
apt-get install openvpn bridge-utils easy-rsa
 
cp -r /usr/share/easy-rsa/ /etc/openvpn/easy-rsa
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa build-server-full <servername> nopass
./easyrsa gen-dh
 
cd pki
cp ca.crt dh.pem private/<servername>.key issued/<servername>.crt  /etc/openvpn/server/
 
 
server.conf:
 
# Port Number.
port 11337
# TCP or UDP server.
proto udp
 
# Interface type, TUN or TAP.
dev tap0
 
# Certificates.
ca ca.crt
cert vpn.local.crt
key vpn.local.key
# Diffie hellman parameters.
dh dh.pem
 
# Subnet to use for OpenVPN Connections.
#server 10.8.0.0 255.255.255.0
 
server-bridge 10.0.0.2 255.255.255.0 10.0.0.20 10.0.0.99
 
# Keepalive: send ping every 10 seconds, tunnel down after 120 seconds no response.
keepalive 10 120
 
# LZO Compression for the tunnel.
comp-lzo
 
# Drop privileges to user/group nobody.
user nobody
group nogroup
 
# Makes the link more resistant to connection failures.
persist-key
persist-tun
 
# Username and Password authentication.
client-cert-not-required
username-as-common-name
plugin  /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so login
 
# OpenVPN Status Log files.
status openvpn-status.log
 
# LOG FILE VERBOSITY:
# 0 is silent, except for fatal errors
# 4 is reasonable for general usage
# 5 and 6 can help to debug connection problems
# 9 is extremely verbose
verb 3
##############################################################
 
bridge_up.sh:
bridge_up
#!/bin/bash
 
#################################
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
#################################
 
# Define Bridge Interface
br="br0"
 
# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"
 
# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
eth="eth0"
eth_ip="10.0.0.2"
eth_netmask="255.255.255.0"
eth_broadcast="10.0.0.255"
 
for t in $tap; do
    openvpn --mktun --dev $t
done
 
brctl addbr $br
brctl addif $br $eth
 
for t in $tap; do
    brctl addif $br $t
done
 
for t in $tap; do
    ifconfig $t 0.0.0.0 promisc up
done
 
ifconfig $eth 0.0.0.0 promisc up
 
ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast
 
##########################################################


bridge_down.sh:
#!/bin/bash


####################################
# Tear Down Ethernet bridge on Linux
####################################


# Define Bridge Interface
== AMD Grafikkarten-Probleme ==
br="br0"
AMD Karten haben offenbar einen internen Bug der die Karte beim Weiterleiten nicht mehr richtig resettet. Das gibt schöne unerklärliche Fehler im Clinet, es kann auch der Host abstürzen. Man suche "AMD GPU Reset Proxmox", folgender Code dafür:


# Define list of TAP interfaces to be bridged together
<nowiki>
tap="tap0"
# Get latest Proxmox kernel headers:
apt install pve-headers


ifconfig $br down
# Did that fail? If so make sure you have Proxmox repository set up properly! https://pve.proxmox.com/wiki/Package_Repositories
brctl delbr $br


for t in $tap; do
# Get required build tools:
    openvpn --rmtun --dev $t
apt install git dkms build-essential
done
#############################################################################


client.conf:
# Perform the build:
git clone https://github.com/gnif/vendor-reset.git
cd vendor-reset
dkms install .


client
# Enable vendor-reset to be loaded automatically on startup:
auth-user-pass
echo "vendor-reset" >> /etc/modules
dev tap
update-initramfs -u
proto udp
remote <server> <port>
resolv-retry infinite
nobind


persist-key
# Reboot to load the module:
persist-tun
shutdown -r now</nowiki>
ca ca.crt
comp-lzo
verb 3

Aktuelle Version vom 22. Oktober 2021, 18:45 Uhr

Doku meines Netzwerkaufbaus

Proxmox - Virtualisierung

Backup-Temp setzen und dem ACL geben. Superwichtig - sonst funktioniert das Backup von Containern nicht weil das proxmox root acl deaktiviert hat ?!

zfs create rpool/vztmp zfs set acltype=posixacl rpool/vztmp nano /etc/vzdump.conf tmpdir: /rpool/vztmp

ZFS

Die Deduplikation frisst extrem viel RAM und sonstige Ressourcen, daher normalerweise nicht sinnvoll. Es lassen sich auch nicht wirklich Windows und Linux Maschinen deduplizieren. Es gibt ein Testprogramm dass die zu erwartende Speichereinsparung berechnet.

Nützliche Einstellungen:
compression           gzip
atime                 off
relatime              off

Verschlüsseltes Volume mit Passwort:
encryption            aes-256-ccm 
keylocation           prompt
keyformat             passphrase

zfs create -o encryption=aes-256-ccm -o keylocation=prompt -o keyformat=passphrase rpool/data/vm-130-disk-1-enc

Mount nur möglich mittels -l: zfs mount rbackup/privat -l

Bestehenden Tank zu einem Mirror machen: https://blog.fosketts.net/2017/12/11/add-mirror-existing-zfs-drive/

zpool attach rpool /dev/disk/by-id/ata-CT1000MX500SSD1_1845E1D61131-part3 /dev/disk/by-id/ata-Samsung_SSD_860_QVO_2TB_S4CYNF0MB06216B-part3
zpool attach <poolname> <bestehende Disk> <neue Disk>
zpool status <- gibt uns die Infos dazu aus

Verschlüsselte VM

Verschlüsselten Speicherplatz erstellen Damit erben neu angelegte Maschinen automatisch den Schlüssel

  • ZFS Volume verschlüsselt anlegen: zfs create -o encryption=aes-256-ccm -o keylocation=prompt -o keyformat=passphrase zssd/crypt
  • Rechenzentrum -> Storage -> Hinzufügen -> ZFS
  • Verschlüsseltes Volume wählen, Maschinen dort anlegen
  • VM´s können erst gestartet werden nachdem das volume entschlüsselt wurde, hab mir dazu ein Script angelegt mit folgenden Zeilen:

zfs mount zssd/crypt -l # fragt nach dem Passwort, es reicht wenn das Root-Volume entschlüsselt wird

Windows 10 Arbeitsplatz

Lizenzübertragung Win7 -> 10

Wir können unser Win10 aktivieren indem wir uns ein "Ticket" von einer >am selben Rechner< aktivierten Win7 Version holen, Auszug aus folgender Seite: https://www.heise.de/forum/heise-online/News-Kommentare/Und-noch-ein-Trick-weiterhin-kostenlos-an-Windows-10-zu-kommen/Win10-Aktivierung-gatherosstate-exe-Genuineticket-funzt-immer-noch-Telemetrie/posting-29686180/show/

Wer eine gültige Win7 Lizenz hat: gatherosstate.exe als Administrator ausführen unter einem aktivierten Win7 mit Lizenz Zu finden im Ordner des Win10 Installationsmediums: \x86\sources\gatherosstate.exe \x64\sources\gatherosstate.exe Ein paar Sekunden warten, bis Ticket erstellt wurde. Das Genuineticket.xml unter Windows 10 dann kopieren nach: C:\Programdata\Microsoft\Windows\Clipsvc\Genuineticket\


!Achtung! Böse Zungen behaupten dass es so möglich ist aus einer gecrackten Win7 Installation einen gültigen Win10 Key zu erhalten. Das wäre natürlich illegal, auch wenn die Aktivierung damit problemlos funktioniert!


Remotedesktop-Verbesserung

gpedit.msc ausführen Computerkonfiguration -> Administrative Vorlagen -> Windows-Komponenten -> Remotedesktopdienste -> Remotedesktopsitzungs-Host -> Umgebung für Remotesitzung sowie RemoteFX für windows Server

Hier aktivieren wir alles was die Qualität raufschraubt und die Netzwerknutzung verringert (weniger Daten = weniger Latenz lautet die Theorie). Bringt natürlich nur was wenn man im LAN verbunden ist, welche Option wozu müsste mal getestet werden. Danach ist es jedenfalls möglich über Remotedesktop nahezu Lagfrei 3D-CAD auszuführen!

Ganz wichtig ist die Einstellung "Hardwareadapter für alle Remotedesktopdienste-Sitzungen verwenden". Damit erlauben wir die Nutzung unserer guten teuren Grafikkarte fürs Zeichnen über RDP. Zu sehen ist das im Task-Manager bzw. Ressourcen-Monitor, wo die Auslastung der GPU angezeigt wird. Außerdem gibts noch einige Hardwarebeschleuniger und sonstige Codecs zu aktivieren.

Hier meine Liste, ohne Gewähr:

Einstellung	Status	Kommentar
RemoteFX für Windows Server 2008 R2		
Maximale Farbtiefe einschränken	Deaktiviert	Nein
Entfernen des Remotedesktophintergrunds erzwingen	Nicht konfiguriert	Nein
Hardwaregrafikadapter für alle Remotedesktopdienste-Sitzungen verwenden	Aktiviert	Nein
Maximale Bildschirmauflösung begrenzen	Aktiviert	Nein
Anzahl Überwachungen beschränken	Aktiviert	Nein
Element "Trennen" aus dem Dialog "Herunterfahren" entfernen	Nicht konfiguriert	Nein
Eintrag "Windows-Sicherheit" aus dem Startmenü entfernen	Nicht konfiguriert	Nein
Verwendung erweiterter RemoteFX-Grafiken für RemoteApp	Aktiviert	Nein
H.264/AVC 444-Grafikmodus für Remotedesktopverbindungen priorisieren	Aktiviert	Nein
H.264/AVC-Hardwarecodierung für Remotedesktopverbindungen konfigurieren	Aktiviert	Nein
Komprimierung für RemoteFX-Daten konfigurieren	Aktiviert	Nein
Bildqualität für adaptive RemoteFX-Grafik konfigurieren	Aktiviert	Nein
RemoteFX-Codierung für RemoteFX-Clients für Windows Server 2008 R2 SP1 aktivieren	Aktiviert	Nein
Adaptive RemoteFX-Grafiken konfigurieren	Aktiviert	Nein
WDDM-Grafiktreiber für Remotedesktopverbindungen verwenden	Aktiviert	Nein
Ein Programm beim Herstellen der Verbindung ausführen	Nicht konfiguriert	Nein
Immer Desktop bei Verbindungsherstellung anzeigen	Nicht konfiguriert	Nein 


Wichtig, im RDP Client Optionen -> Leistung -> Dauerhafte Bitmapzwischenspeicherung aktivieren/deaktivieren. Die Einstellung verändert die schnelle Reaktion beim vollständigen Bildschirminhalt-Aktualisieren (drehen vom ganzen CAD-Modell)

GPU-Passthrough

https://pve.proxmox.com/wiki/Pci_passthrough

Das meiste ist unnötig, möglicherweise auch das laden der IOMMU: /etc/default/grub Intel: GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on" AMD: GRUB_CMDLINE_LINUX_DEFAULT="amd_iommu=on" update-grub

Bei neuen Versionen mit ZFS-Root und EFI wird nicht grub verwendet, stattdessen hier eintragen: /etc/kernel/cmdline pve-efiboot-tool refresh https://pve.proxmox.com/pve-docs/chapter-sysadmin.html#sysboot

Module laden mittels (zuerst prüfen ob die nicht schon geladen sind): nano /etc/modules vfio vfio_iommu_type1 vfio_pci vfio_virqfd


Mit dem stock Kernel hat das jetzt schon funktioniert, nach einem Update auf den neuesten war folgender Schritt notwendig, mit der frischen Installation rennts wieder ohne:

Device und Vendor ID finden: lspci -> Graka Suchen und die Nummer für den nächsten Befehl suchen: 09:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480] (rev e7) 09:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590]

Folgend die gefundene Nummer einsetzen: lspci -n -s 09:00 09:00.0 0300: 1002:67df (rev e7) 09:00.1 0403: 1002:aaf0

Eines ist die GraKa, das andere das HDMI Sound device, wir wollen beide weiterleiten:

echo "options vfio-pci ids=1002:67df,1002:aaf0" > /etc/modprobe.d/vfio.conf

Reboot - fertig

!!Wenn das unsere einzige GraKa war wird die Bildschirmausgabe bei "Reading all physical devices" hängen bleiben! Das ist KEIN Freeze, System bootet ganz normal weiter, aber die Grafikkarte ist nicht mehr fürs System nutzbar!


Sobald das funktioniert hat bootet er in der server-Konsole auf einen schwarzen Bildschirm - die reale grafikkarte ist jetzt display 1! Entweder vor den Monitor setzen oder davor Remotedeskop freischalten!


AMD Grafikkarten-Probleme

AMD Karten haben offenbar einen internen Bug der die Karte beim Weiterleiten nicht mehr richtig resettet. Das gibt schöne unerklärliche Fehler im Clinet, es kann auch der Host abstürzen. Man suche "AMD GPU Reset Proxmox", folgender Code dafür:

# Get latest Proxmox kernel headers:
apt install pve-headers

# Did that fail? If so make sure you have Proxmox repository set up properly! https://pve.proxmox.com/wiki/Package_Repositories

# Get required build tools:
apt install git dkms build-essential

# Perform the build:
git clone https://github.com/gnif/vendor-reset.git
cd vendor-reset
dkms install .

# Enable vendor-reset to be loaded automatically on startup:
echo "vendor-reset" >> /etc/modules
update-initramfs -u

# Reboot to load the module:
shutdown -r now