A következőt alakítjuk ki:
- /dev/md0 (/dev/sda1 és /dev/sdb1-ből): /boot partíció, ext3;
- /dev/md1 (/dev/sda2 és /dev/sdb2-ből): swap;
- /dev/md2 (/dev/sda3 és /dev/sdb3-ből): / partíció, ext3
server1:~# fdisk -l Disk /dev/sda: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 18 144553+ 83 Linux /dev/sda2 19 80 498015 82 Linux swap / Solaris /dev/sda3 81 652 4594590 83 Linux Disk /dev/sdb: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdb doesn't contain a valid partition table server1:~#
mdadm telepítése:
apt-get install initramfs-tools mdadm
A következő kérdést teszi fel:
MD arrays needed for the root filesystem: <-- all
Ezután betöltünk néhány modult (az újraindítást elkerülendő):
modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10
Nézzük meg:
cat /proc/mdstat
A kimenet hasonlóképpen kell kinézzen:
server1:~# cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] unused devices: <none> server1:~#
/dev/sdb előkészítése
A már meglévő rendszerünkön RAID1 tömb létrehozásához először a /dev/sdb merevlemezt kell előkészíteni a RAID1-re, azután a /dev/sda lemez tartalmát átmásolni rá, végül /dev/sda-t hozzáadni a tömbhöz.
Először átmásoljuk /dev/sda partíciós tábláját /dev/sdb-re, így ezután mindkét lemez azonos felépítéssel rendelkezik:
sfdisk -d /dev/sda | sfdisk /dev/sdb
A kimenetnek a következőképpen kell kinéznie:
server1:~# sfdisk -d /dev/sda | sfdisk /dev/sdb Checking that no-one is using this disk right now ... OK Disk /dev/sdb: 652 cylinders, 255 heads, 63 sectors/track sfdisk: ERROR: sector 0 does not have an msdos signature /dev/sdb: unrecognized partition table type Old situation: No partitions found New situation: Units = sectors of 512 bytes, counting from 0 Device Boot Start End #sectors Id System /dev/sdb1 * 63 289169 289107 83 Linux /dev/sdb2 289170 1285199 996030 82 Linux swap / Solaris /dev/sdb3 1285200 10474379 9189180 83 Linux /dev/sdb4 0 - 0 0 Empty Successfully wrote the new partition table Re-reading the partition table ... If you created or changed a DOS partition, /dev/foo7, say, then use dd(1) to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1 (See fdisk(8).) server1:~#
Most meg kell változtatnunk a /dev/sdb lemezen lévő 3 partíció típusát Linux raid autodetect-re:
server1:~# fdisk /dev/sdb Command (m for help): <-- m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) Command (m for help): <-- t Partition number (1-4): <-- 1 Hex code (type L to list codes): <-- L 0 Empty 1e Hidden W95 FAT1 80 Old Minix be Solaris boot 1 FAT12 24 NEC DOS 81 Minix / old Lin bf Solaris 2 XENIX root 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT- 3 XENIX usr 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT- 4 FAT16 <32M 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT- 5 Extended 41 PPC PReP Boot 85 Linux extended c7 Syrinx 6 FAT16 42 SFS 86 NTFS volume set da Non-FS data 7 HPFS/NTFS 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / . 8 AIX 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility 9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM df BootIt a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e1 DOS access b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS e4 SpeedStor e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs f W95 Ext'd (LBA) 54 OnTrackDM6 a5 FreeBSD ee EFI GPT 10 OPUS 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/ 11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b 12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f1 SpeedStor 14 Hidden FAT16 <3 61 SpeedStor a9 NetBSD f4 SpeedStor 16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary 17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fd Linux raid auto 18 AST SmartSleep 65 Novell Netware b8 BSDI swap fe LANstep 1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid ff BBT 1c Hidden W95 FAT3 75 PC/IX Hex code (type L to list codes): <-- fd Changed system type of partition 1 to fd (Linux raid autodetect) Command (m for help): <-- t Partition number (1-4): <-- 2 Hex code (type L to list codes): <-- fd Changed system type of partition 2 to fd (Linux raid autodetect) Command (m for help): <-- t Partition number (1-4): <-- 3 Hex code (type L to list codes): <-- fd Changed system type of partition 3 to fd (Linux raid autodetect) Command (m for help): <-- w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. server1:~#
Hogy megbizonyosodjunk arról, nincs előzőleg visszamaradt RAID telepítés /dev/sdb lemezen, lefuttatjuk a következő parancsokat:
mdadm --zero-superblock /dev/sdb1 mdadm --zero-superblock /dev/sdb2 mdadm --zero-superblock /dev/sdb3
Ha nincs visszamaradt RAID telepítés a lemezen, mindegyikük hasonló hibát produkál (nem kell aggódni miatta):
server1:~# mdadm --zero-superblock /dev/sdb1 mdadm: Unrecognised md component device - /dev/sdb1 server1:~#
Egyéb esetben semmi sem jelenik meg.
RAID tömbök létrehozása:
Most hozzuk létre /dev/md0, /dev/md1 és /dev/md2 tömböt.
/dev/sdb1 /dev/md0-hoz, /dev/sdb2 /dev/md1-hez, /dev/sdb3 pedig /dev/md2-höz lesz hozzáadva.
/dev/sda1, /dev/sda2 és /dev/sda3 jelenleg még nem hozzáadható (mivel jelenleg róluk fut a rendszer), ezért a 'missing' helyettesítőt használjuk a következő parancsokban:
mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1 mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2 mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/sdb3
A cat /proc/mdstat parancs most 3 szétbomlott RAID tömböt mutat ([_U] vagy [U_] jelenti a szétbomlott tömböt, míg [UU] azt jelenti, a tömb rendben van):
server1:~# cat /proc/mdstat Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] md2 : active raid1 sdb3[1] 4594496 blocks [2/1] [_U] md1 : active raid1 sdb2[1] 497920 blocks [2/1] [_U] md0 : active raid1 sdb1[1] 144448 blocks [2/1] [_U] unused devices: <none> server1:~#
Ezután létrehozzuk a fájlrendszereket a RAID tömbjeinken (ext3 → /dev/md0, /dev/md2; swap → /dev/md1):
mkfs.ext3 /dev/md0 mkswap /dev/md1 mkfs.ext3 /dev/md2
Most módosítanunk kell a /etc/mdadm/mdadm.conf filet (ami még nem tartalmaz semmilyen információt az új RAID tömbjeinkről) az új helyzethez:
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig mdadm --examine --scan >> /etc/mdadm/mdadm.conf
A fájl tartalma (a 3 /szétesett/ RAID tömb a fájl alján látható):
# mdadm.conf # # Please refer to mdadm.conf(5) for information about this file. # # by default, scan all partitions (/proc/partitions) for MD superblocks. # alternatively, specify devices to scan, using wildcards if desired. DEVICE partitions # auto-create devices with Debian standard permissions CREATE owner=root group=disk mode=0660 auto=yes # automatically tag new arrays as belonging to the local system HOMEHOST <system> # instruct the monitoring daemon where to send mail alerts MAILADDR root # This file was auto-generated on Mon, 26 Nov 2007 21:22:04 +0100 # by mkconf $Id: mkconf 261 2006-11-09 13:32:35Z madduck $ ARRAY /dev/md0 level=raid1 num-devices=2 UUID=72d23d35:35d103e3:01b5209e:be9ff10a ARRAY /dev/md1 level=raid1 num-devices=2 UUID=a50c4299:9e19f9e4:01b5209e:be9ff10a ARRAY /dev/md2 level=raid1 num-devices=2 UUID=99fee3a5:ae381162:01b5209e:be9ff10a
A rendszer beállítása RAID1-re:
Csatoljuk fel /dev/md0 és /dev/md2-őt (a swap tömböt nem kell):
mkdir /mnt/md0
mkdir /mnt/md2
mount /dev/md0 /mnt/md0
mount /dev/md2 /mnt/md2
Ezután módosítsuk a /etc/fstab filet. Cseréljük ki /dev/sda1-et /dev/md0-ra, /dev/sda2-őt /dev/md1-re, valamint /dev/sda3-at /dev/md2-re. Ezután a fájl hasonlóképpen néz ki:
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 /dev/md2 / ext3 defaults,errors=remount-ro 0 1 /dev/md0 /boot ext3 defaults 0 2 /dev/md1 none swap sw 0 0 /dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
Ezután írjuk felül a /etc/mtab fileban /dev/sda1-et /dev/md0-val és /dev/sda3-mat /dev/md2-vel:
/dev/md2 / ext3 rw,errors=remount-ro 0 0 tmpfs /lib/init/rw tmpfs rw,nosuid,mode=0755 0 0 proc /proc proc rw,noexec,nosuid,nodev 0 0 sysfs /sys sysfs rw,noexec,nosuid,nodev 0 0 udev /dev tmpfs rw,mode=0755 0 0 tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0 devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0 /dev/md0 /boot ext3 rw 0 0
Most készen állunk a GRUB betöltő beállításához. Nyissuk meg a /boot/grub/menu.lst filet. Adjuk hozzá a fallback 1 sort rögtön a default 0 után:
[...] default 0 fallback 1 [...]
Ezzel annyi történik, hogy ha az első (nulladik) kernel betöltése sikertelen, a második lesz betöltve.
Ugyanebben a fájlban, alul található néhány kernelre vonatkozó sor.
Közülük az elsőt illesszük be saját maga fölé, majd cseréljük le benne a root=/dev/sda3-at root=/dev/md2-re, valamint root (hd0,0)-át root (hd1,0)-ra:
[...] ## ## End Default Options ## title Debian GNU/Linux, kernel 2.6.18-4-486 RAID (hd1) root (hd1,0) kernel /vmlinuz-2.6.18-4-486 root=/dev/md2 ro initrd /initrd.img-2.6.18-4-486 savedefault title Debian GNU/Linux, kernel 2.6.18-4-486 root (hd0,0) kernel /vmlinuz-2.6.18-4-486 root=/dev/sda3 ro initrd /initrd.img-2.6.18-4-486 savedefault title Debian GNU/Linux, kernel 2.6.18-4-486 (single-user mode) root (hd0,0) kernel /vmlinuz-2.6.18-4-486 root=/dev/sda3 ro single initrd /initrd.img-2.6.18-4-486 savedefault ### END DEBIAN AUTOMAGIC KERNELS LIST
root (hd1,0) /dev/sdb-re hivatkozik, ami már a RAID tömbünk része. Nemsokára újraindítjuk a rendszert, így a rendszer a (még szétesett) RAID tömbről próbál bootolni.
Ha nem jár sikerrel, /dev/sda-ról bootol. (→ fallback 1)
Most hangoljuk a ramdiszket a új helyzethez:
update-initramfs -u
Ezután másoljuk /dev/sda1 és /dev/sda3 tartalmát /dev/md0, valamint /dev/md2-re (amik /mnt/md0, ill. /mnt/md1-ként vannak mountolva):
cp -dpRx / /mnt/md2 cd /boot cp -dpRx . /mnt/md0
GRUB előkészítése (első rész):
Ezek után fel kell telepítenünk a GRUB-ot a második merevlemezre is (/dev/sdb):
grub
A GRUB shell-ben a következő parancsokat írjuk be:
grub> root (hd0,0) Filesystem type is ext2fs, partition type 0x83 grub> setup (hd0) Checking if "/boot/grub/stage1" exists... no Checking if "/grub/stage1" exists... yes Checking if "/grub/stage2" exists... yes Checking if "/grub/e2fs_stage1_5" exists... yes Running "embed /grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded. succeeded Running "install /grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/grub/stage2 /grub/menu.lst"... succeeded Done. grub> root (hd1,0) Filesystem type is ext2fs, partition type 0xfd grub> setup (hd1) Checking if "/boot/grub/stage1" exists... no Checking if "/grub/stage1" exists... yes Checking if "/grub/stage2" exists... yes Checking if "/grub/e2fs_stage1_5" exists... yes Running "embed /grub/e2fs_stage1_5 (hd1)"... 15 sectors are embedded. succeeded Running "install /grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/grub/stage2 /grub/menu.lst"... succeeded Done. Grub> quit
Most a normál shellbe visszatérve újraindítjuk a rendszert és reméljük, rendben bebootol a RAID tömbről:
reboot
/dev/sda előkészítése
Ha minden jól megy, /dev/md0 és /dev/md2 megtalálható a df -h kimenetében.
server1:~# df -h Filesystem Size Used Avail Use% Mounted on /dev/md2 4.4G 730M 3.4G 18% / tmpfs 126M 0 126M 0% /lib/init/rw udev 10M 68K 10M 1% /dev tmpfs 126M 0 126M 0% /dev/shm /dev/md0 137M 17M 114M 13% /boot server1:~#
cat /proc/mdstat kimenete a következőképpen alakul:
server1:~# cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sdb3[1] 4594496 blocks [2/1] [_U] md1 : active raid1 sdb2[1] 497920 blocks [2/1] [_U] md0 : active raid1 sdb1[1] 144448 blocks [2/1] [_U] unused devices: <none> server1:~#
Most meg kell változtatnunk /dev/sda lemezen lévő partíciók típusát is Linux raid autodetect-re:
server1:~# fdisk /dev/sda Command (m for help): <-- t Partition number (1-4): <-- 1 Hex code (type L to list codes): <-- fd Changed system type of partition 1 to fd (Linux raid autodetect) Command (m for help): <-- t Partition number (1-4): <-- 2 Hex code (type L to list codes): <-- fd Changed system type of partition 2 to fd (Linux raid autodetect) Command (m for help): <-- t Partition number (1-4): <-- 3 Hex code (type L to list codes): <-- fd Changed system type of partition 3 to fd (Linux raid autodetect) Command (m for help): <-- w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot. Syncing disks. server1:~#
Most hozzáadhatjuk /dev/sda1, /dev/sda2 és /dev/sda3-at a megfelelő RAID tömbökhöz:
mdadm --add /dev/md0 /dev/sda1 mdadm --add /dev/md1 /dev/sda2 mdadm --add /dev/md2 /dev/sda3
Most vessünk egy pillantást /proc/mdstat filera:
...és látnunk kell, hogy a RAID tömbök elkezdték a szinkronizációt:
server1:~# cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sda3[2] sdb3[1] 4594496 blocks [2/1] [_U] [=====>...............] recovery = 29.7% (1367040/4594496) finish=0.6min speed=85440K/sec md1 : active raid1 sda2[0] sdb2[1] 497920 blocks [2/2] [UU] md0 : active raid1 sda1[0] sdb1[1] 144448 blocks [2/2] [UU] unused devices: <none> server1:~#
(Futtatható a következő parancs a futó folyamat figyeléséhez: watch cat /proc/mdstat
/a watch elhagyása CTRL+C-vel lehetséges/).
Várjunk a szinkronizáció befejeztéig (a kimenetnek a következőképpen kell kinézni):
server1:~# cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sda3[0] sdb3[1] 4594496 blocks [2/2] [UU] md1 : active raid1 sda2[0] sdb2[1] 497920 blocks [2/2] [UU] md0 : active raid1 sda1[0] sdb1[1] 144448 blocks [2/2] [UU] unused devices: <none> server1:~#
Ezután hangoljuk a /etc/mdadm/mdadm.conf-ot az új helyzethez:
cp /etc/mdadm/mdadm.conf_orig /etc/mdadm/mdadm.conf mdadm --examine --scan >> /etc/mdadm/mdadm.conf
/etc/mdadm/mdadm.conf a következőképpen kell kinézzen:
# mdadm.conf # # Please refer to mdadm.conf(5) for information about this file. # # by default, scan all partitions (/proc/partitions) for MD superblocks. # alternatively, specify devices to scan, using wildcards if desired. DEVICE partitions # auto-create devices with Debian standard permissions CREATE owner=root group=disk mode=0660 auto=yes # automatically tag new arrays as belonging to the local system HOMEHOST <system> # instruct the monitoring daemon where to send mail alerts MAILADDR root # This file was auto-generated on Mon, 26 Nov 2007 21:22:04 +0100 # by mkconf $Id: mkconf 261 2006-11-09 13:32:35Z madduck $ ARRAY /dev/md0 level=raid1 num-devices=2 UUID=72d23d35:35d103e3:2b3d68b9:a903a704 ARRAY /dev/md1 level=raid1 num-devices=2 UUID=a50c4299:9e19f9e4:2b3d68b9:a903a704 ARRAY /dev/md2 level=raid1 num-devices=2 UUID=99fee3a5:ae381162:2b3d68b9:a903a704
GRUB előkészítése (második rész):
Majdnem készen vagyunk. Most újra módosítanunk kell a /boot/grub/menu.lst-ét.
Jelenleg úgy van konfigurálva, hogy /dev/sdb (hd1,0)-ról bootoljon. Természetesen azt szeretnénk, hogy a rendszer akkor is bootolni tudjon, amikor /dev/sdb meghibásodik.
Ezért másoljuk az első kernelbejegyzést (ami hd1-et tartalmazza) és illesszük be alá, valamint hd1-et írjuk felül benne hd0-val.
Továbbá kikommentelünk minden más kernelbejegyzést, így a következőképpen néz ki:
[...] ## ## End Default Options ## title Debian GNU/Linux, kernel 2.6.18-4-486 RAID (hd1) root (hd1,0) kernel /vmlinuz-2.6.18-4-486 root=/dev/md2 ro initrd /initrd.img-2.6.18-4-486 savedefault title Debian GNU/Linux, kernel 2.6.18-4-486 RAID (hd0) root (hd0,0) kernel /vmlinuz-2.6.18-4-486 root=/dev/md2 ro initrd /initrd.img-2.6.18-4-486 savedefault #title Debian GNU/Linux, kernel 2.6.18-4-486 #root (hd0,0) #kernel /vmlinuz-2.6.18-4-486 root=/dev/sda3 ro #initrd /initrd.img-2.6.18-4-486 #savedefault #title Debian GNU/Linux, kernel 2.6.18-4-486 (single-user mode) #root (hd0,0) #kernel /vmlinuz-2.6.18-4-486 root=/dev/sda3 ro single #initrd /initrd.img-2.6.18-4-486 #savedefault ### END DEBIAN AUTOMAGIC KERNELS LIST
Ugyanebben a fileban van egy kopt sor. Írjuk felül /dev/sda3-mat /dev/md2-vel (ne távolítsuk el a #-et a sor elejéről!):
[...] # kopt=root=/dev/md2 ro […]
Ezután frissítsük a ramdiszket:
update-initramfs -u
...és indítsuk újra a gépet:
reboot
Probléma nélkül bootolnia kell a rendszernek.
Ez minden – sikeresen beállítottad a szoftveres RAID1-et a futó Debian rendszereden.
Tesztelés
Most szimuláljunk egy merevlemez meghibásodást. Nem számít, hogy /dev/sda vagy /dev/sdb eszközt választod. Ebben a példában /dev/sdb meghibásodását feltételezem.
Merevlemez meghibásodás szimulálásához akár leállíthatod a rendszert és eltávolíthatod /dev/sdb-t a gépből, vagy eltávolíthatod szoftveresen hasonlóképpen:
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md1 --fail /dev/sdb2
mdadm --manage /dev/md2 --fail /dev/sdb3
mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm --manage /dev/md1 --remove /dev/sdb2
mdadm --manage /dev/md2 --remove /dev/sdb3
Állítsd le a rendszert:
shutdown -h now
Ezután tégy egy új merevlemezt /dev/sdb helyére (ha /dev/sda lemez meghibásodását szimulálod, most tedd be /dev/sdb-t /dev/sda helyére és az új merevlemezt /dev/sdb-re csatlakoztasd) és bootold be a rendszert. Gond nélkül el kell indulnia.
Most írd be:
cat /proc/mdstat
...és látnod kell a szétbomlott tömböket:
server1:~# cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sda3[0] 4594496 blocks [2/1] [U_] md1 : active raid1 sda2[0] 497920 blocks [2/1] [U_] md0 : active raid1 sda1[0] 144448 blocks [2/1] [U_] unused devices: <none> server1:~#
Az fdisk -l kimenete hasonlóképpen néz ki:
server1:~# fdisk -l Disk /dev/sda: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 18 144553+ fd Linux raid autodetect /dev/sda2 19 80 498015 fd Linux raid autodetect /dev/sda3 81 652 4594590 fd Linux raid autodetect Disk /dev/sdb: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdb doesn't contain a valid partition table Disk /dev/md0: 147 MB, 147914752 bytes 2 heads, 4 sectors/track, 36112 cylinders Units = cylinders of 8 * 512 = 4096 bytes Disk /dev/md0 doesn't contain a valid partition table Disk /dev/md1: 509 MB, 509870080 bytes 2 heads, 4 sectors/track, 124480 cylinders Units = cylinders of 8 * 512 = 4096 bytes Disk /dev/md1 doesn't contain a valid partition table Disk /dev/md2: 4704 MB, 4704763904 bytes 2 heads, 4 sectors/track, 1148624 cylinders Units = cylinders of 8 * 512 = 4096 bytes Disk /dev/md2 doesn't contain a valid partition table server1:~#
Most átmásoljuk a partíciós táblát /dev/sda-ról /dev/sdb-re:
sfdisk -d /dev/sda | sfdisk /dev/sdb
(Ha hibát kapsz, megpróbálhatod a --force opciót: sfdisk -d /dev/sda | sfdisk --force /dev/sdb)
server1:~# sfdisk -d /dev/sda | sfdisk /dev/sdb Checking that no-one is using this disk right now ... OK Disk /dev/sdb: 652 cylinders, 255 heads, 63 sectors/track sfdisk: ERROR: sector 0 does not have an msdos signature /dev/sdb: unrecognized partition table type Old situation: No partitions found New situation: Units = sectors of 512 bytes, counting from 0 Device Boot Start End #sectors Id System /dev/sdb1 * 63 289169 289107 fd Linux raid autodetect /dev/sdb2 289170 1285199 996030 fd Linux raid autodetect /dev/sdb3 1285200 10474379 9189180 fd Linux raid autodetect /dev/sdb4 0 - 0 0 Empty Successfully wrote the new partition table Re-reading the partition table ... If you created or changed a DOS partition, /dev/foo7, say, then use dd(1) to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1 (See fdisk(8).) server1:~#
Ezután eltávolítjuk bármi nyomát egy előző RAID tömbnek /dev/sdb-ről...:
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2
mdadm --zero-superblock /dev/sdb3
...és hozzáadjuk /dev/sdb-t a RAID tömbhöz:
mdadm -a /dev/md0 /dev/sdb1
mdadm -a /dev/md1 /dev/sdb2
mdadm -a /dev/md2 /dev/sdb3
Most nézzük meg a /proc/mdstat file-t:
server1:~# cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sdb3[2] sda3[0] 4594496 blocks [2/1] [U_] [======>..............] recovery = 30.8% (1416256/4594496) finish=0.6min speed=83309K/sec md1 : active raid1 sdb2[1] sda2[0] 497920 blocks [2/2] [UU] md0 : active raid1 sdb1[1] sda1[0] 144448 blocks [2/2] [UU] unused devices: <none> server1:~#
Várjunk a szinkronizáció befejeztéig:
server1:~# cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sdb3[1] sda3[0] 4594496 blocks [2/2] [UU] md1 : active raid1 sdb2[1] sda2[0] 497920 blocks [2/2] [UU] md0 : active raid1 sdb1[1] sda1[0] 144448 blocks [2/2] [UU] unused devices: <none> server1:~#
Utána futtassuk a grub-ot és telepítsük a boot loadert (betöltőt) mindkét merevlemezre:
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit
Ennyi volna. Kicseréltél egy meghibásodott merevlemezt a RAID-1 tömbödben.
- VaZso blogja
- A hozzászóláshoz be kell jelentkezni
- 6547 megtekintés
Hozzászólások
A fenti leírás eredendően Debian Etch beállításáról szól, de Lenny alatt is ugyanígy használható.
Ha jól rémlik, Squeeze már Grub2-őt használ (bár ebben nem vagyok biztos), így max. ebben lehet különbség.
Remélem, van, akinek segítségére lesz.
Alapvetően csak le akartam menteni magamnak a szöveget, aztán - ha már foglalkozom vele - inkább kivonatot akartam készíteni, végül inkább fordítás lett belőle (ez OpenOffice-ban van).
Most volt egy kis időm kitenni ide is, bár annyira nem volt élvezetes. :) Remélem, azért áttekinthető.
Szerintem egész korrekten végigvezet a dolgokon, bár azt csak most vettem észre, hogy van egy negyedik oldala is az írásnak tesztelés címmel... mindegy, hozzátettem. :)
Én meg kikísérleteztem a dolgot egy gépen magamnak, végülis nem volt vészes a dolog.
- A hozzászóláshoz be kell jelentkezni
Biztosan jó ötlet futó rendszert másolni? Nem inkább valami live rendszerről kellene bootolni, legalább arra az időre, amíg átmásolod a rendszert a másik merevlemezre?
Petya
- A hozzászóláshoz be kell jelentkezni
Lehet... vagy legalábbis nem futtatni rajt közben olyan dolgot, ami ír a lemezre, ill. ügyelni rá.
Normál esetben jobb az elővigyázatosság.
- A hozzászóláshoz be kell jelentkezni
kb egy hónapja csináltam ilyet, live cd betesz, mentés, és felépítettem a tömböt, majd mindent visszamásoltam, végül az fstab, és a grub módosítása volt hátra
--
by Mikul@s
- A hozzászóláshoz be kell jelentkezni
HUP wikibe vele :)
Amúgy a grub2es rész tényleg kicsit hiányos..
Illetve annyit még hozzáfűznék, hogy amennyiben saját kernelünk van, akkor figyeljünk rá, hogy a RAID-hez szükséges dolgok statikusan legyenek benne a kernelben, már ha nem bízunk az initrd-ben.
Ja igen.. 1 kérdés: Mi a fenének modprobe-olni azokat a raid verziókat, amiket aztán nem fogunk használni (raid 0,5,10) ?
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..
- A hozzászóláshoz be kell jelentkezni
Ezen én is elgondolkoztam. Gondolom, a biztonság kedvéért, mielőtt az ember elfelejti és hülyeséget csinálna. :)
- A hozzászóláshoz be kell jelentkezni
A keretet hogy csinalod a kodok kore?
(rejtett bookmark)
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Tulajdonképpen egy egysoros és -oszlopos táblázat, kissé beljebb húzva (idézetként).
Nem biztos, hogy a legjobb megoldás, de ennél jobbat nem sikerült találnom, nélküle pedig nagyon összefolyt az egész.
A célnak egész jól megfelelt. :)
- A hozzászóláshoz be kell jelentkezni
Jo tipp, majd kiprobalom, koszi.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Jó kis leírás, köszi, bár én nem csinálnám futó rendszeren, legalábbis eddig sosem csináltam, és kicsit rizikósnak tartom...
<= Powered By Ubuntu & Gentoo Linux =>
'Software is like sex: It's better when it's free!'
By Linus Torvalds
- A hozzászóláshoz be kell jelentkezni
Kedves Kollégák,
Akadt egy problémám.
Adott a szerverem 2x500Gb SATA WD vinyóval.Oprendszer: Debian 6.
névszerint: sda, sdb
sda1(200mb), sda2(16Gb), sda3(483Gb). sdb1(200mb), sdb2(16Gb), sdb3(483Gb) partíciók lettek létrehozva.
md0 az sda1, sdb1 raid1-ben van. Ez a /boot
md1 az sda2, sdb2 raid0-ben van. Ez a /swap
md2 az sda3, sdb3 raid1-ben van. Ez a /.
Következő történt.
az sdb vinyóra azt mondja hogy hibás. (Egyenlőre nem tűnik annak.) és eltávolította a raidtömbből.
/proc/mdstat
Personalities : [raid0] [raid1]
md2 : active raid1 sdb3[2](F) sda3[0]
471796800 blocks [2/1] [U_]
md1 : active raid0 sda2[0] sdb2[1]
32772096 blocks 256k chunks
md0 : active raid1 sdb1[1] sda1[0]
200704 blocks [2/2] [UU]
unused devices:
mdadm --detail /dev/md0
/dev/md0:
Version : 0.90
Creation Time : Sun Sep 18 23:02:05 2011
Raid Level : raid1
Array Size : 200704 (196.03 MiB 205.52 MB)
Used Dev Size : 200704 (196.03 MiB 205.52 MB)
Raid Devices : 2
Total Devices : 1
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Thu Sep 27 10:24:07 2012
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
UUID : 48c461f8:a009ead6:d96575aa:67f209be
Events : 0.520
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 0 0 1 removed
mdadm --detail /dev/md1
/dev/md1:
Version : 0.90
Creation Time : Sun Sep 18 22:58:44 2011
Raid Level : raid0
Array Size : 32772096 (31.25 GiB 33.56 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 1
Persistence : Superblock is persistent
Update Time : Sun Sep 18 22:58:44 2011
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 256K
UUID : 0c3ccd7d:26cdbc99:6eaf5c7f:c75ce7d3
Events : 0.1
Number Major Minor RaidDevice State
0 8 2 0 active sync /dev/sda2
1 8 18 1 active sync /dev/sdb2
mdadm --detail /dev/md2
/dev/md2:
Version : 0.90
Creation Time : Sun Sep 18 22:58:45 2011
Raid Level : raid1
Array Size : 471796800 (449.94 GiB 483.12 GB)
Used Dev Size : 471796800 (449.94 GiB 483.12 GB)
Raid Devices : 2
Total Devices : 1
Preferred Minor : 2
Persistence : Superblock is persistent
Update Time : Thu Sep 27 11:30:54 2012
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
UUID : 2dc8b14f:87d97aff:aecdfcd3:9a6a9723
Events : 0.1944080
Number Major Minor RaidDevice State
0 8 3 0 active sync /dev/sda3
1 0 0 1 removed
Megpróbáltuk újra hozzá adni az sdb vinyót a tömhöz:
mdadm /dev/md0 --add /dev/sdb1
mdadm /dev/md1 --add /dev/sdb2
mdadm /dev/md2 --add /dev/sdb3
mdadm -D /dev/md2
/dev/md2:
Version : 0.90
Creation Time : Sun Sep 18 22:58:45 2011
Raid Level : raid1
Array Size : 471796800 (449.94 GiB 483.12 GB)
Used Dev Size : 471796800 (449.94 GiB 483.12 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 2
Persistence : Superblock is persistent
Update Time : Sat Sep 29 11:17:34 2012
State : active, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 1
Spare Devices : 0
UUID : 2dc8b14f:87d97aff:aecdfcd3:9a6a9723
Events : 0.2141377
Number Major Minor RaidDevice State
0 8 3 0 active sync /dev/sda3
1 0 0 1 removed
2 8 19 - faulty spare /dev/sdb3
A kérdésem az lenne hogy hogyan tudjuk megoldani a dolgot?
Elvileg most az sdb vinyón nincs semmi.
Ha újrapartícionálnánk és újra hozzáadnánk vajon megjavítaná?
Előre is köszönöm a segítséget.
üdv, lakisoft
- A hozzászóláshoz be kell jelentkezni
Kedves lakisoft!
1) jo lenne, ha ket szoban osszefoglalnad a problemat, meg a kodok beszurasa elott, es szeparalnad a kodokat.
2) ha mar kodok, jo lenne, ha megismerkednel a pastebin-nel. Rengeteg kod, attekitnhetetlen.
3) es a legjobb lenne ennek a kerdesnek uj topicot nyitni. Ez egy ismeretterjeszto cikk szeretne lenni, nem pedig "Bajom van a RAID-1-gyel" tipusu megoldotopic.
Elore is koszonom, hogy segited a forumozok eletet, es teszel azert, hogy segithessenek neked.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Kedves hrgy84,
Köszönöm az érdemi hozzászólást. A commentet megpróbálom eltávolíttatni.
- A hozzászóláshoz be kell jelentkezni
Köszi a cikket, nagyon sokat segített nekem (linuxilag láma felhasználónak) elindulni. Pár dologgal viszont megszívtam, ezeket megpróbálom összefoglalni, hátha más is beleszalad hasonlóba. (A rendszer, amit RAID-esítettem, egy Debian 6.0 Squeeze, Intel Penti III 866MHz-es procin, 440BX alaplappal, 396MB RAM-mal, Sil3512 alapú SATA illesztővel, RTL8169 alapú gigabit ethernet kártyával, és két Seagate 500GB-s 2,5"-os HDD-vel. Gondolom, az alapkoncepciót kitaláltátok: villanyszámlabarát, de elfogadható sebességű file-, ftp-, http- és egyéb szervert akartam összerakni jobbára lomis/vaterás alkatrészekből úgy, hogy ne kerüljön sokkal többe, mint egy átlagos két személyes vacsora valami nem túl drága étteremben. :))
Nálam a partíciók így néznek ki:
sda1: 11GB, ext3, boot.
sda2: 8GB, swap.
sda3: a maradék, ext3. Ezen vannak a nagyra növő dolgok: samba, mysql, subversion, fax, webroot stb. Szépen fstab-ilan :) be van mountolva valahová, a fájlrendszer eredeti helyein pedig symlinkek vannak a megfelelő könyvtárakra.
Az alapprobléma az volt, hogy a hardveres RAID 1-et nem támogatta a linux, a két HDD szinkronitásával voltak gondok, ráadásul hol az egyikkel, hol a másikkal indult el a rendszer véletlenszerűen, pedig az fstab-ban az UUID-eket lecseréltem sda-ra. (Az, hogy sda, vagy sdb, jobban megkülönböztette őket, mert a hard tükrözés az összes UUID-et egyformává tette a két HDD-n.) Tehát rákerestem a neten, és többek között ezt a cikket találtam.
Pár sikertelen próbálkozás után az élő rendszer piszkálását feladtam. Szerencsére megtaláltam egy HDD-n a mostani rendszerem egy régebbi munkaváltozatát, és azt bootoltam. Nagyon jó mankónak bizonyult. (Persze a megfelelő csomagokat (initramfs-tools, mdadm) telepítettem.) Amikor a kialakítandó fájlrendszeren kellett műveleteket végezni, nagyon jól jött a http://www.howtoforge.com/how-to-set-up-software-raid1-on-a-running-sys… leírásban az egyik hozzászólásban olvasott pár sor:
mount -t proc none /mnt/md0/proc
mount -o bind /dev /mnt/md0/dev
mount -o bind /sys /mnt/md0/sys
chroot /mnt/md0
Ez azt eredményezi, hogy a gyökér fájlrendszer az md0-ra változik, és ha a kernelek egyeznek, gyakorlatilag pont úgy fog viselkedni a rendszer, mintha onnan bootolt volna be. Feltételezi az md0 meglétét (ha automatikusan nem indul el, az
mdadm -A /dev/md0 /dev/sda1 /dev/sdb1
futtatásával lehet "összeszerelni"), és a /mnt/md0-ba felmountoltságát.
Amikbe belefutottam:
1. Nem értem, miért kell átírni az mtab-ban az sda-kat md0-kra. (Ezt a leírást használtam az mtab megértésére: http://www.linuxchix.org/content/courses/filesystem/Lesson5.html ) Vagyis van egy elméletem: arra való, hogy átverjük a grub-ot és az initramfs-update-t, hogy az sda1 helyett az md0-ra írjon. Jól gondolom?
2. A grub2 eléggé eltér a grubtól. Szempontunkból a legfontosabb, hogy nincs menu.lst, hanem program (update-grub) által generált config file van (ebbe lehetőleg nem nyúlunk bele), és hogy moduláris. Ahhoz, hogy a raid-et kezelje, be kell töltenünk a hozzá való modulokat. A http://www.howtoforge.com/how-to-set-up-software-raid1-on-a-running-sys… az alábbiakat javasolja:
Készítsünk másolatot a felhasználó által definiálható template-ből az alábbi módon:
cp /etc/grub.d/40_custom /etc/grub.d/09_swraid1_setup
Aztán szerkesszük meg:
nano /etc/grub.d/09_swraid1_setup
A végére szúrjuk be az alábbiakat (az általam használt rendszerre vonatkozik):
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-686 (RAID)' --class debian --class gnu-linux --class gnu --class os {
insmod gzio
insmod raid
insmod mdraid
insmod part_msdos
insmod ext2
set root='(md/0)'
echo 'Loading Linux 2.6.32-5-686 ...'
linux /boot/vmlinuz-2.6.32-5-686 root=/dev/md/0 ro quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-2.6.32-5-686
}
Ne felejtsük el lefuttatni:
update-grub
(Én elfelejtettem, és egy darabig nem értettem, miért futok hibára.)
Amit érdemes megfigyelni, a modul betöltések (insmod), és a device neve. Az md0 nem működött, az md/0 viszont igen. Ha a bootoláskor hibára futunk, és file not found, ne adj' Isten, grub rescue prompt jelenik meg, csináljunk egy ls-t, abból kiderül, milyen eszközöket lát a grub, és hogy hívja őket.
3. (Talán a legrosszabb.) Összeraktam mindent, ami a cikkben volt, bebootoltam, és grub rescue prompt. ls nem használ, (hd0), (hd0,msdos1) stb. látszott csak, bármit ügyködtem, file not found, vagy unknown file system volt a jussom. Szerencsére ráakadtam erre a leírásra: http://physics.berkeley.edu/eshop/linux/debian-on-raid.html A Some things to know... Issues... It's awkward (Néhány fontos dolog, amit érdemes tudni... Problémák, amik sok kellemetlenséget okozhatnak) pontban a 2. probléma. Ha az ember készít egy ext2 v. ext3 fájlrendszert, aztán szervez belőle raid tömböt, az mdadm a RAID superblock-ot alapértelmezésben a partíció elejére teszi. Ettől viszont a grub hanyatt esik. Ezért a boot dolgokat tartalmazó RAID tömböt a --metadata=1.0 kapcsolóval kiegészítve kell megkreáltatni az mdadm-mal.
4. Ha bármit piszkál az ember bármelyik RAID tömbön, a
cp /etc/mdadm/mdadm.conf_orig /etc/mdadm/mdadm.conf
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
műveleteket el kell végezni.
5. Nem árt, ha újra konfiguráljuk a mdadm-ot a
dpkg-reconfigure mdadm
futtatásával, és nem all-t adunk meg, hanem szépen tételesen a
/dev/md/0 /dev/md/1 /dev/md/2
paramétereket. (A /dev/ nem hagyható el, hiába állítja a text input-ot körülvevő szöveg!) Ekkor ugyanis kapunk idejekorán hibajelzést, ha valamelyik tömböt nem tudja betölteni.
6. Itt már majdnem rendben voltam, oda jutottam, hogy betöltődött a kernel, és az initramfs is. Igen ám, de elfelejtettem a md0-n létrehozni az ext3 fájlrendszert. (Pontosabban - kissé félreértve a 3-ban említett leírást - nem mertem hozzányúlni az sda1-en és sda2-n létrehozott fájlrendszerhez.) Ebből az lett, hogy a fájlrendszer valódi mérete, és a superblock-ban levő méret eltért, ezt súlyos hibának észlelte a rendszer, és nem csak hogy nem tudta kijavítani sehogy, hanem a boot folyamatot sem engedte tovább. Most jött jól a md2, itt csináltam egy mappát a root fájlrendszernek, és - mankóval reboot után - oda másoltam:
cp -ax /mnt/md0/. /mnt/md2/szerval2_raid_root/
Ezután
umount /dev/md0
mkfs.ext3 /dev/md0
Fájlok visszamásolása, reboot, és működés.
- A hozzászóláshoz be kell jelentkezni
Bár tudom, hogy nem mostani a thread, de...
Wheezy-n is megy?
És hogy változnak az md-k ha így néz ki nálam:
/dev/sda1 487M 128K 486M 1% /boot/efi
/dev/sda7 212G 36G 165G 18% /home
/dev/sda6 369M 11M 340M 3% /tmp
/dev/sda3 6,5G 1,6G 4,6G 27% /usr
/dev/sda4 2,8G 642M 2,0G 25% /var
?
- A hozzászóláshoz be kell jelentkezni
1) az mdadm egeszen regota ugyanugy mukodik
2) az md-k ugy valtoznak, ahogy te szeretned, te adod meg, hogy melyik eszkoz melyik legyen.
Egyre figyelj, a /boot/efi es a / csak olyan raid tagja lehet, ami --metadata=0.90 hogy felismerheto legyen RAID nelkul is (ez foleg az EFI-s particional fontos, amit majdnem tisztan a BIOS kezel, ami valszinuleg nincs felkeszitve szoftveres RAID kezelesere.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Köszönöm a leírást! :) Király vagy. Ugyan csak a tesztelés rész volt számomra a lényeg, a tömböket még az Ubi szerver telepítésekor hoztam létre, de a HDD cserét sikeresen megcsináltam.
Össze akarok szedni pár okosságot és kinyomtatni, a szerverem mellé. Ez köztük lesz. ;)
---
Útirány.hu
- A hozzászóláshoz be kell jelentkezni
sub
- A hozzászóláshoz be kell jelentkezni