Cél: szoftveres raid1 (tükrözés) megoldása.
Adott hardver:
- 1db 40 gigás merevlemez, rajta a hardy rendszerrel. (sda)
- 2db 160 gigás merevlemez, ezekre kerül a raid és a rendszer kissé átméretezve. (sdb és sdc)
Következők történtek első nekifutásra:
Itthon csak 6.10-es ubuntu cd-t találtam, de mivel elméletileg teljesen mindegy milyen verzióval csinálom, így azt tettem be (persz a gparted miatt nem teljesen mindegy). Gparteddel létrehoztam az egyik új merevlemezen a partíciókat és a meglévőket átmásoltam/átméreteztem. A grub-ot az fstabot és a grub menu.lst-t beállítottam majd megnéztem, hogy betölt-e a rendszer. Itt kezdődtek a bonyodalmak. Egy érdekes ata bugba futottam ami az eredeti hardy telepítést érinti. Bejegyzések alapján azt javasolták hogy frissítsem, intrepidet már nem érinti a hiba. Ezt már nem akartam a régi live cd-ről megcsinálni, ezért leszedtem egy intrepid-et. Viszont itthon csak dvd van, munkahelyen van cd. K3b probléma nélkül kiírta a cd imaget dvd-re. Végre valami ami működik. Intrepid betölt, a root és a boot partíciókat felcsatoltam, majd chroot-olva a környezetet jött a dist upgrade. Probléma nélkül. Feltettem az mdadm-ot, majd létrehoztam a raid tömböket. Ekkor követtem el a végzetes hibát, nem hoztam létre a fájlrendszert a raiden is, hanem rögtön megkezdtem a szinkronizálást. Az mdadm viszont nem hoz létre superblockot és betöltéskor az fsck be is szólt hogy ez így nem lesz jó… Éjjel egy. S láttam hogy mindez nem jó. Alvás. Ma új lappal, zsibbadó arcszerkezettel (pofánrúgott a fogtündér délelőtt), megnézzük hogyan is kellett volna tegnap…
Raid vs Connor második menet:
Intrepid korong be. Partíciók legyalulása. Új szerkezet létrehozása. Így néz ki per winyó:
/dev/sdb5 /boot: 2 giga
/dev/sdb6 swap: 3 giga
/dev/sdb7 /root: 20 giga
/dev/sdb8 /home: maradék
Ugyan így az sdc is. Mindegyik raid flag-et, a /boot boot flag-et kap.
Hozzuk létre a raid-eket. Ehhez mdadm kell majd ami alapból nincs fenn, tehát feltesszük:
apt-get install mdadm
boot:
mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/sdb5 /dev/sdc5
swap:
mdadm --create /dev/md1 --level=1 --raid-disks=2 /dev/sdb6 /dev/sdc6
root:
mdadm --create /dev/md2 --level=1 --raid-disks=2 /dev/sdb7 /dev/sdc7
home:
mdadm --create /dev/md3 --level=1 --raid-disks=2 /dev/sdb8 /dev/sdc8
A háttérben megkezdődik a resync ezt várjuk meg (avagy nézzük a macskát ahogy játszik az mdstat-al).
watch cat /proc/mdstat
Hozzuk létre a fájlrendszert a raiden:
mkfs.ext2 /dev/md0
mkswap /dev/md1
mkfs.ext3 /dev/md2
mkfs.ext3 /dev/md3
Most pedig mindent szépen átpakolunk a régiről az újra. Ehhez felcsatolunk mindent és létrehozzuk a szükséges struktúrát:
mkdir /mnt/new /mnt/old
mount -t ext3 /dev/md2 /mnt/new
mount /dev/sda6 /mnt/old
mount /dev/sda7 /mnt/old/home
mkdir /mnt/new/home /mnt/new/boot
mount -t ext2 /dev/md0 /mnt/new/boot
mount -t ext3 /dev/md3 /mnt/new/home
Kezdődhet a másolgatás:
cd new
tar -C ../old -clspf - . | tar -xlspvf -
cd ..
umount /mnt/old/home
umount /mnt/old
Mivel nálam frissítés kell (hardy nem bootolna), ezért ezt most elvégzem:
chroot /mnt/new
mount -t proc proc /proc
cat /etc/apt/sources.list | sed s/hardy/intrepid/ > new; mv new /etc/apt/sources.list
apt-get update
apt-get dist-upgrade
Újabb szünet.
Ezek részek megint általánosak, mindenki számára el kell végezni. Írjuk át a szükséges fájlokat:
- vim new/etc/fstab
- vim new/boot/grub/menu.lst
root=/dev/md2 md1,/dev/sda7,/dev/sdb7
- vim new/etc/initramfs-tools/modules
md
raid1
Fstabnál md esetén uuid helyett /dev/md[0-9] formátumban adjuk meg, grubnál a root-t kell átírni a megfelelőre. Esetemben /dev/md2. Az initramfs-tools modules fájlába md és raid1 sorok kellenek, hiszen szükséges hogy az initramfs tartalmazza ezeket a kernelmodulokat.
Megnézzük, hogy a grub megtalálja-e amit kell:
grub
root (hd1,4)
setup (hd1)
root (hd2,4)
setup (hd2)
Elméletileg mindent megcsináltunk, leválaszthatjuk a régi merevlemezt. Gép kikapcs, régi winyó leköt, gép elindít. Újra a livecd-t indítsuk. Hozzuk létre a tömböket újra. Mivel a winchester leválasztása után már átrendeződtek, így ennek megfelelően paraméterezzük:
mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/sda5 /dev/sdb5
mdadm --create /dev/md1 --level=1 --raid-disks=2 /dev/sda6 /dev/sdb6
mdadm --create /dev/md2 --level=1 --raid-disks=2 /dev/sda7 /dev/sdb7
mdadm --create /dev/md3 --level=1 --raid-disks=2 /dev/sda8 /dev/sdb8
Csatoljuk fel a boot és a root partíciókat majd lépjünk be a chroot-ba. Erre azért van szükség mert az update-initramfs parancs livecd-n nem fut, ami meg fut az meg nem úgy fut ahogy kéne. Hozzáadjuk az mdadm-hoz, az elkészített tömböket és újrageneráljuk az initramfs-t (initramfs csomagolja az mdadm.conf-ot is, ezért szükséges, hogy a tömb benne legyen!!!):
mdadm --detail --scan >> /mnt/etc/mdadm/mdadm.conf
update-initramfs -u
Reboot és betöltés a merevlemeről.
Megjegyzések:
- mdadm: metadata format 00.90 unknown, ignored.
/etc/mdadm/mdadm.conf fájlban a metadata=00.90 -t cseréljük le metadata=0.90 -re
- Talán egyszerűbben is létre lehet hozni a rendszert. Különös tekintettel a második “tömblétrehozásra”. A neten leginkább olyan megoldások vannak amiknél a felét hozzák létre, arról töltenek be majd hozzácsapják a másik felét. Ez még tesztelést igényel részemről. A másik elképzelés aminek nem tudtam utánajárni, hogy uuid-t adok meg a régi típusú megadás helyett. Bár az initramfs pillanatában még ahogy elnéztem nem létezik a /dev/disk/by-uuid, így ez az elképzelés necces.
- id változtatása parancssorból:
sfdisk --change-id /dev/sdb 1 fd
- Ha nem lenne éles irodai rendszer akkor most jönne az a játék hogy lehúzom az egyiket és úgy bootolok.
Következő (számomra) érdekes dolog a virtualbox xp partíció átméretezése.