01
Install ZFS pada FreeBSD-7.2
Filed Under (FreeBSD) by admin on 01-11-2009
Tagged Under : FreeBSD, Install ZFS, TUning ZFS, ZFS
Deskripsi
ZFS merupakan file sistem baru yang dikembangkan oleh SUN untuk Sistem Operasi Solaris, yang kemudian diimplementasikan pada FreeBSD. ZFS menawarkan banyak fitur yang mempermudahkan kerja seorang sistem administrator. Beberapa fitur yang ditawarkan tersebut antara lain :
· Fitur kloning
· Snapshot
· Self healing untuk data yang mengalami kerusakan/korupsi
· Dukungan kompresi
· Manajemen cache
· Kapasitas unlimited (secara teoritis) karena filesystem ini sudah 128 bit
· Open source
Instalasi ZFS pada FreeBSD
BSD belum mendukung ZFS sepenuhnya. Jadi perlu beberapa trik untuk menjalankannya. Kita juga tidak dapat langsung boot dari partisi ZFS.
Instalasi FreeBSD
· Boot melalui CD FreeBSD-Release-7.2
· Pilih negara dan Lokasi
· Pilih Custom Instalation
· Pilih partisi otomatis degan fdisk (satu slice, seluruh disk)
· Disklabel dengan pilihan
A: 2048MB UFS2 /
B: swap
D: sisa dari disk
Untuk membuat D kita harus masukkan mountpoint yang kita inginkan, baru kemudian menggunakan pilihan M untuk menghilangkan mountpoint nya. Hal ini untuk memastikan tidak akan dibuatkan file sistem pada partisi D tersebut.
· Pilih distribusi minimal
· Pilih media CD/DVD
Sistem akan menginstall root partisi pada partisi terkecil 2048MB UFS yang sudah kita buat di atas.
Membuat ZFS pool
· Setelah instalasi selesai, keluarkan CD dan reboot ke sistem baru FreeBSD tersebut.
· Boot ke partisi FreeBSD dan pilih menu “4″ untuk masuk ke single user mode.
· Tekan ENTER untuk menerima shell /bin/sh.
# mount -w /
· Sekarang membuat Disk pool dengan label D yang sudah kita siapkan tadi. Dalam contoh ini kita memiliki disk SATA di ad4.
# zpool create tank /dev/ad4s1d
# zfs set mountpoint=none tank
· Buat beberapa tambahan mountpoint umum
# zfs create tank/root
# zfs create tank/usr
# zfs create tank/var
# zfs create tank/tmp
· Sekarang mengatur pembagian mountpoint
# zfs set mountpoint=/tank tank/root
# zfs set mountpoint=/tank/usr tank/usr
# zfs set mountpoint=/tank/var tank/var
# zfs set mountpoint=/tank/tmp tank/tmp
· Kita lihat hasil dari yang kita kerjakan di atas,
# df –h
# zfs list
· Edit file /etc/ rc.conf dan aktifkan ZFS
# echo ‘zfs_enable = “YES”‘>>/etc/rc.conf
· Sekarang salin UFS bootable slice ke mountpoint zfs.
# find -x / | cpio -pmd /tank
(Anda dapat mengabaikan kesalahan apapun di sini bila Anda menemukannya)
Solusi masalah booting pada ZFS
FreeBSD tidak dapat boot langsung ke ZFS karena bootloader tidak tahu apa-apa tentang ZFS. Jadi kita sedikit menipu dengan meletakkan kernel ke /boot yang hidup di partisi UFS. Sistem ini akan berjalan sampai pada saat di mana ZFS dapat terpasang dan menjalankan sisa boot.
· Hapus /tank/boot hanya disalin dari UFS sistem
# rm -rf /tank/boot
· Sekarang buat direktori dimana partisi UFS kami akan terpasang. Hal ini akan berguna nantinya ketika kita ingin memperbarui isi dari slice yang menjalankan sistem. Kami juga harus memastikan bahwa ketika ZFS adalah booting atas dapat melihat UFS bootdir.
# mkdir /tank/bootdir
# cd /tank
# ln -s bootdir/boot boot
· Sekarang kita kirim yang loader di UFS slice memuat dan boot dari isi ZFS volume
# echo ‘zfs_load = “YES”‘>> /boot/loader.conf
# echo ‘vfs.root.mountfrom = “zfs:tank/root”‘>> /boot/loader.conf
· Edit /tank /etc/fstab sehingga UFS slice sudah terpasang di lokasi yang tepat pada saat boot melalui ZFS dengan menambahkan line berikut :
/dev/ad4s1a /bootdir ufs rw 1 1
· Ketika kita reboot dalam pada menit pertama, kita ingin ZFS tank untuk me-mount partisi /var, /usr, /tmp dan / dan bukan berada di dalam lokasi /tank seperti sekarang. Jadi kita mengatur mountpoints:
# zfs set MOUNTPOINT=/tmp tank/tmp
# zfs set MOUNTPOINT=/usr tank/usr
# zfs set MOUNTPOINT=/var tank/var
· Set mount point untuk root ‘warisan’ ZFS sehingga tidak akan mencoba untuk me-mount secara otomatis.Seharusnya sudah telah terpasang oleh loader:
# cd /
# zfs set MOUNTPOINT=legacy tank/root
· Reboot dan login sebagai root. Jalankan perintah df -h dan zfs list dan Anda akan melihat semuanya.
# df -h
Filesystem Sized Used Avail Capacity Mounted on
tank/root 282G 454M 281G 0% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/ad4s1a 496M 317M 139M 69% /bootdir
tank/tmp 281G 1.1M 281G 0% /tmp
tank/usr 287G 5.7G 281G 2% /usr
tank/var 281G 76M 281G 0% /var
# zfs list
NAMe USED Avail Refer MOUNTPOINT
tank 6.27G 281G 454M none
tank/root 16.2M 51.3G 16.2M legacy
tank/tmp 1.10M 281G 1.10M /tmp
tank/usr 5.75G 281G 5.75G /usr
tank/var 75.5M 281G 75.5M /var
Semua instalasi dasar selesai. Sekarang kita dapat menginstal versi yang lebih lengkap tentang FreeBSD, install port sistem atau apapun yang biasa dilakukan.
Panduan tuning ZFS
Implementasi ZFS dalam FreeBSD masih eksperimental sehingga masih ada beberapa bug. ZFS pada FreeBSD mudah mengalami kekurangan memori yang dapat mengakibatkan crash kernel. Untuk mengatasi hal tersebut kita perlu melakukan tuning kernel, dengan memasukkan parameter-parameter kernel berikut pada /boot/loader.conf (pastikan juga anda memasukkannya di /bootdir/boot/loader.conf).
vm.kmem_size_max = “512M”
vm.kmem_size = “512M”
vfs.zfs.zil_disable = 1
Besar ukuran kmem_size dapat disesuaikan, namun jika terlalu besar (lebih dari 1500), dapat menyebabkan kernel panik juga. Tuning memori untuk penggunaan ZFS lebih merupakan sebuah seni daripada sebuah ilmu, namun ada beberapa tips berguna yang dapat dilihat pada link berikut :
http://wiki.freebsd.org/ZFSTuningGuide
Pemulihan bencana
Prosedur ini dapat kita gunakan, jika kita lupa melakukan tuning kernel sebelum mereboot komputer.
Sesudah kita melakukan prosedur di atas, tapi ternyata zfs gagal melakukan booting atau gagal berfungsi karena suatu hal, kita masih dapat melakukan booting ke sistem minimal hasil instalasi pertama yang kita lakukan di atas jika memang diperlukan. Untuk melakukannya kita lakukan prosedur berikut:
· Boot up
· Pilih # 6 (Escape pada saat Boot Loader) pada boot menu.
· Menonaktifkan modul zfs:
# unset vfs.root.mountfrom
# disable-modul zfs
· Menonaktifkan kmem_size
# unset vm.kmem_size
# unset vm.kmem_size_max
· Masuk ke mode single user dan boot
# set boot_single
# boot
· Login dan mengedit /boot /loader.conf seperlunya
# df –h
# zpool list
Kita dapat lihat bahwa sistem tidak mengaktifkan zfs drive atau poolnya. Tapi kita tidak perlu khawatir tidak dapat mengimport data yang ada pada partisi zfs.
· Kita jalankan perintah berikut :
# zpool impor -d /boot/zfs
Ini mengambil data zpool sehingga librarynya dapat menemukan dan menggunakan informasi yang diperlukan.
· Sekarang kita perlu mengimport pool dengan menggunakan alternatif root.
# zpool impor -f -R /tank tank
· Selanjutnya kita memastikan hasilnya.
# df –h
# zpool list
Beberapa Perintah Berguna
Melihat pool/partisi yang tersedia
# zfs list
Melihat status disk/pool
# zpool status
Mengganti mountpoint untuk menciptakan partisi
# zfs set MOUNTPOINT=/<mountpoint> <pool resources>
Pembatasan data
# zfs set quota = 10g testpool/testfs/dir1
(membatasi ruang logikal)
# Zfs set reservasi = 20g testpool/testfs/dir2
(mempersiapkan batas ruang logikal)
Menggunakan sebuah kernel lain (dalam boot loader mode)
# unload kernel
# Boot /boot/kernel.old/kernel
Referensi
https://www.ish.com.au/solutions/articles/freebsdzfs
http://fandigunawan.wordpress.com/2007/12/01/a-note-about-zfs-on-freebsd/
http://wiki.freebsd.org/ZFSTuningGuide
http://www.solarisinternals.com/wiki/index.php/ZFS_Evil_Tuning_Guide