Tag Archives

7 Articles
Pasang ZFS Terbaru pada Ubuntu Xenial 16.04

Pasang ZFS Terbaru pada Ubuntu Xenial 16.04

Ubuntu Xenial secara baku memasang ZFS. Sayangnya, saya sering pindah-pindah sistem operasi sehingga versi ZFS yang dimiliki oleh Ubuntu Xenial tidak memadai. Ada fitur yang tidak kompatibel dengan versi ZFS Ubuntu.

Untungnya, perkakas ZFS yang sudah ada di Xenial sudah mumpuni. Yang perlu diperbaiki hanya versi kernelnya. Jadi, itulah yang hendak kita lakukan: memasang kernel ZFS terbaru pada Ubuntu Xenial sehingga fitur-fitur terbaru didukung.

Saya belum tahu efeknya, tetapi mohon berhati-hati bila menggunakan perkakas berbeda dengan kernel. Kalau saya, saya punya cadangan. Lagipula, saya biasa melakukan ini dari CD Pemasangan KDE Neon, distro GNU/Linux berdasarkan Ubuntu Xenial.

Mohon berhati-hati.  Saya tidak bertanggung jawab atas risiko yang Anda lakukan.

Teknis Setelah Mukadimah

Untuk kernel dari Ubuntu, hapus kernel ZFS yang sudah ada:

rm -rf /lib/modules/4.4.0-24-generic/kernel/zfs/

Pasang ketergantungan:

apt -y install build-essential autoconf libtool gawk alien fakeroot linux-headers-$(uname -r)
apt -y install zlib1g-dev uuid-dev libattr1-dev libblkid-dev libselinux-dev libudev-dev
apt -y install parted lsscsi ksh
apt -y install autoconf git libdevmapper-dev

Unduh SPL:

git clone https://github.com/zfsonlinux/spl && cd spl

Buat:

./autogen
./configure --prefix=/usr --with-config=kernel
make -j$(nproc)
sudo make install

Unduh ZFS:

cd ..
git clone https://github.com/zfsonlinux/zfs && cd zfs

Buat:

./autogen.sh
./configure --prefix=/usr --with-config=kernel
make -j$(nproc)
sudo make install

Selesai.

Pasang ZFS GIT di Ubuntu 16.04 Xenial

Pasang ZFS GIT di Ubuntu 16.04 Xenial

Set:

export KERNEL_TARGET_VERSION=`uname -r`

Cuma memastikan versi yang lama tidak ada:

rm -rf /lib/modules/4.4.0-24-generic/kernel/zfs/

Pasang ketergantungan:

apt -y install build-essential autoconf libtool gawk alien fakeroot linux-headers-$KERNEL_TARGET_VERSION
apt -y install zlib1g-dev uuid-dev libattr1-dev libblkid-dev libselinux-dev libudev-dev
apt -y install parted lsscsi ksh
apt -y install autoconf git libdevmapper-dev

INI IMPLEMENTASI YANG RUSAK UNTUK XENIAL. SAYA TIDAK MENGHAPUS KARENA UNTUK KEPERLUAN RISET DI VERSI OS YANG LAIN. MOHON IKUTI CARA DI TULISAN INI.

 

Bacaan Lebih Lanjut

Catatan Pribadi: Pemasangan ZFS Pada Ubuntu 16.04 Xenial

Catatan Pribadi: Pemasangan ZFS Pada Ubuntu 16.04 Xenial

Versi kernel disesuaikan dengan kebutuhan, namun untuk kesederhanaan anggap saja versi yang sama dengan kernel yang sedang berjalan.

export KERNEL_TARGET_VERSION=`uname -r`

Pasang hal-hal yang dibutuhkan sesuai panduan pada ZFSOnLinux. Saya menambahkan GIT dan GNU Autoconf karena hendak memasang versi GIT.

sudo apt-get install build-essential gawk alien fakeroot linux-headers-$KERNEL_TARGET_VERSION
sudo apt-get install zlib1g-dev uuid-dev libattr1-dev libblkid-dev libselinux-dev libudev-dev
sudo apt-get install parted lsscsi ksh
sudo apt-get install git autoconf

Setelah ini, mari bangun komponen-komponen ZFS, yakni: SPL dan ZFS itu sendiri.

Memasang SPL

Unduh:

git clone https://github.com/zfsonlinux/spl && cd spl

Sebenarnya tidak perlu dengan –with-linux. Sebagai pengingat saja kalau misalnya mau memasang untuk kernel versi lainnya. Misalnya, ada versi kernel terbaru dan sebelum masuk dengan kernel tersebut, kita pasang terlebih dahulu modul kernel. Jalankan skrip konfigurasi untuk mendapatkan skrip configure yang lazim dipakai untuk mengompilasi. Biasanya kalau unduh dari SCM (CVS, SVN, Mercurial, GIT, dan sebagainya), skrip tersebut belum ada. Lalu, lakukan stanza yang seperti biasanya.

./autogen.sh
./configure --prefix=/usr --disable-static --with-gnu-ld --with-linux=/usr/src/linux-headers-$KERNEL_TARGET_VERSION --with-linux-obj=/usr/src/linux-headers-$KERNEL_TARGET_VERSION --libexecdir=/usr/lib/zfs-linux --bindir=/bin --sbindir=/sbin --localstatedir=/var --runstatedir=/run --sysconfdir=/etc
make -j$(nproc)
sudo make install

Tentu saja, biasakan untuk mengompilasi dengan pengguna biasa. Baru setelah mau dipasang, dieskalasi jadi administrator.

Memasang ZFS

Unduh:

cd .. && git clone https://github.com/zfsonlinux/zfs && cd zfs

Lakukan empat stanza standar.

./autogen.sh
./configure --prefix=/usr --disable-static --with-gnu-ld --with-linux=/usr/src/linux-headers-$KERNEL_TARGET_VERSION --with-linux-obj=/usr/src/linux-headers-$KERNEL_TARGET_VERSION --with-systemdunitdir=/lib/systemd/system --with-systemdpresetdir=/lib/systemd/system-preset --with-systemdmodulesloaddir=/etc/modules-load.d --libexecdir=/usr/lib/zfs-linux --bindir=/bin --sbindir=/sbin --localstatedir=/var --runstatedir=/run --sysconfdir=/etc
make -j$(nproc)
sudo make install

Selesai. Bagaimana menjalankan ZFS sudah ada di tulisan yang lain.

WordPress JP: Installing MariaDB

WordPress JP: Installing MariaDB

THERE WAS A BUG IN THE SERVER THAT MADE ME LOST THIS POST. THIS IS THE RETRIEVED VERSION THAT I BACK UP.

It’s obvious that I speed write and take everything from guide. As I said before, writing this in Bahasa Indonesia kind of hard for me. So, I write this as I do in parallel.

Setup Filesystem

Disable ZFS file-level prefetch as in the guide:

cat >> /etc/modprobe.d/zfs.conf << .
options zfs zfs_prefetch_disable=1
.

That would be last on the next reboot, but for now disable:

echo 1 | sudo tee /sys/module/zfs/parameters/zfs_prefetch_disable

Create the dataset and the optimizations:

zfs create -o mountpoint=/var/lib/mysql rpool/MARIADB
zfs set primarycache=metadata rpool/MARIADB
zfs set recordsize=16k rpool/MARIADB

It is optimized to use cache for metadata only if we are going to use INNODB. Its chunk is 16k, so we set it also in ZFS. In the guide we are told that MariaDB log is a 128k chunk — default chunk in ZFS.

Remember that ZFSOnLinux Bug early on? Yeah, we should regenerate Ramdisk everytime we’ve done something to /etc/zfs/zpool.cache. To be honest, I don’t know if any of the operation we did earlier warrant such action. But, just do that for precaution.

update-initramfs -d -k `uname -r`
update-initramfs -c -k `uname -r`

And now, we go with installing MariaDB server.

Installing Database Server

According to MariaDB Repository configuration page, let’s set MariaDB:

cat >> /etc/apt/sources.list.d/mariadb.list << .
# MariaDB 10.1 repository list - created 2016-05-03 08:05 UTC
# http://mariadb.org/mariadb/repositories/
deb [arch=amd64,i386] http://kartolo.sby.datautama.net.id/mariadb/repo/10.1/debian jessie main
deb-src http://kartolo.sby.datautama.net.id/mariadb/repo/10.1/debian jessie main
.

Import its key and update our list:

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
sudo apt-get update

Install MariaDB server:

sudo apt-get install mariadb-server

Disable MariaDB server double buffer by add a line (mine, vanilla at line 142) with:

skip-innodb_doublewrite

And restart MariaDB server:

sudo systemctl restart mysql

From this onward, we are ready to install WordPress, NGINX and such.

Bacaan Lebih Lanjut

WordPress JP: Installing LAMP Stack with ZFS

WordPress JP: Installing LAMP Stack with ZFS

A REVISION WAS LOST! PLEASE TAKE A LOOK AT THE BOTTOM PAGE FOR GRUB SETTING BEFORE REBOOT.

I’m in fast writing mode as this is probably won’t intended to be understood by most people. I’m writing in this blog as I moving forward installing. To keep writing  and translating from my tacit into Bahasa Indonesia is kind of laboring. Perhaps, if you want, I would reiterate what I do here with better Bahasa Indonesia. But, now, let’s live speed writing.

Preparations

I’ve got Ubuntu 14.04 Live USB on my arsenal. Boot it up and setup some trivial like IP, DNS and stuff. I modify APT sources.list to match my nearest server.

deb http://kambing.ui.ac.id/ubuntu/ trusty main restricted
deb http://kambing.ui.ac.id/ubuntu/ trusty-security main restricted
deb http://kambing.ui.ac.id/ubuntu/ trusty-updates main restricted

Do the update and install SSH and VIM.

sudo -i
apt-get update
apt-get install ssh vim
passwd ubuntu

I need SSH because I can’t stand on server room too long. I’m not going to go on religious war on ViM vs Emacs. Last, change ubuntu user password.

And now the show live from my comfy SSH terminal laptop.

Install Ubuntu ZFS for Ubuntu Live Session

Straight from the doc.

sudo -i
apt-add-repository --yes ppa:zfs-native/stable
apt-get update
apt-get install debootstrap spl-dkms zfs-dkms ubuntu-zfs
modprobe zfs

You may wondering why I’m not upgrading first. Upgrading a temporary system is wasting time, especially one with GUI installed. Okay, now we get to the formatting.

Create A ZFS Pool

I have 2 SATA and 1 SSD. The best for server should be two SSDs. But, hey, beggar can’t choose.

ZFS config: 2 Disks + 1 SSD.

ZFS config: 2 Disks + 1 SSD.

Using GParted, I turned SSD into GPT with 3 partitions:

  • The first 200MB for /boot partition. Some twisted soul refused to use separated partition for /boot, well, good for you! I go with the conservative.
  • 8GB used for ZIL (ZFS Intent Log) drive. ZFS usually use 8GB max for journaling.
  • The rest used for ZFS Cache (ZARC).

But, hey, where is the EFI partition?

I’ve just recently found out that when you give your whole disk to ZFS, it would format the disk into two partitions. One big partition (sX1) for the use of ZFS and one 8MB partition (sdX9) for EFI partition (FAT). Yeah, ZFS automatically turn the disk into GPT partitioning scheme. After adding the two disks into a ZFS pool, the partitions will be like this:

sda: sda1 sda9, sdb: sdb1 sdb9

I’m doing mirroring for sda and sdb. I wish I have one more SSD. I would mirror two partitions on separated SSDs for ZIL. If you are luckier than me, do it! It is for safety measure. But, don’t mirror the cache because it’s wasting space.

Here’s the reality:

zpool  create -f -o ashift=12 -o altroot=/mnt -m none rpool mirror sda sdb log sdc2 cache sdc3

If I may have a dream with two SSDs:

zpool create -f -o ashift=12 -o altroot=/mnt -m none rpool mirror sda sdb log mirror sdc2 sdd2 cache sdc3 sdd3

Disable access time, enable relative time and enable LZ4 compression on tanks.

zfs set atime=off rpool
zfs set relatime=on rpool
zfs set compression=lz4 rpool

If nothing is wrong, we would got:

# zpool status rpool
  pool: rpool
 state: ONLINE
  scan: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    rpool       ONLINE       0     0     0
      mirror-0  ONLINE       0     0     0
        sda     ONLINE       0     0     0
        sdb     ONLINE       0     0     0
    logs
      sdc2      ONLINE       0     0     0
    cache
      sdc3      ONLINE       0     0     0

errors: No known data errors

Next, the partitioning. After this, I’m doing things from Crossroad’s tutorial with some tweaks.

Create Partition

As Debian configuration:

zfs create -o mountpoint=none rpool/ROOT
zfs create -o mountpoint=/ rpool/ROOT/debian-1
zpool set bootfs=rpool/ROOT/debian-1 rpool

What? Yes, I’m installing Debian not Ubuntu.

Last, export the pool we’ve created for later import. We do this so that the ZFS config would read from disk by ID instead of common UDEV naming. Believe me, you don’t want to use UDEV naming (sda, sdb, etc.) on ZFS.

zpool export rpool

Now, we can start installing Debian system.

Install Debian

Reimport ZFS pool and create a ZFS configuration cache file.

zpool import -d /dev/disk/by-id -R /mnt rpool
mkdir -p /mnt/etc/zfs
zpool set cachefile=/mnt/etc/zfs/zpool.cache rpool

REMEMBER: (Straight from the ZFS FAQ)

Run update-initramfs -c -k all after any /sbin/zpool command changes the /etc/zfs/zpool.cache file.

This is the reason of random failures from mounting ZFS root partition.

Install the system and mount all the basic system partitions.

debootstrap --arch=amd64 jessie /mnt http://kambing.ui.ac.id/debian/

And now, configure.

Configure Debian

Hostname.

echo gantenghost > /mnt/etc/hostname
sed -i -Ee "s#(127.+)#\1 gantenghost#" /mnt/etc/hosts

Create configuration for network interfaces. In the spirit of new configuration scheme, I put two files in /etc/network/interfaces.d/

# cat > /mnt/etc/network/interfaces.d/eth0 << .
auto eth0
iface eth0 inet dhcp
.

and

# cat > /mnt/etc/network/interfaces.d/lo << .
auto lo
iface lo inet loopback
.

Mount all the system filesystems.

for f in dev dev/pts proc sys; do mount -v --bind {,/mnt}/$f; done

Chroot there

chroot /mnt /bin/bash

In Debian Configuration

Locales.

apt-get install locales
sed -i -Ee 's/# (en_US.UTF+)/\1/' /etc/locale.gen
locale-gen

Timezone.

dpkg-reconfigure tzdata
apt-get install ntp
/etc/init.d/ntp stop

Remember when I said I’m going to put /boot on different partition? Now is the time.

echo "/dev/sdc1 /boot ext4 rw,relatime,stripe=4,data=ordered 0 0" >> /etc/fstab
mount /boot

Remember also what I said about using the ninth partition of the first disk? Now is the time.

apt-get install dosfstools
mkdir /boot/efi
mkfs.vfat /dev/sda9
echo "/dev/sda9 /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0" >> /etc/fstab
ap

Install ZFS packages with Debian style. ZFS needs lsb-release package.

cd /tmp
wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_6_all.deb
apt-get install lsb-release
dpkg -i zfsonlinux_6_all.deb
apt-get update && apt-get install linux-image-amd64 debian-zfs
apt-get install grub2-common grub-efi zfs-initramfs

Last, add a login.

apt-get install sudo vim ssh
adduser user
adduser user sudo

Setup GRUB For ZFS Boot

There is a bug in Debian’s GRUB that makes the system unbootable. First, let’s reconfigure GRUB Default command line:

sudo dpkg-reconfigure grub-efi-amd64

Change Linux default command line (second screen after Linux command line) from

quiet

to

root=ZFS=rpool/ROOT/debian-1 rpool=rpool bootfs=rpool/ROOT/debian-1 quiet

After this, update grub and we are done.

sudo update-grub

Booting to New System

After all preparations, unmount all the filesystems

umount /boot/efi/ /boot
exit
for f in dev/pts dev proc sys; do umount /mnt/$f; done
zfs umount -a
zfs export rpool

Reboot.

Final Thought

Well, you might find some faults here and there. If not, everything after this is straightforward.

Bacaan Lebih Lanjut

Adding device to ZFS on Linux
This Way Up

Adding device to ZFS on Linux

After cleaning up my motherboard, I reconnected all of my hard drive to it. ZFS couldn’t found all of the disks because I was carelessly put the disks back. Alas, lesson learnt! I have to figure out the right combo of my SATA disks.

The Internet suggested that I should have reattached the disks with export and import it back. Thus:

sudo zpool export vmdisk
sudo zfs import -d /dev/disk/by-id vmdisk

My friend, Idur, suggested that I should’ve use UUID like LVM did. But, on some bizzare cases a system could have redundant UUID. Going by safe bet, I use the Disk ID instead. I should have attached it like this:

sudo zpool vmdisk /dev/disk/by-id/ata-ST3250318AS_9VMXV6BN

Oh, well, YOLO! In fact, it was not I who cleaned the motherboard and the solution that I’ve chose was to reattach the disks into the right sequence — kind of solving a puzzle.

Perjalanan Membangun Sistem (ZFS)

Perjalanan Membangun Sistem (ZFS)

My PC, built with Gentoo

My PC, built with Gentoo inside.

Ada dua WDC Green 1 TB yang bertengger di atas. Dua itu adalah milik rekan saya. Dia sedang melakukan forensik dengan salah satunya. Katanya chipset AMD lebih cepat dan stabil dalam melakukan operasi salin daripada Intel. Meh, he’s the hardware guy, /me dunno…

Punya saya yang ada di salah satu tiga itu cuma sebesar 300 GB. Satu penyimpan di bawah monitor, SATA3 Cheetah 10K RPM 300 GB, saya pakai buat direktori pusat (root directory). Satu lagi di sebelahnya juga 250 GB.

Dari set tersebut, 2 penyimpan (300 GB dan 250 GB) saya ambil untuk iseng-iseng. Tadinya, saya menggunakan 250 GB saja. Tapi, seiring dengan perkembangan kepercayaan diri yang tinggi, saya mencopot penyimpan saya dari komputer kerja dan menaruh di komputer ini.

Sistemberkas

Kebutuhan saya akan sistemberkas kali ini adalah untuk memanajemennya dengan mudah. Kebutuhan yang paling utama adalah untuk virtualisasi. Saya butuh setiap VM untuk sebuah lingkungan pengembangan yang terisolasi.

Yang kedua, saya butuh untuk bisa secara daring memperbesar ruang penyimpan. Hal ini karena terkadang ketika saya membangun sistem dalam VM, ruang yang disediakan ternyata tidak cukup. Saya perlu menambah ruang dengan dinamis tanpa harus memindah-mindahkan data.

Saya menguji 3 sistem berkas: LVM, BTRFS, dan ZFS. Dari ketiganya, yang paling familiar adalah LVM. Namun, entah mengapa Device Mapper gagal membuatkan node di “/dev” untuk LVM. Saya jadi tidak bisa memasangnya.

Hal serupa juga terjadi dengan BTRFS. Ternyata BTRFS juga menggunakan menggunakan Device Mapper. Saya jadi tak bisa memasang BTRFS. Hal ini ditambah pula dengan kegamangan menggunakan BTRFS.

Kemudian, saya mencoba memasang ZFS. Memasangnya cukup sederhana di Gentoo. Karena faktor itu, saya jadinya suka ZFS. Mungkin tulisan ini lebih menjelaskan mengapa sederhana itu indah. Mengingat terminologi setiap sistem berkas berbeda, ZFS memiliki konsep yang sama dengan LVM tapi jauh lebih canggih.

Saya menggunakan versi GIT. Jangan salah, saya bukannya penyuka ketidakstabilan. Akan tetapi, menurut saya, teknologi terbaru seharusnya menggunakan kode yang terbaru. Selain lebih stabil, beberapa fitur lebih didukung. Apalagi, pengembangan ZFS di GNU/Linux sangat cepat.

Pasang ZFS

Aktifkan versi GIT.

echo "=sys-kernel/spl-9999 **" | sudo tee -a /etc/portage/package.accept_keywords 
echo "=sys-fs/zfs-9999 **" | sudo tee -a /etc/portage/package.accept_keywords

Saya lupa, bila ada sesuatu yang salah, aktifkan “–autowrite-unmask” pada emerge. Selain itu, pastikan bahwa header kernel merupakan versi yang terpasang dan aktif. Saya sempat gagal memasang SPL karena dia membutuhkan versi header yang valid.

Lanjut pasang:

sudo emerge -av zfs

Selanjutnya tentang jenis-jenis volum.

Sekilas mengenai ZFS

ZFS mengenal konsep pool yang kalau dalam LVM itu artinya volume group. Berhubung saya hanya memiliki 1 penyimpan saja (waktu itu). Saya hanya menambahkan:

sudo zfs create vmdisk /dev/sda

Sistemberkas utama saya ada di /dev/sdb1, jadi hati-hati kawan. Saya tidak menambahkan /dev/sdb1 ke dalam ZFS saya. Saya masih belum tahu cara memasangnya ZFS sebagai berkas utama.

Baru-baru ini, saya menemukan bahwa ternyata subvolum ZFS terdiri atas dua:

  1. Sebuah blok yang bisa diformat
  2. Sebuah direktori

Berikut bedanya.

Subvolum Blok

Saya membutuhkan sebuah partisi untuk BlankOn Rote. Sistem ini sangat stabil dan cocok untuk membangun OpenELEC. Saya selalu gagal bila melakukan di Gentoo. Hal ini karena Python yang digunakan sama. Entahlah, saya hanya percaya BlankOn untuk sistem stabil.

sudo zfs create -V 20g vmdisk/blankon

Dengan menyatakan ukuran, ZFS secara otomatis menganggap bahwa yang hendak dibuat adalah sebuah subvolum blok. Ia akan otomatis membuat node di /dev/vmdisk/blankon dan /dev/zvol/vmdisk/blankon.

Subvolum Direktori

Subvolum yang kedua adalah membuat sebuah direktori khusus (child node) di bawah sebuah pool (vmdisk). Beda dengan subvolum blok, ia tidak memiliki node di /dev, ia hanya sebuah direktori biasa. Namun, ia bisa diisolasi dengan memberikan kuota dan hak khusus kepada beberapa orang misalnya.

Cara buatnya:

sudo zfs create vmdisk/musik

Lalu buat kuota untuk direktori itu:

sudo zfs set quota=30g vmdisk/musik

Entah mengapa, subvolum ZFS jenis ini di Gentoo belum terintegrasi. Jadinya, saya harus memasang manual. Yah, saya juga belum eksplorasi lebih lanjut dengan ZFS. Yang keren dari cara memasang ZFS adalah kita bisa mengubah titik pemasangan subvolum ini:

sudo zfs set mountpoint=/home/jp/Musik vmdisk/musik

Lalu pasang:

sudo zfs mount vmdisk/musik

Seperti sistemberkas lainnya, biasanya direktori tersebut dimiliki oleh root. Saya harus mengganti menjadi milik pengguna biasa:

sudo chown jp:jp /home/jp/Musik

Tidak ada yang istimewa dengan perintah ini. Namun saat kita memasang ulang, direktori ini tetap menjadi milik pengguna biasa.

Hasil penyalinan yang saya lakukan dengan memindahkan berkas Musik ke dalam subvolum vmdisk/musik.

sent 13448261665 bytes  received 29625 bytes  92428118.83 bytes/sec
total size is 13446492269  speedup is 1.00

Lumayanlah.

Tambahan

Ada banyak properti yang bisa diubah untuk sebuah subvolum. Untuk tahu lebih lanjut apa saja properti yang bisa diubah-ubah:

sudo zfs get vmdisk/musik

Saya sendiri telah mengubah properti kuota sebelumnya. Saya juga mengaktifkan kompresi [pasti, dong., Vishera 8 inti sayang kalau tak digunakan] untuk sistem berkas saya:

sudo zfs set compression=lz4 vmdisk/musik

Kalau mau tahu tentang nilai sebuah properti, silakan:

sudo zfs get compression vmdisk/musik

Silakan eksplorasi sendiri. Oh, iya, ZFS menghabiskan banyak memori. Katanya, sih, yang ideal itu minimal memori 4GB.

Kesimpulan

ZFS memiliki zona-zona yang terisolasi dan hak akses yang terintegrasi. Cocok sekali digunakan untuk sistem yang memiliki banyak pengguna. Saya belum sempat membahas, namun ZFS bisa diekspor sebagai NFS, iSCSI, dan SMB. Tak heran banyak pusat data yang menggunakan ZFS sebagai sistemberkas dasar. Saya juga belum membahas mengenai format RAIDZ yang dimilikinya dan fasilitas membuat cuplikan secara daring. Maklum, ruang penyimpan saya belum banyak.