Backup-Met-MSDOS mini-HOWTO
Christopher Neufeld, neufeld@physics.utoronto.ca,
Vertaald door: Ellen Bokhorst, bokkie@nl.linux.org
v, 5 augustus 1997
In deze HOWTO wordt beschreven
hoe een Linux compatibel tape-drive geïnstalleerd
op een MS-DOS computer kan worden gebruikt om een backup
te maken van een bestandssysteem op een Linux-computer.
Eerder postte ik op het Net de
vraag, hoe men een backup maakt van een Linux computer
naar een Colorado Jumbo 250 tape-drive aangesloten op
een MS-DOS computer. Uit de email die ik ontving bleek
dat dit een frequent overdacht probleem is. Nu dat ik
erachter ben gekomen, post ik de methode. Als iemand
dit in een HOWTO document wil gieten, laat me dit dan
weten. Ik zou Jim Nance ( jlnance@isscad.com)
willen bedanken voor het erop wijzen dat een MS-DOS
computer niet altijd een MS-DOS computer hoeft te zijn.
Deze techniek zou ook moeten werken voor elke andere
tape-drive die door de ftape-module wordt ondersteund,
en voor SCSI tape-drives met de benodigde aanpassingen
(d.w.z. vervang /dev/ftape door /dev/st0).
De kriteria die ik stelde bestond
hieruit dat de resulterende setup zo veilig mogelijk
en tamelijk eenvoudig zou moeten zijn en dat het weinig
tot geen ruimte in beslag zou nemen op de harddisk van
de MS-DOS computer. Het zou ook capabel moeten zijn
in het herstellen van de ergst bedenkbare systeembeschadingen
tot aan en inclusief diefstal van de harddisk, waarbij
het nodig zou zijn een kaal Linux bestandssysteem terug
te zetten. In de hier beschreven techniek wordt gebruik
gemaakt van een MS-DOS computer waarop geen harddiskruimte
benodigd is, alhoewel het wel vereist is dat aan de
computer een IP# is toegekend. Je hebt drie geformatteerde,
lege 1.44MB diskettes nodig.
Bij deze beschrijving zal ik
naar de twee computers refereren als ``msdos''
en ``linux''. ``msdos'' is
de naam van de computer waar de tape-drive op is aangesloten
en waarop gewoonlijk MS-DOS wordt gedraaid. ``linux''
is de Linux computer waarvan getracht zal worden een
backup van de disk te maken of gegevens vanaf de tape-drive
op deze disk terug te plaatsen. Ter vereenvoudiging
zal ik naar de eerste computer verwijzen als ``msdos''
zelfs al wordt het geboot en zal het draaien onder Linux.
Verder wordt ervan uitgegaan dat alle padnamen in dit
document relatief zijn aan die van de Linux-computer
met de Search-And-Rescue (SAR) disks ergens op het systeem
gemount. Dit betekent dat het bestand /etc/passwd
het wachtwoordenbestand voor de harddisk van de Linux-computer
is, terwijl bijvoorbeeld /tape144/etc/passwd
het corresponderende bestand is op de diskette.
Ik maak gebruik van de backupscripts
van Karel Kubat, versie 1.03, beschikbaar op
ftp://sunsite.enc.edu:/pub/Linux/system/Backup/backup-1.03.tar.gz
In dit document verwijs ik hiernaar
eenvoudigweg als ``de backupscripts''. Je
hoeft niet in het bezit te zijn van deze scripts voor
je eigen backups naar tape. Ik vind deze scripts prettig
aangezien ze gebruik maken van afio voor het aanmaken
van een ongecomprimeerd archief van gecomprimeerde bestanden,
in plaats van een gecomprimeerd archief met ongecomprimeerde
bestanden. De eerste is veel veiliger als er zich een
leesfout van de media voordoet tijdens het terugzetten
van de gegevens. Ik heb begrepen dat Karel backup niet
langer ondersteunt en nu 'tob', oftewel tape geöriënteerde
backup heeft geproduceerd. Ondanks dat ik het nieuwe package
niet heb geprobeerd, geloof ik niet dat er een veelbetekenend
verschil is met de procedure die hierin wordt uiteengezet.
Ten eerste moet je zorgen aan
de ftape module te komen. Het maakt onderdeel uit van
alle moderne kernels, maar mocht je nog een oudere kernel
gebruiken dan is de module te vinden op:
ftp://sunsite.unc.edu/pub/Linux/kernel/tapes/ftape-2.05.tar.gz
Zorg vervolgens voor een Slackware
bootdisk, (ik maakte gebruik van de netdisk, maar dit
zou niet veel uit mogen maken) en de tape144
rootdisk, en plaats de images op 3"1/2 diskettes.
De ftape module
werkt alleen als het in de kernel is geïnstalleerd
welke draaide toen je het compileerde. Ik kreeg het
niet werkend met de ftape.o module op de
tape144 rootdisk, ik denk omdat die module
van symbolen is ontdaan en niet zal installeren. Zo
en nu moet je een nieuwe kernel aanmaken met netwerk-
en ftape-ondersteuning, en als je een oudere kernel
draait, een nieuwe ftape.o. Lees de aanwijzingen
die met het ftape archief worden meegeleverd
voor aanwijzigingen in deze fase. Denk eraan dat de
kernel die je compileert de Ethernetkaarten op zowel
de Linux computer als de MS-DOS computer moet ondersteunen.
Kopieer de nieuw aangemaakte
kernel-image over die van de Net bootdisk heen. Gebruik
/bin/cp, en maak de bootdisk niet aan met
de opdracht ``dd'' zoals je een opstartbaar
kernel-image aan zou maken. Beveilig de bootdisk tegen
schrijven, en label het: SAR#1.
Mount nu de tape144
root disk. Ik ga ervan uit dat het mountpoint /tape144
is, om verwarring in bestandsnamen te voorkomen. We
hebben er wat vrije ruimte op nodig, dus verwijder de
volgende bestanden:
/tape144/bin/dialog
/tape144/bin/elvis
/tape144/bin/vi
/tape144/boot/ftape.o
Maak nu een nieuw bestand aan:
/tape144/etc/exports
waarin de volgende regel staat:
/mnt msdos(ro)
``msdos'' zou hierin
moeten worden vervangen door de naam of het IP# van de
MS-DOS computer waar de tape-drive op is aangesloten.
Dan voeg je regels toe aan het
bestand /tape144/etc/hosts, zodat je niet
afhankelijk bent van een nameserver, met de namen en
IP-nummers van de Linux en MS-DOS computers. In die
van mij bijvoorbeeld staan de volgende regels:
128.100.75.114 caliban.physics.utoronto.ca caliban caliban.physics
128.100.75.111 ariel.physics.utoronto.ca ariel ariel.physics
Er is een of ander probleem met
de inetd config configuratie. We moeten er de volledige
padnaam van de rsh daemon in plaatsen. Wijzig regel
19 van /tape144/etc/inetd.conf zo dat er
staat:
shell stream tcp nowait root /usr/etc/tcpd /usr/etc/in.rshd
Voeg lokale netrouting informatie
toe aan /tape144/etc/rc.d/rc.inet1, zodat
de MS-DOS computer het netwerk kan gebruiken. Het formaat
hiervan is afhankelijk van je netwerkconfiguratie. Je
kunt het van toepassing zijnde formaat gewoon kopiëren
vanuit het Linux-bestand /etc/rc.d/rc.inet1.
Voor mijn netwerk, moeten hieraan de volgende regels
worden toegevoegd:
/etc/ifconfig eth0 128.100.75.111 broadcast 128.100.75.0 netmask 255.255.255.0
/etc/route add -net 128.100.75.0 netmask 255.255.255.0
Het IP# in de ifconfig regel is
dat van de MS-DOS computer.
Kopieer dit bestand nu naar /tape144/etc/rc.d/rc.inet1-l,
en wijzig het IP# in het nieuwe bestand zodat het dat
van de Linux-computer weergeeft in plaats van die van
de MS-DOS computer.
Verwijder vervolgens de regels
3 tot 11 uit /tape144/etc/rc.local. Dat
is een if-statement waarmee de rc.inet*
bestanden worden uitgevoerd. We willen niet dat dit
tijdens het opstarten gebeurt.
Maak een nieuw bestand aan: /tape144/root/.rhosts
met de regel:
linux root
waar nogmaals, ``linux''
is vervangen door de volledige computernaam (inclusief
domein) of het IP# van de Linux-computer.
Vul het wachtwoordveld in in
/tape144/etc/passwd voor de root-login
om te voorkomen dat mensen inloggen op de MS-DOS computer
op het moment dat je de backup aan het maken bent. Je
kunt dit doen door het corresponderende veld vanuit
het bestand /etc/passwd op je Linux-computer
te kopiëren.
Kopieer /usr/bin/rsh naar /tape144/usr/bin.
Kopieer de volgende bestanden
vanuit /usr/etc naar /tape144/usr/etc:
in.rshd
rpc.mountd
rpc.nfsd
rpc.portmap
services
tcpd
Maak een nieuw script aan, /tape144/bin/tapesetup,
met de volgende inhoud: (wijzig ``linux''
zo, dat het je Linux-computernaam weergeeft).
#! /bin/sh
/bin/sh /etc/rc.d/rc.inet1
/bin/sh /etc/rc.d/rc.inet2
/bin/mount linux:/nfs /mnt
/bin/insmod /mnt/ftape.o
Voor nieuwere kernels is de insmod
regel niet nodig.
Maak vervolgens als volgt nog
een ander nieuw script, /tape144/bin/msdosset:
(wijzig ``linux'' dat het de Linux-computernaam
weergeeft).
#! /bin/sh
/bin/sh /etc/rc.d/rc.inet1
/bin/sh /etc/rc.d/rc.inet2
mount linux:/mnt /mnt
/bin/insmod /mnt/ftape.o
Net als hiervoor, is voor nieuwere
kernels de insmod regel niet nodig.
Maak een leesbaar bestand aan,
/tape144/root/notes, met de volgende behulpzame
informatie voor gebruik bij een volledig herstel:
Voor een volledig herstel van een verwijderde harddisk,
boot de Linux-computer met de SAR disks #1 en #2
en typ dan het volgende:
/bin/sh /etc/rc.d/rc.inet1-l
/bin/sh /etc/rc.d/rc.inet2
/usr/etc/rpc.portmap
/usr/etc/rpc.mountd
/usr/etc/rpc.nfsd
Doe vervolgens SAR disk #3 in de drive en typ:
mount /dev/fd0 /mnt
Maak een nieuw mountpoint aan met:
mkdir /mnt2
en mount je Linux harddiskpartitie op dit punt.
Mogelijk moet je eerst de partitie herformatteren, als dit zo is,
volg dan de aanwijzingen op in de Linux installatie HOWTO.
De SAR disks bevatten alle benodigde bestanden die nodig zijn voor de
herformattering.
Gebruik tenslotte de disks SAR#1 en SAR#2 om de MS-DOS computer op
te starten en het script /bin/msdosset op die computer uit te voeren.
Het zal even duren eer het script klaar is, omdat het een NSF-bestand van
die diskette haalt, dus wees geduldig.
Herstel nu de tape naar /mnt2 op de Linux-computer.
Als je de backupscripts gebruikt,
moet je 'afio' naar de subdirectory /tape144/local/bin
kopiëren. De rest van de backupscript bestanden
zijn op de recovery-disks niet nodig, een archief kan
worden teruggezet door slechts gebruik te maken van
'afio' en 'gzip'.
Het lukte mij niet de backupscripts
te gebruiken zoals ze meegeleverd werden. Het tape-archief
lijkt goed te worden aangemaakt, maar de bestanden erin
zijn niet terug te zetten. Ik bemerkte dat het verwijderen
van de blokomvang en de conversie-opdrachten die erin
staan dit corrigeerde. Hier is de patch voor het ``netbackup''
script. Pas deze patch toe op de harddiskkopie van 'netbackup'
op de Linux computer als ook op de kopie op de SAR-disks.
*** netbackup.orig Mon Jan 9 17:22:32 1995
--- netbackup Mon Jan 9 17:23:25 1995
***************
*** 35,41 ****
"'mknod", devname, "p'");
exec ("su -", USERNAME, "-c",
"'rsh ", REMOTE_HOST,
! "\"dd", "of=" REMOTE_DEVICE, "obs=20k", "conv=sync\"",
"<", devname,
"'&"
);
--- 35,41 ----
"'mknod", devname, "p'");
exec ("su -", USERNAME, "-c",
"'rsh ", REMOTE_HOST,
! "\"dd", "of=" REMOTE_DEVICE, "\"",
"<", devname,
"'&"
);
***************
*** 50,56 ****
"'mknod", devname, "p'");
exec ("su", USERNAME, "-c",
"'rsh ", REMOTE_HOST,
! "\"dd", "if=" REMOTE_DEVICE, "ibs=20k", "conv=sync\"",
">", devname,
"'&"
);
--- 50,56 ----
"'mknod", devname, "p'");
exec ("su", USERNAME, "-c",
"'rsh ", REMOTE_HOST,
! "\"dd", "if=" REMOTE_DEVICE, "\"",
">", devname,
"'&"
);
Je bent nu klaar met SAR disk
#2. Beveilig het tegen schrijven.
Mount vervolgens een lege, geformatteerde
disk (maak het aan met fdformat en mkfs).
Kopieer het bestand ftape.o er naartoe,
en label het SAR#3. Om de een of andere reden gaat het
niet goed als je deze disk tegen schrijven beveiligd,
dus doe dit niet.
Maak op de Linux-computer een
nieuwe directory voor NFS file-serving. Ik maakte een
directory:
/nfs
Plaats de ftape.o (ongestript,
ongeveerd 500+ kB) in deze subdirectory. Maak een regel
in het Linux export bestand /etc/exports:
/nfs msdos(ro)
Merk op dat alle bestanden in je
NFS directory en de daaronderliggende subdirectory's niet
veilig zijn. Iemand anders zou de MS-DOS computer in Linux
kunnen booten met eigen bootdisks en deze directory mounten,
dus plaats geen gevoelige gegevens in deze NFS-subdirectory.
Herstart de NFS-daemons, rpc.mountd
en rpc.nfsd. Ze schijnen niet goed te reageren
op een SIGHUP restart, dus kill ze en roep
ze opnieuw aan. Als je deze daemons niet activeert in
/etc/rc.d/rc.inet2 wil je dat wellicht
nu wel doen.
OK, nu zijn we zover om een backup
te maken en deze terug te gaan plaatsen. Boot de MS-DOS
computer met SAR#1 om een volledige backup te maken
vanaf de Linux-computer. Wanneer gevraagd wordt om de
tweede disk, laad je SAR#2. Log in als root, en voer
het script /bin/tapesetup uit. Log uit
op de MS-DOS computer. Als je de backupscripts gebruikt,
zal de opdracht netbackup nu werken. Je kunt ook de
switch ``-f msdos:/dev/ftape'' gebruiken
met GNU tar, cpio, of mt,
en op deze wijze je eigen backup maken. Als je een backupprogramma
hebt, die alleen capabel is in het wegschrijven naar
een lokaal bestand, doe je het volgende: In de veronderstelling
dat het backupprogramma ``localbackup''
heet en naar bestand wegschrijft dat wordt aangegeven
door het opdrachtregelargument:
mknod /tmp/tapepipe p
rsh msdos dd of=/dev/ftape < /tmp/tapepipe &
localbackup /tmp/tapepipe
verwijder /tmp/tapepipe
wanneer het klaar is.
Gegevens terugzetten op een draaiende
Linux-computer: het netbackup script, tar,
cpio, enzovoort zullen allen werken zonder
speciale acties aan de kant van de operator. Als je
een lokaal recovery programma hebt welk vanuit een bestand
gegevens terugzet, doe dan het volgende:
mknod /tmp/tapepipe p
rsh -n msdos dd if=/dev/ftape >> /tmp/tapepipe &
localrecovery /tmp/tapepipe
verwijder /tmp/tapepipe
wanneer je klaar bent.
Merk op dat ik gebruik maak van
'rsh' naar de root gebruiker op de MS-DOS
computer. Dit werkt met een correct ingesteld .rhosts
veld. De configuratie op de 'tape144' disk
staat rsh naar root mogelijk, maar staat
geen telnet of rlogin naar
root toe, logins zijn beperkt tot de console. Dit is
beter voor de beveiliging.
Als je je zorgen maakt over een
root .rhost bestand, kun je een nieuwe
gebruiker aanmaken op SAR#2, ``tapeuser'',
met permissies voor bewerkingen op de tape-drive, maar
niet op de disks. (maak een nieuwe groep aan en plaats
tapeuser in die groep, pas dan een chown
en chmod toe op de bestanden /dev/rft*
en /dev/nrft*). Je backupprogramma moet
dan bekend zijn met die gebruikersnaam in plaats van
met root. Natuurlijk moet er nu een .rhosts
bestand in ~tapeuser op SAR#2 zijn. Voor
eigen gebruik, heb ik voor deze methode gekozen, in
plaats van een root .rhosts.
Tenslotte de aanwijzingen voor
een volledig herstel van een geruïneerde harddisk.
Hierbij wordt ervan uitgegaan dat de Linux-partitie
volledig onherstelbaar is. Herformatteer zonodig de
partitie zoals beschreven in de Linux Installatie HOWTO.
Boot de Linux computer vanaf SAR disk #1. Wanneer daarom
wordt gevraagd doe je de disk #2 in de drive. Volg nu
de aanwijzingen op in het bestand /root/notes
(dit was /tape144/root/notes toen het op
je Linux-computer was gemount). Zodra beide computers
zijn geboot, start je de benodigde herstelroutine. Als
je de backupscripts gebruikt, kun je het als volgt doen:
- wijzig de directory naar het
mountpoint van de harddiskpartitie welke je wilt herstellen.
- als zich gemounte volumes
op de backup bevinden en je wilt ze herstellen, maak
de mountpoints dan binnen de harddiskpartitie en mount
de volumes.
- Geef de opdracht:
rsh -n msdos dd if=/dev/ftape | afio -i -v -Z -c 1024 -
of
rsh -n -l tapeuser msdos dd if=/dev/ftape | afio -i -v -Z -c 1024 -
of
mknod /tmp/backpipe p
rsh -n msdos dd if=/dev/ftape >> /tmp/backpipe &
afio -i -v -Z -c 1024 /tmp/backpipe
Hiermee wordt de tape op de remote
computer ingelezen, het resultaat naar stdout geschreven,
waar afio het overneemt. De '-i'
switch geeft aan de bestanden relatief ten op zichte van
de huidige werkdirectory terug te zetten (wat de root
is van de harddisk partitie). '-v' is verbose,
de bestanden die worden teruggezet worden opgesomd. Met
'-Z' geef je afio mee dat dit een archief
is met individueel gecomprimeerde bestanden. Met '-c
1024' geef je aan dat het gebruik moet maken van
een 5 MB streaming buffer ter voorkoming van veel terugspoelen
van de tape.
De opdrachten in het bestand
/tape144/root/notes zouden vanuit een script
kunnen worden uitgevoerd. Toen ik het probeerde, kreeg
ik rpc setup foutmeldingen. Ik verwacht dat dit kwam
doordat de opdrachten te snel werden uitgevoerd, en
de portmapper zichzelf nog niet goed had geïnstalleerd.
Ik bemerkte dat het handmatig intikken van de reeks
prima werkt, de reden dat ik dat heb aanbevolen.
Ik denk dat deze setup veilig
is. Houd er erg in dat iemand nog steeds toegang kan
krijgen tot alle bestanden als ze naar de tape-drive
worden gezonden en de tape eruit kunnen halen voordat
je weer aanwezig bent, om vervolgens de tape zelf uit
te lezen. Mensen die in het bezit zijn van veel gevoelige
gegevens zouden kunnen overwegen de stroom gegevens
te versleutelen. Archiveer naar standaarduitvoer en
stuur de uitvoer via een pipe door naar het versleutelingsprogramma,
en voeg de uitvoer daarvan toe aan de benoemde pipe
/tmp/tapepipe zoals hiervoor werd beschreven.
Fouten in het herstelproces zullen erin resulteren dat
alle bestanden na dit punt onherstelbaar zullen zijn,
aangezien het gehele archief nu uit een enkel met DES
versleutelde stroom gegevens bestaat. Het is mogelijk
opties met afio te gebruiken om ieder bestand in het
archief eerst via gzip te zenden, dan via een encryptie
programma zoals des, maar let op dat het eerst comprimeren
een tamelijk hoeveelheid bekende gewone tekst geeft
waar vastbesloten code-krakers mee overweg kunnen, dus
een betere benadering zou kunnen zijn de gzip stap over
te slaan en eenvoudigweg de gegevens met des te versleutelen,
ten koste van meer ruimte op de tape. Onnodig te zeggen,
dat met DES versleutelde bestanden niet kunnen worden
gecomprimeerd.
De rc.inet1 aanwijzingen
die ik heb opgenomen, staan alleen communicatie met
het lokale netwerk toe, niet de rest van de wereld via
een gateway.
Tijdens een volledige hersteloperatie
naar een lege harddisk voorziet de SAR disk #3 in ftape.o
naar de MS-DOS computer via NFS. Dit omdat een aantal
oude versies van de ftape module een aantal
van de tape-drives niet kan besturen wanneer er zich
een gemounte disk in het diskettestation bevindt. Met
nieuwere kernels kan het gehele NFS gedoe achterwege
worden gelaten.
Dit is erg belangrijk.
***TEST*** de SAR recovery procedure. Laat niets
aan het toeval over. Zorg er voor dat je op z'n minst
één bestand vanaf je tape naar de Linux-computer
terug kunt zetten met behulp van slechts de SAR-disks
(d.w.z. zonder het mounten van de harddisk). Als je
de Linux-computer niet zonder ongemak voor nogal wat
gebruikers kunt herstarten, wijzig de setup-informatie
op de SAR-disks dan zo dat de ``linux''
identiteit aan een andere MS-DOS computer wordt toegekend
en boot dan vervolgens de twee MS-DOS computers in Linux
om er zeker van te zijn dat alles werkt. Wijzig dan
de ``linux'' identiteit weer zoals het
was zodat je bruikbare SAR-disks hebt.
Copyright 10 jan, 1995 door Christopher
Neufeld ( neufeld@physics.utoronto.ca)
Gewijzigd 6 feb, 1996.
Gewijzigd 5 aug 1997.
|