kaip aš išgelbėjau sistemą
šiandien išgelbėjau sistemą nuo mirusio sisteminio disko, lengva ranka permesdamas sistemą + duomenis į gretimą HDD. istorija.
kadaise "ten" pastatėm FreeBSD 4 serverį. su vienu disku, da0 particijos buvo standartinės /, swap, /var, /usr -- kaip pasiūlė /stand/sysinstall. paskum "jie" pridėjo dar vieną diską, ad0. kadangi tuo metu skaitinėjau šitą straipsnį, naujajame diske sukuriau identiškas particijas -- /bkroot, swap, /bkvar ir tiesiog /data. kaip dabar suprantu, identiškai daryt visai nebuvo reikalo, tik root particijai gerai, kad buvo nuo nulinio sektoriaus ir panašaus dydžio. crontabui sudėjau tokį darbą: cd /bkroot && dump 0f - / | restore rf - (nugudrautą iš to paties straipsnio), kuris kasnakt permetinėjo root particiją į antrąjį diską. analogiškai cd /data && dump 0f - /usr | restore rf - darė /usr kopijas. nes maža kas.
maža kas atsitiko po metų. pirmasis diskas ėmė atsakinėti į viską žodžiais I/O error, sistema ėmė griuvinėti, pasikėlusi vėl kiek paveikdavo ir krisdavo vėl. santechnikas ve buvo iškviestas, pagirdytas kava ir pristatytas prie darbo:
-
disklabel -r ad0 > /root/ad0.disklabel.orig
ad0.disklabel.orig atrodė taip:
# /dev/ad0c: type: ESDI disk: ad0s1 label: flags: bytes/sector: 512 sectors/track: 63 tracks/cylinder: 255 sectors/cylinder: 16065 cylinders: 523 sectors/unit: 8417997 rpm: 3600 interleave: 1 trackskew: 0 cylinderskew: 0 headswitch: 0 # milliseconds track-to-track seek: 0 # milliseconds drivedata: 0
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
b: 2097152 204800 swap # swap
c:156344517 0 unused 0 0 #
e: 204800 0 4.2BSD 0 0 0 # /bkroot
f: 20971520 2301952 4.2BSD 0 0 0 # /bkvar
g:133071045 23273472 4.2BSD 0 0 0 # /data
[na taip, tai nėra išmintingiausias disko suskaidymas, tų laikų /stand/sysinstall irgi nebuvo išmintingiausias, aš taip pat ;)]
cp /root/ad0.disklabel.orig /root/ad0.disklabel.new
vim /root/ad0.disklabel.new ir ten padariau tokį vaizdą:
# /dev/ad0c:
type: ESDI
disk: ad0s1
label:
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 523
sectors/unit: 8417997
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # milliseconds
track-to-track seek: 0 # milliseconds
drivedata: 08 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 204800 0 4.2BSD 0 0 0 # /
b: 2097152 204800 swap # swap
c:156344517 0 unused 0 0 #
e: 20971520 2301952 4.2BSD 0 0 0 # /var
f:133071045 23273472 4.2BSD 0 0 0 # /usr
ir užrašiau į diską naują disklabel į ad0: disklabel -R -B ad0 /root/ad0.disklabel.new. raktas -R liepia įrašyti disklabel iš failo, -B perrašo nurodyto disko bootloader'į iš failų /boot/boot1 ir /boot/boot2
beliko pakoreguoti /etc/fstab, kad sistema dirbtų tik su ad0, persikrauti, BIOS nurodyti, kad IDE HDD 0 yra "first boot device" ir su džiugia nuostaba žiūrėti, kaip viskas veikia :)
paskui man dar siūlė po 50, bet kažkaip taip ir nepavyko...