نصب ZFS روی یک سرور لینوکس CentOS 6

فایل سیستم ZFS برای لینوکس به صورت source code وجود دارد که شما می‌توانید به صورت ماژول کرنل آن را اجرا کنید. از یک سری ابزارها مانند ZFS، Zpool و غیره استفاده می‌کنند.

این آزمون بر روی یک CentOS6 انجام شده:

$ cat /etc/redhat-release
CentOS release 6.5 (Final)

نصب متعلقات:

$ yum install gcc kernel-devel zlib-devel libuuid-devel libblkid-devel libselinux-devel parted lsscsi rpm-build

هنگامی که نصب تمام شد ، شما می توانید پکیج های ZFS و SPL را از لینک زیر اصلاح و یا ایجاد کنید:

http://zfsonlinux.org/download.html

پس از دانلود مراحل زیر را انجام دهید:

$ tar xfvz spl-0.6.0-rc14.tar.gz
$ cd spl-0.6.*

$ ./configure
$ make rpm

$ rpm -Uvh *.x86_64.rpm

Preparing... ########################################### [100%]
۱:spl-modules-devel ########################################### [ 33%]
۲:spl-modules ########################################### [ 67%]
۳:spl ########################################### [100%]

$ wget http://github.com/downloads/zfsonlinux/zfs/zfs-0.6.0-rc6.tar.gz

$ tar xfvz zfs-0.6.0-rc14.tar.gz
$ cd zfs-0.6.*

$ ./configure
$ make rpm

$ rpm -Uvh *.x86_64.rpm

Preparing... ########################################### [100%]
۱:zfs-test ########################################### [ 17%]
۲:zfs-modules-devel ########################################### [ 33%]
۳:zfs-modules ########################################### [ 50%]
۴:zfs-dracut ########################################### [ 67%]
۵:zfs-devel ########################################### [ 83%]
۶:zfs ########################################### [100%]

اگر همه مراحل به درستی انجام شود ماژول‌های کرنل ZFS و موارد کاربردی userland نصب می‌شوند. برای استفاده از ZFS نیاز است که بار اول ماژول‌های کرنل modprobe بارگذاری نمائید.

$ modprobe zfs

برای بررسی ماژول اجرایی شما می‌توانید مسیر /var/log/messages را دنبال کنید:

Feb 12 17:54:27 centos6 kernel: SPL: Loaded module v0.6.0, using hostid 0x00000000
Feb 12 17:54:27 centos6 kernel: zunicode: module license 'CDDL' taints kernel.
Feb 12 17:54:27 centos6 kernel: Disabling lock debugging due to kernel taint
Feb 12 17:54:27 centos6 kernel: ZFS: Loaded module v0.6.0, ZFS pool version 28, ZFS filesystem version 5

و lsmode را به منظور بررسی آن‌ها اجرا کنید:

$ lsmod | grep -i zfs

zfs 1038053 0
zcommon 42478 1 zfs
znvpair 47487 2 zfs,zcommon
zavl 6925 1 zfs
zunicode 323120 1 zfs
spl 210887 5 zfs,zcommon,znvpair,zavl,zunicode

برای ایجاد اولین pool ما می‌توانیم با استفاده از کاربردهای zpool، این مورد را ایجاد کنیم:

$ zpool create mysqlpool mirror sdb sdc

در مثال بالا یک mirrored pool در دستگاه‌های sdb و sdc ایجاد شده است. ما می‌توانیم این طرح را در خروجی `zpool status` ببینیم:

$ zpool status -v

pool: mysqlpool
state: ONLINE
scan: none requested
config:

NAME STATE READ WRITE CKSUM
mysqlpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0

errors: No known data errors

pool version 28h به ما این امکان را می‌دهد که atime updates را غیرفعال و compression و deduplication را فعال کنیم.

$ zfs set compression=on mysqlpool
$ zfs set dedup=on mysqlpool
$ zfs set atime=off mysqlpool

برای یک آزمون واقعی یکی از MySQL slaves را متوقف کردیم و در مسیر /var/lib/mysql یک pool را بارگذاری کردیم. اطلاعات قبلی روی سیستم فایل ZFS را همگام‌سازی کردیم و بعد از آن MySQL به خوبی شروع به کار کرد.

$ dd if=/dev/zero of=/dev/sdb
$ zpool scrub mysqlpool

اجازه می‌دهیم که این دستور چند دقیقه اجرا شود بعد از اتمام آن `zpool status` به منظور بررسی اسکراب ثابت همه موارد اجرا شود:

$ zpool status -v
pool: mysqlpool
state: ONLINE
status: One or more devices has experienced an unrecoverable error. An
attempt was made to correct the error. Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
using 'zpool clear' or replace the device with 'zpool replace'.
see: http://www.sun.com/msg/ZFS-8000-9P
scan: scrub repaired 966K in 0h0m with 0 errors on Sun Feb 12 18:54:51 2012
config:

NAME STATE READ WRITE CKSUM
mysqlpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdb ONLINE 0 0 175
sdc ONLINE 0 0 0