Achmad Mardiansyah's Journal

Manage your knowledge by writing it

Archive for the ‘transaction model’ tag

Solaris ZFS, basic concepts

without comments

Saya jawab seadanya dulu yah, versi lengkap tentang Solaris ZFS sedang dibuat jadi artikel.

Q: Apa sih yang menyebabkan zfs dikatakan filesystem yang cepat?
A: ini cepat dalam hal apa? read ato write?
operasi read pada ZFS adalah lebih cepat:
– karena dia pake algoritma ARC yang bisa memprediksi data yang akan dibaca.
– karena dia pake COW (lihat penjelasan dibawah)
– pada pool standar, ZFS pake dynamic striping, jadi data yang ditulis akan disebar kebeberapa disks. Sehingga kalo membaca data yang diambil dari beberapa disks, maka hasilnya akan lebih cepat toh? maaf kalo jawabannya baru segini karena saya memang tidak masuk dalam team developer ZFS.
nah, kamu kan kliatannya tertarik tu… kenapa tidak gabung aza? sapa tau bisa jadi employee sun microsystem loh… gimana ngak keren coba? hehehe :-p

Q: Apa itu zpool?
A: zpool adalah pool storage yang dibuat pada ZFS file system. command yang dipakai adalah zpool

Q: Apa keterbatasan dari zfs ? (from wikipedia)
A: ZFS jelas punya limit:
– satu pool ZFS maksimum bisa nampung total data sebesar 128bit. sekitar 18 milyar milyar kali lebih besar dari 64bit filesystem yang ada sekarang. jika lebih dari itu, ZFS ngak bisa.
– maksimum 2^64 ZFS snapshot
– maksimum 2^48 entries dalam sebuah directory
– maksimum bisa membuat single file sebesar 16 EiB (baca: ExbiByte)
1 exbibyte = 260 bytes = 1,152,921,504,606,846,976 bytes = 1,024 pebibytes
– maksimum bisa memiliki file attribute sebesar 16 EiB
– maksimum bisa memiliki pool sebesar 256 ZiB (ZebiByte)
1 zebibyte = 270 bytes = 1,180,591,620,717,411,303,424 bytes = 1,024 exbibytes
– maksimum memiliki 2^56 attributes dalam tiap file
– maksimum memiliki 2^56 file dalam sebuah directory
– maksimum memiliki 2^64 buah devices dalam sebuah zpool
– maksimum memiliki 2^64 zpool salam sebuah system
– maksimum memiliki 2^64 filesystem dalam sebuah zpool

Q: Kenapa sih kok maksimumnya gede banget? kan ngak kepake semua.
A: Ini filesystem untuk masa depan. komputer kamu memang g perlu-perlu amat. Tapi google, yahoo, amazon, friendster, facebook, perlu toh? dimasa depan, storage akan menjadi bigger & bigger. silahkan buka lagi buku sejarahnya, dan analisis bagaimana storage menjadi berlipat2 dalam sebuah interval waktu. dari situ kamu bisa buat interpolasi toh?

Q: ZFS support quota?
A: ya iya lah… masa iya dong?
quota biasanya digunakan untuk membatasi space user toh? kan tinggal buat aja zfs FileSystem untuk user tertentu, trus kasih quota. simple toh? daripada jalanin command edquota?, blom lagi repot untuk edit fstab?

Q: apakah harddisk yang sudah masuk pool bisa di tarik lagi?
A: tergantung kasusnya. kalo masuk ke pool yang mirror, tentu saja bisa. kalo dimasukin ke pool biasa, tentu saja TIDAK bisa, karena kan udah masuk ke ke dynamic striping (RAID0)… untuk cari tahu kelebihan kekurangan RAID0, silahkan tanya google.

Q: ZFS bukan cluster?
A: ya bukan dong…

Q: apa itu Copy-on-write transactional model? di kuliah ga ada…
A: saya dulu pernah ngasih ceramah di ITT. kurikulum cuman ngasih sampe lutut. tapi kebutuhan industri adalah orang kemampuannya sampai ujung kepala. artinya memang ada gap yang jauh antara industri dan kuliah. makanya jangan cuman ngandelin kuliah, makanya sekarang banyak tempat kursus dimana2, makanya ada GLC, makanya ada OSUM, makanya ada OSUG. begituu… kamu beruntung pernah belajar sistem berkas, saya ngak pernah sama sekali. Tapi belum tentu yang ngambil kuliah tersebut bisa ngejelasin dari sisi teknis tentang Ext2, Ext3, UFS, ZFS. hehehe… :-p

ok, back again, ZFS memakai teknologi trasactional model, disebut juga copy-on-write (COW), sama seperti yang dipakai oleh database oracle, postgresql. mysql sangat terbatas kemampuan transactionnya. Inti dari COW adalah: all-or-nothing. yang di tekankan disini adalah teknologi write-nya.

Saya ambil contoh cara kerjanya:
1. ketika kamu buat sebuah file yang bener2 baru, maka akan disimpan dalam blok yang baru di harddisk toh? sampe sini jelas yah?

2. apa yang terjadi ketika file tersebut diedit?
Jika memakai FileSystem biasa, maka blok tersebut akan akan ditulis ulang. kalo filenya menjadi lebih besar, maka akan dicarikan blok lagi untuk nyimpan data yang lokasinya entah dimana, kadang jauh dari data yang lama.
Efek kalo pake FS tradisional:
– setelah beberapa lama, apalagi untuk server yang sibuk (banyak read & write) maka file akan terjadi fragmentasi.
– kemampuan read & write menurun
– kalo komputer mati mendadak, maka akan muncul problem, file INconsistency.
bisa aja sih, diakalin dengan journalling filesystem, tapi ngak membantu karena data yang ditulis udah ngak consistent (baru setengah ditulis, lampunya mati). ini adalah cara kerja FS tradisional.
nah, kalo pake ZFS, ZFS akan mencari blok yang baru untuk menyimpan file yang diedit tersebut. Supaya lebih cepat dalam read/write, ZFS punya algoritma buat nyari lokasi blok baru yang optimal. Blok yang lama tidak diganggu gugat. inilah yang disebut copy-on-write. jadi nulisnya ditempat yang baru (seperti kalo copy file toh?)
efek kalo pake ZFS:
– tidak perlu DEFRAG (emangnya jendela?)
– kemampuan I/O tetap stabil, malahan bisa jadi tambah cepat karena ZFS punya algoritma untuk memprediksi file mana saja yang akan di read.
– ni yang penting lagi: kalo komputer mati mendadak, NGAK perlu panik, NGAK perlu pake fsck. karena ZFS bakal pake blok yang lama toh? blok yang baru kan gagal ditulis karena mati lampu.
teknologi COW ini diambil dari teknologi database dan sukses diimplementasikan ke filesystem. i just only can say one word: AMAZING!!

3. setelah ZFS udah SUKSES nulis di tempat yang baru, maka barulah pointernya di update. jadi konsepnya adalah all-or-nothing. Nunggu keseluruhan file bener2 selesai & sukses ditulis, baru kemudian pointernya di update. Blok yang lama akan dianggap kosong, dan bisa ditulis untuk file yang lain. jika ada gangguan selama proses menulis, maka fallback, pake data yang lama. begichuuu…

Q: mysql, postgres, oracle bisa bekerja lebih baik di ZFS?
A: ya iya laah… FS-nya bagus, DB-nya juga jadi bagus dunk?

ini adalah sebagian kecil bahasan tentang ZFS, nanti akan diceritakan lebih lanjut kok. Sabar yah, skr lagi banyak kerjaan ne…

versi pendek dari URL: http://bit.ly/eHFIU7

Untuk lebih dekat dengan ZFS dan batuk2nya: disini, disini, disini