Kamis, 07 Agustus 2014

Kerusakan master boot record atau tabel partisi

Kerusakan master boot record atau tabel partisi

Hard disk terdiri atas MBR (Master Boot Record), tabel partisi lalu diikuti oleh partisi-partisi sejumlah yang dibuat oleh user. Kerusakan pada MBR dan/atau tabel partisi bisa menyebabkan sistem operasi tidak bisa di-boot atau satu atau lebih partisi terlihat seperti hilang. Hal ini hanya “kelihatannya” karena sebenarnya par­tisi dan data di dalamnya masih ada. Penyebab kerusakan MBR bisa bermacam-macam. Misalnya, saat Anda meng-­install Windows setelah Anda meng-ins­tall Linux, sehingga sistem Windows saja yang bisa di-boot. Contoh lainnya  bisa juga saat Anda melakukan suatu kecerobohan saat menjalankan perintah:

# dd if=/dev/zero of=/dev/sda bs=1 count=512
Perintah di atas akan melakukan penulisan angka 0 (nol) sebanyak 512 byte mulai dari sektor pertama hard disk kita. Ini adalah lokasi tempat MBR dan tabel partisi diletakkan. Secara visual, pesan kesalahan yang mungkin muncul di layar monitor akibat permasalahan semacam ini adalah sebagai berikut.

FATAL: No bootable device

Untuk mengatasi masalah tersebut, masukkan CD System Rescue ke drive CD/DVD. Tekan [Enter] saat muncul layar pembuka agar System Rescue bisa memulai proses booting seperti layaknya sistem Linux pada umumnya. Begitu tampil prompt, bersiaplah memulai proses pe­nyelamatan. Pertama, kita jalankan program Testdisk untuk mengembalikan tabel partisi. Ketik pada prompt: (catatan: prompt pada System Rescue CD menggunakan tanda “%”)
root@sysresccd /root % testdisk
Akan nampak tiga pilihan, yaitu Crea­te, Append, dan No Log. Opsi Create dipilih untuk menciptakan file log baru. File ini sebenarnya berisi catatan prosedur-prosedur yang dilaksanakan selama proses recovery partisi.
Pada layar berikutnya akan ditanyakan nama device hard disk yang akan dianalisis. Dalam hal ini, penulis memilih /dev/sda karena targetnya adalah hard disk primary master. Apabila Anda memiliki lebih dari satu hard disk, pastikan terlebih dahulu nama hard disk yang dipilih benar yang ingin di-recover. Hal ini bisa dicek sebelumnya di shell misalnya dengan pe­rintah:
Siap digunakan saat booting Beberapa fungsi dalam System Rescue CD bisa langsung Anda jalankan, saat sistem Linux masuk salah satu tahapan booting.% dmesg| grep -C 2 ‘[sh]d[a-z]’

scsi 0:0:0:0: Direct-Access     ATA      QEMU HARDDISK
0.10 PQ: 0 ANSI: 5
sd 0:0:0:0: [sda] 10485760 512-byte logical blocks: (5.36
GB/5.00 GiB)
Dari output di atas jelas terlihat bahwa ada satu hard disk  (sda) berukuran 5 GB. Setelah Anda memilih nama device dan menekan [Enter], layar berikutnya akan menampilkan informasi jumlah sektor yang terdeteksi. Pilih Continue karena layar ini sekadar informasi saja.
Pada layar berikutnya, Anda akan ditanyakan mengenai jenis format partisi. Kebanyakan dari kita menggunakan sistem IBM PC Compatible. Jadi, pilihlah Intel. Namun, jika Anda menggunakan format lain, misalnya hard disk Mac, Anda perlu memilih tipe yang sesuai. Tekan [Enter] untuk menuju layar berikutnya.
Sekarang Anda bisa memulai tahap recovery sebenarnya. Pilih Analyse lalu tekan [Enter]. Layar berikutnya akan menampilkan daftar partisi yang ditemukan. Tentu saja saat ini masih kosong. Pilih menu Quick Search dan tekan [Enter] sekali lagi. Akan muncul dialog yang menanyakan apakah Anda akan memperbaiki partisi yang dibuat oleh Windows Vista. Apabila memang ada partisi yang ada buat lewat Vista, jawab  dengan Y. Untuk ilustrasi, penulis memilih N karena dianggap semua partisi dibuat oleh sistem Linux.
Proses deteksi akan dimulai dan hasilnya adalah seperti berikut ini.
Disk /dev/sda – 5368 MB / 5120 MiB – CHS 652  255  63
Partition  Start End Size in sectors
* Linux           0        1    1  318 254 63 5124672 [/]
Linux Swap      319      0    1  383 254 63 1044225
Linux LVM       384      0    1  416 254 63 530145
Linux LVM       417      1    1  449 254 63 530082
Linux LVM       450      1    1  482 254 63 530082
Luangkan waktu beberapa saat untuk mengecek temuan Testdisk. Pilih tiap-tiap partisi yang ditemukan, lalu lihat keterang­an di baris terbawah layar. Di sana akan terlihat format file system (jika sudah diformat) beserta ukurannya. Contohnya, untuk partisi pertama didapatkan informasi:
EXT3 Large file Sparse superblock, 2623 MB / 2502 MiB
Masih kurang yakin? Anda bisa melihat file-file apa saja yang tersimpan di dalam partisi tersebut. Sorot partisi yang diinginkan dan tekan [P]. Kini Anda bisa melihat struktur file dan direktori di da­lamnya. Setelah selesai, tekan [q] dan Anda akan kembali ke layar daftar partisi.
Setelah Anda yakin semua partisi telah ditemukan, tekan [Enter]. Layar berikutnya akan menanyakan apakah akan dilakukan pencarian lebih teliti lewat Deep­er Search atau langsung menuliskan daftar partisi ke hard disk. Di sini diasumsikan penulisan langsung dilakukan ke hard disk, sehingga dipilih Write. Pada layar konfirmasi, tekan [Y] dan penulisan akan dilakukan. Akan muncul pesan yang meminta Anda melakukan reboot komputer. Hal ini perlu dilakukan untuk memastikan BIOS dan sistem operasi Anda membaca tabel partisi yang tadi baru saja ditulis.
Kembali ke menu utama, pilih Quit. Lakukan reboot lewat prompt shell de­ngan mengetik:
% reboot
Keluarkan CD System Rescue dan biarkan hard disk di-booting. Bagaimana hasilnya? Mungkin saja tidak tampak tampilan menu bootloader, seperti GRUB atau LILO, dan sistem masih belum bisa di-boot. Jadi, apa yang kurang?
Program Testdisk hanya mengembalikan tabel partisi yang terhapus, tetapi tidak mengembalikan instalasi bootloader seperti sedia kala. Untuk itu, kali ini kita perlu menuliskan program loader kembali ke MBR. Ada beberapa cara, dan kali ini akan dibahas salah satunya yang relatif praktis. Booting kembali System Rescue Linux dan prompt awal, ketik perintah grubdisk. Akan muncul pilihan awal kurang lebih seperti ini:
Boot Ubuntu Gnu/Linux
AUTO MAGIC BOOT
Pilih Auto Magic Boot. Program akan mendeteksi daftar sistem operasi yang bisa di-booting. Pada kasus penulis, layar akan menampilkan:
Boot Ubuntu Gnu/Linux
AUTO MAGIC BOOT
Linux 2.6.18-128.el5
Linux 2.6.18-128.el5 (single-user mode)
Other OS
Ini sudah sesuai dengan entry yang penulis harapkan. Hasil yang Anda dapatkan tentunya bisa berbeda. Di sini, penulis memilih Linux 2.6.18-128.el5 dan menekan [Enter] untuk masuk ke sistem Cent­OS. Apabila tidak ada masalah, booting akan berjalan normal sampai dengan muncul layar login, entah itu di mode teks atau grafis. Masukkan user dan password dari root. Dari prompt, ketik:
Gagal booting Pesan seperti ini bisa menandakan bahwa Master Boot Record mengalami kerusakan.# grub-install /dev/hda
Apabila tidak ada masalah, akan tampil lapor­an seperti berikut ini.
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.
map. Check if this is correct or not. If any of the lines
is incorrect, fix it and re-run the script ‘grub-install’.
# this device map was generated by anaconda
(hd0)     /dev/hda
Kali ini digunakan nama device hda karena CentOS mendeteksi hard disk dengan nama berbeda. Untuk mengetahuinya, gunakan perintah dmesg sama seperti saat kita menentukan nama hard disk yang menjadi target operasi Testdisk.
Sekarang Anda tinggal me-reboot komputer sekali lagi. Pastikan booting dilakukan dari hard disk…dan sim salabim!. Menu GRUB telah kembali dan Linux kembali bisa dibooting dengan normal!
Kegagalan mount akibat kerusakan superblock
Biasanya kegagalan seperti ini tidak terlalu jelas. Misalnya, Anda melakukan operasi mount, bisa muncul output seperti berikut ini.
# mount -v /dev/sda1 /mnt/disk
mount: you didn’t specify a filesystem type for /dev/
sda1
I will try all types mentioned in /etc/filesystems or
/proc/filesystems
Trying #
Trying #vfat
Trying fuseblk
mount: you must specify the filesystem type
Atau jika partisi yang dimaksud adalah partisi yang ditempati oleh file-file bootloader (GRUB dalam hal ini), bisa jadi Anda mendapat pesan saat booting seperti berikut ini.
Booting from Hard Disk…
GRUB Loading stage1.5.
GRUB loading, please wait…
Error 17
Ini adalah tanda-tanda adanya ketidakberesan pada struktur filesystem. Kenapa ini bisa terjadi? Superblock adalah sektor-sektor pada suatu disk yang berisi informasi mengenai suatu partisi, misalnya kapan terakhir kali partisi di-mount, jumlah inode, keterangan lokasi data, dan seterusnya. Superblock juga merupakan area yang dibaca oleh program “mount” saat proses mounting. Jadi, jika terjadi corrupt pada sebagian atau keseluruhan isi superblock, bisa ditebak proses mount akan gagal. Alhasil, keseluruhan filesystem gagal diakses. Untuk meyakinkan akar masalah, boot System Rescue CD dan lakukan pe­ngecekan dengan perintah fsck:
% fsck -p /dev/sda1
fsck from util-linux-ng 2.16.1
fsck.ext2: Bad magic number in super-block while trying
to open /dev/sda1
/dev/sda1:
The superblock could not be read or does not describe
a correct ext2
filesystem.  If the device is valid and it really contains
an ext2
filesystem (and not swap or ufs or something else), then
the superblock
is corrupt, and you might try running e2fsck with an
alternate superblock:
e2fsck -b 8193 <device>
Adanya pesan di atas membuktikan bahwa ada suatu masalah di superblock. Jalankan ulang perintah fsck seperti berikut untuk mencoba membenahinya:
% fsck.ext3 -b 8193 /dev/sda1
e2fsck 1.41.9 (22-Aug-2009)
fsck.ext3: Bad magic number in super-block while trying
to open /dev/sda1
Gagal lagi! Penyebabnya sangat dimungkinkan karena kita salah memberikan posisi superblock cadangan lewat parameter -b. Sebagai catatan, file system seperti ext3 menyimpan beberapa superblock cadangan pada posisi sektor-sektor tertentu. Sekarang tugas kita adalah mencoba mencarinya.
% mkfs.ext3 -j -n /dev/sda1
mke2fs 1.41.9 (22-Aug-2009)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
160320 inodes, 640584 blocks
32029 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=658505728
20 block groups
32768 blocks per group, 32768 fragments per group
8016 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Opsi -n mengatur agar perintah mkfs melakukan simulasi, jika seandainya terjadi operasi format yang sebenarnya. De­ngan demikian, Anda tidak perlu khawatir data akan hilang (tentu saja, jangan lupa menuliskan opsi -n). Angka yang dicetak tebal adalah posisi sektor yang kita cari. Kita lakukan sekali lagi fsck:
% fsck.ext3 -b 32768 -p /dev/sda1
Opsi -p dipakai agar fsck melakukan perbaikan secara otomatis tanpa banyak menanyakan konfirmasi ke user. Akan muncul rentetan output semacam ini:
/: Inode 546969, i_blocks is 576, should be 568.  FIXED.
/: Inode 546971, i_blocks is 1280, should be 1272.
FIXED.
/: Inode 546974, i_blocks is 1792, should be 1784
.  FIXED.
Dan kemungkinan diakhiri dengan:
/: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
(i.e., without -a or -p options)
Kita ulangi sekali lagi perintah fsck, tetapi tanpa parameter apapun:
% fsck /dev/sda1
Jika Anda menghadapi banyak pertanyaan yang menuntut Anda mengetik y (setuju), Anda bisa mempercepat proses dengan menekan [Ctrl]+[C] untuk menghentikan proses cek. Lalu, gu­nakan opsi -y pada perintah fsck agar semua pertanyaan langsung disertakan dengan ‘y’.
Recover tabel partisi dengan testdisk Partisi hard disk hilang? Program Testdisk mungkin dapat menemukannya (menyelamatkannya) kembali.

Recovery data pada bad sector

Hard disk yang sudah berumur atau memiliki cacat dari pabrik, lambat laun akan memiliki bad sector (sektor rusak). Secara singkat, bad sector bisa diibaratkan lubang pada jalan raya. Hal ini mengakibatkan penyimpanan data menjadi tidak sempurna atau kadang data menjadi tidak bisa diakses sama sekali. Dalam ke­adaan ini, Anda punya beberapa alternatif tindakan, tetapi biasanya yang paling banyak disarankan adalah melakukan penduplikasian data ke hard disk berbeda atau media penyimpanan lain secepatnya.
Mengapa demikian? Ada dua alasan:
->Apabila kita menyalin ke disk yang sama (sekalipun beda partisi), dikhawatirkan akan muncul bad sector juga cepat atau lambat. Dengan kata lain, hard disk yang memiliki suatu bad sector dianggap potensial untuk memiliki kasus serupa di sektor yang lain.
->Tidak ada jaminan bahwa proses perbaikan bad sector akan berjalan 100% tanpa kesalahan. Bisa saja selama perbaikan, data justru menjadi makin tidak terselamatkan. Dengan begitu, Anda bisa saja kehilangan data lebih banyak.
Penulis menyarankan untuk menyiapkan hard disk baru dengan ruang kosong minimal sama dengan besarnya partisi yang akan diselamatkan datanya. Pasang hard disk ini pada sambungan kabel IDE atau SATA yang kosong, atau bisa juga diset sebagai slave. Usahakan melakukan pe­masangan komponen komputer dengan meminimalkan listrik statis, misalnya dengan menggunakan gelang antilistrik statis.
Setelah hard disk kedua terpasang, boot System Rescue Linux hingga prompt muncul. Kita anggap di sini partisi yang bermasalah adalah /dev/sda1, sementara backup dilakukan pada /dev/sdb1 yang kita mount sebagai /mnt/backup. Program yang akan kita pakai adalah perintah ddrescue seperti berikut ini.
% mount /dev/sdb1 /mnt/backup
% ddrescue -S -d /dev/sda1 /mnt/backup/backup.img
Press Ctrl-C to interrupt
rescued:     2623 MB,  errsize:       0 B,  current rate
:   29491 kB/s
ipos:     2623 MB,   errors:       0,    average rate:
14557 kB/s
opos:     2623 MB,     time from last successful read:
0 s
Finished
Di sini digunakan dua opsi:
-S untuk menghasilkan sparse file, yaitu suatu file yang memiliki “lubang”. Dengan cara ini, ukuran file sebenarnya bisa lebih kecil dari ukuran partisi yang diselamatkan karena data ditulis hanya sebesar data yang diselamatkan.
-d untuk melakukan pembacaan secara direct access. Apa maksudnya? Pembacaan data akan dilakukan dengan mengabaikan beberapa mekanisme tertentu di filesystem, khususnya caching. Hasilnya pembacaan relatif selesai lebih cepat dan data yang dibaca bisa digaransi langsung berasal dari fisik disk.
Hasilnya adalah suatu file image yang berisi data-data Anda. Ini bisa dibuktikan dari perintah file:
% file /mnt/backup/backup.img
/mnt/backup/backup.img: Linux rev 1.0 ext3 filesystem
data (large files)
Tipe filesystem tentunya akan sesuai dengan format yang Anda pakai, jadi bisa saja ini berupa reiserfs, XFS, FAT32 dan seterusnya. File ini lalu bisa Anda mount untuk mengakses data-data di dalamnya:
% mkdir /mnt/test
% mount -o loop /mnt/backup/backup.img /mnt/test
Mungkin tidak semua file bisa terbaca dengan baik di dalam direktori /mnt/test. Ini adalah risiko, tetapi ini lebih baik daripada data tidak bisa dibaca sama sekali.
Terakhir, kita coba perbaiki disk kita yang berisi bad sector:
% fsck -cc -k /dev/sda1
Pengecekan pada dasarnya dilakukan de­ngan melakukan proses baca tulis (opsi -cc) tanpa merusak data yang ada. Opsi -k akan mengatur perintah fsck melakukan update daftar bad sector (jika ada) di meta­data file system. Hal ini akan mencegah penulisan data di masa depan pada sektor yang sama. Namun, jika bad sektor sudah sedemikian banyaknya, disarankan untuk tidak lagi memakai disk tersebut.

Tidak ada komentar:

Posting Komentar