Re: N-Tier mit FreeBSD, Jail und VMWare

From: Peter Ross <Peter.Ross(at)alumni.tu-berlin.de>
Date: Thu, 22 Aug 2013 12:31:53 +1000 (EST)

Hi Bernhard,

On Wed, 21 Aug 2013, bernhard(at)gtkx.de wrote:

> Nö, denn wenn man die Hilfe für FreeBSD davon abhängig macht ob FreeBSD auf
> einer eigenen Hardware läuft oder in einer VMWare Umgebnung, dann ist das ist
> eher Peinlich, aber nicht für mich!

Vielleicht, vielleicht auch nicht.

Um das mal so zu sagen: Wenn einer versucht, ein Penthouse auf ein
Babajaga-Hexenhaus zu setzen, dann wendet man sich irgendwann ab mit
Grausen.

Die erste Schicht über der Hardware ist das entscheidende Fundament. Und
Windows XP ist ein Fundament aus der OS-Steinzeit, der technische Stand
von 2002.

Es ist kompletter Unsinn, darauf ein modernes System draufzusetzen,
welches wesentlich besser geeignet ist, die Hardware zu bedienen.

Wenn Du Windows XP erst einmal für einige Zeit behalten willst, dann
erzeuge mit P2V-Konvertern (physisch zu virtuell) eine virtuelle Disk, die
dem Windows XP entspricht.

Danach kannst Du ein modernes FreeBSD auf der Hardware installieren und
dann die Windows-XP-Disk einer VirtualBox unterschieben.

Bei Deinem Setup, wenn Du z.B. FreeBSD und ZFS aufsetzt, dann muß sich das
durch eine virtuelle Platte und dann ein File auf einem 10 Jahre alten
NTFS-System "durchhangeln", bevor die Daten endlich auf de Platte landen.

Wenn Du das andersrum machst, wird das ZFS effizient auf der Hardware, und
auch Windows XP wird damit besser umgehen als andersrum. Du kannst von der
virtuellen Platte Snapshots machen etc.

Nach einer Weile kannst Du dann auch den Fileserver auf Samba umstellen
und dann evt. XP ganz "entsorgen".

Ich mache zum Beispiel regelmäßig Snapshots der Samba-Verzeichnisse, wenn
irgendwer kommt ("hab ich aus Versehen gelöscht"), dann klone ich den
Snapshot als Restore-Shere und der Nutzer kann sich seine gestrigen Files
raussuchen.

In Deinem Setup mußt Du Windows XP, VMWare und FreeBSD VLANs beibringen,
wenn Du das andersrum machst, braucht lediglich FreeBSD VLANs. Die
Windows-Virtualbox braucht davon gar nichts zu wissen.

Ich meine, ich habe schon Manager oder Kunden gehabt, die kamen mit so
absurden Ideen, da fiel mir vor lauter Schreck nicht einmal die Hälfte der
Nachteile ein und ich fand die schon abschreckend genug - das hat sie aber
nicht davon abgehalten, das ganze durchzuziehen. Als Angestellter hat man
da nur bedingt Möglichkeiten, sich darauszuhalten, als Privatperson sag
ich da in der Regel nur "Nein, danke" (zum Beispiel: "Mit Windows kenne
ich mich nicht aus, da mußt du jemand anders fragen";-)

Sicher, man kann schon Jenga spielen und einen meterhohen Holzblockturm
errichten und dann seine Katze draufsetzen - das gibt dann 15 Sekunden
Bewunderung bevor das Gebäude zusammenkracht;-)

Wie auch immer, im Prinzip ist dass egal, wie man FreebSD installiert,
physisch, virtuell oder kriminell, wenn man nur sich hinterher nicht
wundert, daß es mangels Ressourcen verhungert (und hier nicht drüber
meckert;-).

Du hast meine Beispiele, darunter ist eine Box mit 3 GByte RAM, ein
älterer HP-Server, der so vor sich hinläuft und einige "Service-Jails" der
Version 2 (VIMAGE) bedient. Eine virtuelle Box mit echtem Ressourcenbedarf
würde ich der Büchse aber nicht zumuten. Ich weiß nicht, was XP als
Fileserver (wenn man nicht interaktiv drauf arbeitet) im Headless Mode
braucht. Wenn es mit 512MB zufrieden ist (solche Rechner waren hier mit XP
im Einsatz, als ich vor zwei Jahren anfing), dann mag das gehen.

Hier die relevanten Auszüge aus der /etc/rc.conf

# the 2 physical interfaces
ifconfig_sk0="up"
ifconfig_bge0="up"

# the different virtual interfaces
cloned_interfaces="lagg0 vlan100 vlan200 vlan300 bridge100 bridge300"

# the link aggregated "physical" interface
ifconfig_lagg0="up laggproto lacp laggport sk0 laggport bge0"

# the different VLANs: 100=DMZ, 200=MGMT, 300=LAN
ifconfig_vlan100="vlan 100 vlandev lagg0"
ifconfig_vlan200=".../24 vlan 200 vlandev lagg0"
defaultrouter="..."
ifconfig_vlan300="vlan 300 vlandev lagg0"

# the VLANs get bridged so we can attach Jails and VMs
ifconfig_bridge100="up"
ifconfig_bridge300="up"

autobridge_interfaces="bridge100 bridge300"
autobridge_bridge100="vlan100"
autobridge_bridge300="vlan300"

# We have jails
jail_enable="YES" # Set to NO to disable starting of any
jails
jail_rc_dir=/etc/jails # Here we have the configured jails
                                 # (Use /opt/fda/sbin/write_jail_rc* to
update
jail_list=""
jail_dir=/etc/jails
if [ -d ${jail_dir} ]; then
    jail_list=`ls ${jail_dir}`
fi

for j in ${jail_list}; do
         . ${jail_dir}/${j}
done

# We have VIMAGE here - so enable jails version 2
jail_v2_enable="YES"

Und das steht in der /etc/jails-Datei für ein Jail

$ cat /etc/jails/dhcpslave
jail_dhcpslave_name="dhcpslave"
jail_dhcpslave_hostname="dhcpslave.vv.fda"
jail_dhcpslave_devfs_enable="YES"
jail_dhcpslave_rootdir="/jails/dhcpslave/20130801"
jail_dhcpslave_vnet_enable="YES"
jail_dhcpslave_exec_prestart0="ifconfig epair4 create"
jail_dhcpslave_exec_prestart1="ifconfig bridge300 addm epair4a"
jail_dhcpslave_exec_prestart2="ifconfig epair4a up"
jail_dhcpslave_exec_earlypoststart0="ifconfig epair4b vnet dhcpslave"
jail_dhcpslave_exec="/usr/sbin/cron"
jail_dhcpslave_exec_afterstart0="/etc/rc.jail"
jail_dhcpslave_exec_poststop0="ifconfig bridge300 deletem epair4a"
jail_dhcpslave_exec_poststop1="ifconfig epair4a destroy"

Die /etc/devfs.rules-Datei wurde angelegt, darin steht

$ cat /etc/devfs.rules
[devfsrules_jail=4]
add include $devfsrules_hide_all
add include $devfsrules_unhide_basic
add include $devfsrules_unhide_login
add path 'bpf*' unhide

Die dafür verantwortlich ist, welche Devices unter /dev erscheinrn und
zugänglich sind.

Im Jail (root=/jails/dhcpslave/20130801) gibt es dann eine /etc/rc.conf
mit:

# The network
ifconfig_epair4b="inet ... netmask 255.255.255.0"
defaultrouter="..."

Mein Kollege hat keinen Erfolg mit der /etc/rc gehabt, deshalb gibt es
eine /etc/rc.jail, die stattdessen nach cron ausgeführt wird:

$ cat /jails/dhcpslave/20130801/etc/rc.jail
#!/bin/sh
. /etc/rc.conf
echo "#"
echo "# Starting JAIL: $hostname"
echo "#"

/etc/rc.d/netif start
/etc/rc.d/defaultroute start
/etc/rc.d/routing start

/usr/bin/nohup /usr/bin/killall cron
. /etc/rc

echo "#"
echo "# JAIL $hostname is now up and running!"
echo "#"
echo

Es kann sein, daß dieses Problemchen schon behoben wurde (dieser
Workaround ist bald 2 Jahre alt), aber ich komme so damit zurecht und hab
es deshalb so gelassen.

Es hat was damit zu tun, daß es in den Startskripten das Stichwort
"nojail" für das Netzwerk fällt, aber ein Jail Version 2 tatsächlich
eigene Netzwerkkonfiguration macht (anders als die "Standardjails":
Version 1.

Das Startskript /etc/rc.d/jail auf dem Host wurde auch ersetzt, um Jails
der Version 2 zu unterstützen.

Die müßte ich Dir wohl privat als Anhang schicken, ich glaube, die Liste
nimmt keine..

Ach ja, Jails Version 2 sind nicht standard, daher brauchst Du einen
selbstgebackenen Kernel mit folgender Konfig:

$ cat /usr/src/sys/amd64/conf/VIMAGE
include GENERIC
ident GENERIC-VIMAGE
options VIMAGE

Dann geht das Bauen los:
# cd /usr/src
..
# make buildkernel KERNCONF=VIMAGE
..
# make installkernel KERNCONF=VIMAGE

(Nach Handbuch
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
oder in deutsch
http://www.freebsd.org/doc/de/books/handbook/makeworld.html)

Schreibe mir, ob Du die /etc/rc.d/jail brauchst, sie basiert auf einem im
Netz gefundenen Beispiel, ich weiß aber nicht mehr, ob wir hier was
verändert haben.

Wie Du Dir vorstellen kannst, habe ich die Dateien nicht alle
handeditiert, die Kreation und Konfiguration der Server und Jails erfolgte
selbst über Skripte. Kann ich sicher mehr drüber schreiben, wenn Interesse
besteht. Ich habe die alle im Wiki und Subversion:-)

Es gibt aber auch Verwaltungsskripte in den Ports, z.B. ezjail.

Soweit fürs erste,
es grüßt
Peter

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Thu 22 Aug 2013 - 04:32:28 CEST

search this site