Mirror 2 Harddisk

Foto os

Sebuah server pengisian pulsa tiba-tiba berhenti bekerja dan terdengar suara pada harddisk, seperti ada yang mengetuk palu di sana. Ini merupakan kerusakan fisik pada harddisk yang kerap terjadi pada harddisk yang telah berumur, atau pada harddisk dengan jam terbang tinggi. Untuk mengantisipasi kehilangan data pada situasi tersebut, Anda memerlukan sebuah harddisk cadangan yang berfungsi sebagai cermin (mirror). Perubahan apapun yang terjadi pada harddisk pertama, akan dilakukan juga pada harddisk kedua.

Teknik berikut ini pernah diterapkan pada Ubuntu 8.10. Seharusnya bisa juga diterapkan pada distro berbasis Debian lainnya.

Secara garis besar yang akan dilakukan adalah:

  1. Boot dengan harddisk pertama.
  2. Konfigurasi harddisk kedua sebagai RAID.
  3. Boot dengan harddisk kedua.
  4. Konfigurasi harddisk pertama sebagai RAID.
  5. Simulasi penyelamatan.

Saat ini kita boot dengan harddisk pertama (sda). Karena itu kita akan memasang RAID terlebih dahulu di harddisk kedua (sdb) yang masih kosong. Pastikan tidak ada aktifitas transaksi selama pemasangan.

  1. Pasang harddisk kedua /dev/sdb, minimal seukuran harddisk utama /dev/sda.
  2. Pasang paketnya:
    # apt-get install mdadm
  3. Sesuaikan partisi /dev/sdb dengan /dev/sda, gunakan fdisk agar sektor awal dan akhir masing-masing partisi persis sama.
    Semua partisi /dev/sdb bertipe fd (Linux raid auto).
  4. Pastikan tidak ada jejak RAID di /dev/sdb:
    # mdadm --zero-superblock /dev/sdb1
    mdadm: Unrecognised md component device - /dev/sdb1
     
    # mdadm --zero-superblock /dev/sdb5
    mdadm: Unrecognised md component device - /dev/sdb5

    Abaikan bila ada pesan kesalahan seperti itu. Kemudian aktifkan partisi RAID:
    # mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
    # mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb5

    Lihat hasilnya:
    # cat /proc/mdstat
     
    Personalities : [raid1]                                                                          
    md1 : active raid1 sdb5[1]                                                                       
          9936064 blocks [2/1] [_U]                                                                  
     
    md0 : active raid1 sdb1[1]                                                                       
          234259712 blocks [2/1] [_U] 
  5. Buat filesystem:
    # mkfs.ext3 /dev/md0
    # mkswap /dev/md1
  6. Beritahukan daemon-nya:
    # cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.orig
    # mdadm --examine --scan >> /etc/mdadm/mdadm.conf
  7. Sesuaikan /etc/fstab:
    proc      /proc           proc    defaults                   0       0
    /dev/md0 /               ext3    defaults,errors=remount-ro 0       1
    /dev/md1  none            swap    sw                         0       0
    /dev/scd0 /media/cdrom0   udf,iso9660 user,noauto            0       0

    Sesuaikan juga /etc/mtab:
    /dev/md0 / ext3 rw,errors=remount-ro 0 0
    proc /proc proc rw,noexec,nosuid,nodev 0 0
    /sys /sys sysfs rw,noexec,nosuid,nodev 0 0
    varrun /var/run tmpfs rw,noexec,nosuid,nodev,mode=0755 0 0
    varlock /var/lock tmpfs rw,noexec,nosuid,nodev,mode=1777 0 0
    procbususb /proc/bus/usb usbfs rw 0 0
    udev /dev tmpfs rw,mode=0755 0 0
    devshm /dev/shm tmpfs rw 0 0
    devpts /dev/pts devpts rw,gid=5,mode=620 0 0
    lrm /lib/modules/2.6.24-16-generic/volatile tmpfs rw 0 0
  8. Sesuaikan /boot/grub/menu.lst menjadi:
    title           Ubuntu 8.04, kernel 2.6.24-16-generic RAID (hd1)
    root            (hd1,0)
    kernel          /boot/vmlinuz-2.6.24-16-generic root=/dev/md0 ro
    initrd          /boot/initrd.img-2.6.24-16-generic
    quiet
     
    title           Ubuntu 8.04, kernel 2.6.24-16-generic RAID (hd0)
    root            (hd0,0)
    kernel          /boot/vmlinuz-2.6.24-16-generic root=/dev/md0 ro
    initrd          /boot/initrd.img-2.6.24-16-generic
    quiet

    Lalu carilah tulisan kopt agar menjadi:

    # kopt=root=/dev/md0 ro

    Biarkan tanda # tetap di situ.

  9. Lalu perbaharui ramdisk:

    # update-initramfs -u

  10. Salin data sda ke sdb:
    # mkdir /mnt/md0
    # mount /dev/md0 /mnt/md0
    # cp -dpRx / /mnt/md0

    Lihat progress-nya di konsole lain:
    # watch df
  11. Pasang GRUB:
    # grub
     
    grub> root (hd0,0)
    grub> setup (hd0)
    grub> root (hd1,0)
    grub> setup (hd1)
    grub> quit
  12. Restart.
  13. Boot-lah dengan pilihan pertama (hd1), karena partisinya sudah RAID.

Mudah-mudahan boot berlangsung lancar agar kita bisa melanjutkan langkah berikutnya, yaitu pemasangan RAID pada harddisk pertama (sda).

  1. Ubah tipe semua partisi /dev/sda menjadi fd. Gunakan fdisk.
  2. Aktifkan:
    # mdadm --add /dev/md0 /dev/sda1
    # mdadm --add /dev/md1 /dev/sda5

    Pantau proses penyalinannya:
    # watch cat /proc/mdstat
     
    Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
    md1 : active raid1 sda5[2] sdb5[1]
          6072448 blocks [2/1] [_U]
            resync=DELAYED
     
    md0 : active raid1 sda1[2] sdb1[1]
          150215680 blocks [2/1] [_U]
          [=========>...........]  recovery = 49.1% (73821056/150215680) finish=21.1min speed=60328K/sec
     
    unused devices: <none>

    Tunggulah hingga selesai.
  3. Beritahukan daemon-nya:
    # cp /etc/mdadm/mdadm.conf.orig /etc/mdadm/mdadm.conf
    # mdadm --examine --scan >> /etc/mdadm/mdadm.conf
    

Sampai disini pemasangan mirror harddisk telah selesai. Sekarang restart, dan cobalah kedua pilihan boot itu, baik hd1 maupun hd0. Seharusnya keduanya sama saja.

Selanjutnya mari lakukan simulasi penyelamatan bila salah satu harddisk bermasalah, misalnya harddisk kedua hd1 alias sdb yang mengalami kerusakan.

  1. Boot dengan harddisk pertama (hd0).
  2. Hapus sdb dari RAID:
    # mdadm --manage /dev/md0 --fail /dev/sdb1
    # mdadm --manage /dev/md1 --fail /dev/sdb5
    # mdadm --manage /dev/md0 --remove /dev/sdb1
    # mdadm --manage /dev/md1 --remove /dev/sdb5
    
  3. Hapus semua partisi yang ada di /dev/sdb. Gunakan fdisk.
  4. Restart, dan gunakan hd0 untuk boot. Sampai di sini kita punya asumsi bahwa hd1 alias sdb adalah harddisk baru.
  5. Sesuaikan partisinya dengan sda sebagaimana langkah pemasangan RAID sebelumnya.
  6. Pastikan tidak ada jejak RAID di sdb:
    # mdadm --zero-superblock /dev/sdb1
    # mdadm --zero-superblock /dev/sdb5
    

    Daftarkan sebagai RAID:

    # mdadm --add /dev/md0 /dev/sdb1
    # mdadm --add /dev/md1 /dev/sdb5

    Perhatikan prosesnya:
    # watch cat /proc/mdstat

    Tunggulah hingga selesai.

  7. Pasang GRUB:
    # grub
     
    grub> root (hd0,0)
    grub> setup (hd0)
    grub> root (hd1,0)
    grub> setup (hd1)
    grub> quit

Penyelamatan selesai.

Mirror dua harddisk seperti ini disebut sebagai RAID 1.