Panduan ini menunjukkan cara menghapus hard drive yang gagal dari larik RAID1 Linux (RAID perangkat lunak), dan cara menambahkan hard disk baru ke larik RAID1 tanpa kehilangan data. Saya akan menggunakan gdisk untuk menyalin skema partisi, sehingga akan bekerja dengan harddisk besar dengan GPT (GUID Partition Table) juga.
1 Catatan Awal
Dalam contoh ini saya memiliki dua hard drive, /dev/sda dan /dev/sdb, dengan partisi /dev/sda1 dan /dev/sda2 serta /dev/sdb1 dan /dev/sdb2.
/dev/sda1 dan /dev/sdb1 membentuk larik RAID1 /dev/md0.
/dev/sda2 dan /dev/sdb2 membentuk larik RAID1 /dev/md1.
/dev/sda1 + /dev/sdb1 = /dev/md0
/dev/sda2 + /dev/sdb2 = /dev/md1
/dev/sdb telah gagal, dan kami ingin menggantinya.
2 Bagaimana Cara Mengetahui Jika Hard Disk Gagal?
Jika disk gagal, Anda mungkin akan menemukan banyak pesan kesalahan di file log, mis. /var/log/messages atau /var/log/syslog.
Anda juga dapat menjalankan
cat /proc/mdstat
dan sebagai ganti string [UU] Anda akan melihat [U_] jika Anda memiliki larik RAID1 yang terdegradasi.
3 Menghapus Disk yang Gagal
Untuk menghapus /dev/sdb, kami akan menandai /dev/sdb1 dan /dev/sdb2 sebagai gagal dan menghapusnya dari array RAID masing-masing (/dev/md0 dan /dev/md1).
Pertama kita tandai /dev/sdb1 sebagai gagal:
mdadm --manage /dev/md0 --fail /dev/sdb1
Keluaran dari
cat /proc/mdstat
akan terlihat seperti ini:
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[2](F)
24418688 blocks [2/1] [U_]
md1 : active raid1 sda2[0] sdb2[1]
24418688 blocks [2/2] [UU]
unused devices: <none>
Kemudian kami menghapus /dev/sdb1 dari /dev/md0:
mdadm --manage /dev/md0 --remove /dev/sdb1
Outputnya harus seperti ini:
server1:~# mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1
Dan
cat /proc/mdstat
harus menunjukkan ini:
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
24418688 blocks [2/1] [U_]
md1 : active raid1 sda2[0] sdb2[1]
24418688 blocks [2/2] [UU]
unused devices: <none>
Sekarang kita melakukan langkah yang sama lagi untuk /dev/sdb2 (yang merupakan bagian dari /dev/md1):
mdadm --manage /dev/md1 --fail /dev/sdb2
cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
24418688 blocks [2/1] [U_]
md1 : active raid1 sda2[0] sdb2[2](F)
24418688 blocks [2/1] [U_]
unused devices: <none>
mdadm --manage /dev/md1 --remove /dev/sdb2
server1:~# mdadm --manage /dev/md1 --remove /dev/sdb2
mdadm: hot removed /dev/sdb2
cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
24418688 blocks [2/1] [U_]
md1 : active raid1 sda2[0]
24418688 blocks [2/1] [U_]
unused devices: <none>
Kemudian matikan sistem:
shutdown -h now
dan ganti hard drive /dev/sdb lama dengan yang baru (harus memiliki ukuran setidaknya sama dengan yang lama - jika hanya beberapa MB lebih kecil dari yang lama, maka membangun kembali array akan gagal).
4 Menambahkan Hard Disk Baru
Setelah Anda mengubah hard disk /dev/sdb, boot sistem.
Hal pertama yang harus kita lakukan sekarang adalah membuat partisi yang sama persis seperti pada /dev/sda. Kita dapat melakukannya dengan perintah sgdisk dari paket gdisk. Jika Anda belum menginstal gdisk, jalankan perintah ini untuk menginstalnya di Debian dan Ubuntu:
apt-get install gdisk
Untuk distribusi Linux berbasis RedHat seperti CentOS gunakan:
yum install gdisk
dan untuk penggunaan OpenSuSE:
yast install gdisk
Langkah selanjutnya adalah opsional tetapi direkomendasikan. Untuk memastikan bahwa Anda memiliki cadangan skema partisi, Anda dapat menggunakan sgdisk untuk menulis skema partisi kedua disk ke dalam file. Saya akan menyimpan cadangan di folder /root.
sgdisk --backup=/root/sda.partitiontable /dev/sda
sgdisk --backup=/root/sdb.partitiontable /dev/sdb
Jika terjadi kegagalan, Anda dapat memulihkan tabel partisi dengan opsi --load-backup dari perintah sgdisk.
Sekarang salin skema partisi dari /dev/sda ke /dev/sdb run:
sgdisk -R /dev/sdb /dev/sda
setelah itu, Anda harus mengacak GUID pada hard disk baru untuk memastikan bahwa mereka unik
sgdisk -G /dev/sdb
Anda dapat menjalankan
sgdisk -p /dev/sda
sgdisk -p /dev/sdb
untuk memeriksa apakah kedua hard drive memiliki partisi yang sama sekarang.
Selanjutnya kita tambahkan /dev/sdb1 ke /dev/md0 dan /dev/sdb2 ke /dev/md1:
mdadm --manage /dev/md0 --add /dev/sdb1
server1:~# mdadm --manage /dev/md0 --add /dev/sdb1
mdadm: re-added /dev/sdb1
mdadm --manage /dev/md1 --add /dev/sdb2
server1:~# mdadm --manage /dev/md1 --add /dev/sdb2
mdadm: re-added /dev/sdb2
Sekarang kedua aray (/dev/md0 dan /dev/md1) akan disinkronkan. Jalankan
cat /proc/mdstat
untuk melihat kapan selesai.
Selama sinkronisasi, output akan terlihat seperti ini:
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
24418688 blocks [2/1] [U_]
[=>...................] recovery = 9.9% (2423168/24418688) finish=2.8min speed=127535K/sec
md1 : active raid1 sda2[0] sdb2[1]
24418688 blocks [2/1] [U_]
[=>...................] recovery = 6.4% (1572096/24418688) finish=1.9min speed=196512K/sec
unused devices: <none>
Ketika sinkronisasi selesai, output akan terlihat seperti ini:
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
24418688 blocks [2/2] [UU]
md1 : active raid1 sda2[0] sdb2[1]
24418688 blocks [2/2] [UU]
unused devices: <none>
Itu dia, Anda telah berhasil mengganti /dev/sdb!