Jangan Lupa Menggosok ZFS

24 Aug 2012

FreeBSD LogoTulisan ini dibuat berdasarkan pengalaman pribadi karena seperti biasa, baru pertama kali menggunakan filesystem ZFS di FreeNAS. Untunglah FreeNAS menyediakan fasilitas untuk mengirimkan log-log sistem secara berkala ke akun email administrator (root). Biasanya sih akun email root tersebut saya alias ke akun email eksternal sehingga dapat saya lihat kapan saja dan dari mana saja. Tidak perlu login ke servernya langsung.

Nah, kebetulan saat itu saya mendapati sebuah notifikasi kesalahan pada filesystem ZFS pada salah satu server. Server tersebut menggunakan filesystem ZFS dengan 2 volume. Pada log tersebut, kesalahan filesystem didapati terjadi pada volume ke-2. Volume kedua ini memang saya gunakan untuk menyimpan lumbung FOSS yang saya cerminkan. Nah dengan seringnya proses sinkronisasi menggunakan rsync ke cermin-cermin FOSS lainnya, data pada volume ini seringkali berubah. Kemungkinan besar saat proses rsync terputus di tengah jalan, filesystem gagal memperbarui jurnalnya. Akhirnya dikirimkanlah peringatan akan kesalahan tersebut.

Lalu saya ingat bahwa setiap filesystem memiliki mekanisme untuk menjaga integritas data dan jurnal filesystem. Begitu juga dengan ZFS, dengan menggunakan fasilitas SCRUB. Defaultnya FreeNAS akan melakukan penggosokan filesystem sebulan sekali, tetapi pada kasus-kasus tertentu sebaiknya dilakukan seminggu sekali. Tinggal kita pilih waktu-waktu yang pas, saat akses ke server paling minimal. Jangan kuatir soal matinya akses ke server, proses penggosokan akan dilakukan secara online alias dalam keadaan hidup dan server tetap dapat diakses secara normal. Tetapi karena saat penggosokan dijalankan data-data dibandingkan dengan jurnalnya, maka kita pilih waktu yang aksesnya paling minimal.

Untuk memperbaiki kesalahan pada ZFS, saya tinggal menjalankan penggosokan secara manual:

# zpool scrub VOLUME

Kemudian saya cek apakah kesalahan tersebut telah berhasil diperbaiki:

# zpool status VOLUME

Jika tidak ada kesalahan lagi, log kesalahan ZFS dapat kita bersihkan:

# zpool clear VOLUME

Agar proses pemeliharaan dengan cara penggosokan ini dapat berjalan secara reguler, kita tinggal memasukkan perintah scrub ke crontab. Misalnya seperti ini:

5   2   *   *   1 /bin/sh /sbin/zpool scrub VOLUME

Selamat mencoba