FreeBSD 8.1 Stable on ZFS (v15)

상당히 안정성도 좋고 괜찮은 것 같다.
FreeBSD sysinstall 는 zfs 설치 지원 하지 않는다.
(PCBSD 는 지원한다)
Fixit 메뉴의 DVD/cdrom Live 직접 설치.

빠르고 간편하게 설치하려면
http://mfsbsd.vx.sk/
# zfsinstall -d /dev/ad0 -t /cdrom/8.1-RELEASE-amd64.tar.xz -s 4G
한줄로 설치 끝남.


1. 디스크 설정

파티션 종류는 GPT
# gpart show 

=>          34       209715133  ad0  GPT   (100G)
              34                  128     1  freebsd-boot (64K)
            162       209715005     2  freebsd-zfs  (100G)

# gpart create -s gpt ad0
# gpart add -b 34 -s 128 -t freebsd-boot ad0
# gpart add -b 162 -s 209715005 -t freebsd-zfs ad0
(swap 는 파일로 대처, 혹 필요시 -t freebsd-swap)

# gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad0
(파티션 종류에 따라서 bootcode 변경)

# kldload /mnt2/boot/kernel/opensolaris.ko
# kldload /mnt2/boot/kernel/zfs.ko
# mkdir /boot/zfs
# zpool create rpool ad0p2
(rpool 은 설정할 Pool 이름, 필요에 따라 mirror raidz raidz2 ex: # zpool create raidz ad0p2 ad1p1 ad2p1 ad3p1, ZFS 버전별 차이 http://docs.sun.com/app/docs/doc/819-5461/appendixa-1?a=view)

# zpool set bootfs=rpool rpool

2.   pool 설정

# zfs set checksum=fletcher4
# zfs create rpool/tmp ; chmod 1777 rpool/tmp
# zfs create rpool/
# zfs create rpool/usr
# zfs create rpool/var
# zfs create rpool/home
(나머지 상세 설정은 시스템 설치완료후에)

3.   OS 설치

# cd /dist/8* 
(8x live cd라는 하에)
# export DESTDIR=/rpool
# for dir in base catpages dict doc games info lib32 manpages ports; \
do (cd $dir ; ./install.sh) ; done
# cd src ; ./install.sh all
# ../kernels ; ./install.sh generic
# cd /rpool/boot ; cp -Rlp GENERIC/* /rpool/boot/kernel/
# zfs set readonly=on rpool/var/empty

4.   OS 설정

# chroot /rpool
# cat >> /etc/rc.conf
zfs_enable="YES"
hostname="localhost"
ifconfig_bge0="DHCP"
(Ctrl+D)
#
# cat >> /etc/rc.conf
zfs_enable="YES"
hostname="localhost"
ifconfig_bge0="inet 192.168.0.2 netmask 255.255.255.0"
defaultrouter="192.168.0.1"
(Ctrl+D)
#
(bge0 = 이더넷 이름)
# cat >> /boot/loader
zfs_load="YES"
vfs.root.mountfrom="zfs:rpool"
vm.kmem_size="512M"
vm.kmem_size_max="512M"
(Ctrl+D)
#
# echo 'LOADER_ZFS_SUPPORT="YES"' > /etc/src.conf
# mount -t devfs devfs /dev ; export DESTDIR=""
# cd /sys/boot/
# make obj ; make depend ; make ; cd i386/loader ; make install
# passwd
# tzsetup
# cd /etc/mail/ ; make aliases
# touch /etc/fstab
(swap 설정은 설치 후)
# umount /dev ; exit
# cp /boot/zfs/zpool.cache /rpool/boot/zfs/
# export LD_LIBRARY_PATH=/mnt2/lib
# zfs umount -a
# zfs set mountpoint=legacy rpool
# zfs set mountpoint=/usr rpool/usr
# zfs set mountpoint=/var rpool/var
# zfs set mountpoint=/tmp rpool/tmp
# exit
(sysinstall 종료, 재부팅)

5.   OS 부팅

# cat >> make.conf
SUP_UPDATE="YES"
SUP="/usr/bin/csup"
SUPFLAGS="-g -L 2"
SUPHOST="cvsup.kr.freebsd.org"
SUPFILE=/usr/share/examples/cvsup/stable-supfile
PORTSSUPFILE=/usr/share/examples/cvsup/ports-supfile
(Ctrl+D)
# cd /usr/src ; make buildkernel ; make buildworld
# make installkernel ; make installworld
(buildkernel 이 한 16~17분 걸렸음. /usr/obj 엔 무 옵션)
# reboot

6. ZFS Upgrade

8.1 Stable 엔 ZFS V 15 가 적용되어있다.(8.1R 은 V 14)
# zpool upgrade -a
# zfs upgrade -a
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ad0
# zpool upgrade && zfs upgrade
or
# zpool get version rpool && zfs get version
(버전 확인)
# zfs list
NAME                       USED  AVAIL  REFER  MOUNTPOINT
rpool                      20.5G   163G  14.6G  legacy
rpool/compat                204M   163G   204M  /compat
rpool/home                   20K   163G    20K  /home
rpool/tmp                    33K   163G    33K  /tmp
rpool/usr                  5.66G   163G  2.96G  /usr
rpool/usr/obj              1.84G   163G  1.84G  /usr/obj
rpool/usr/ports             577M   163G   230M  /usr/ports
rpool/usr/ports/distfiles   347M   163G   347M  /usr/ports/distfiles
rpool/usr/ports/packages     20K   163G    20K  /usr/ports/packages
rpool/usr/src               304M   163G   304M  /usr/src
rpool/var                  56.0M   163G  2.43M  /var
rpool/var/crash            21.5K   163G  21.5K  /var/crash
rpool/var/db               53.1M   163G  37.4M  /var/db
rpool/var/db/pkg           15.7M   163G  15.7M  /var/db/pkg
rpool/var/empty              20K   163G    20K  /var/empty
rpool/var/log               171K   163G   171K  /var/log
rpool/var/mail               23K   163G    23K  /var/mail
rpool/var/run                79K   163G    79K  /var/run
rpool/var/tmp               166K   163G   166K  /var/tmp

7. Benchmark

환경
CPU: Intel Pentium D 940 , Dual Core 3 Ghz
RAM: 2G
HDD: 200G EIDE (UDMA 100)
부팅후 console 에서 바로 함

Test 1.
Program: bonnie++

Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
localhost        4G    52  74 41827  15 27235  11   147  74 61908  10  88.6   1
Latency               264ms    5410ms    2937ms   66636us     945ms    1823ms
Version  1.96       ------Sequential Create------ --------Random Create--------
localhost           -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 12043  66 +++++ +++ 12001  73 12147  71 +++++ +++ 12039  73
Latency             24418us     134us     208us   49483us      64us     174us
1.96,1.96,localhost,1,1286716219,4G,,52,74,41827,15,27235,11,147,74,61908,10,88.6,1,16,,,,,12043,66,+++++,+++,12001,73,12147,71,+++++,+++,12039,73,264ms,5410ms,2937ms,66636us,945ms,1823ms,24418us,134us,208us,49483us,64us,174us

Test 2.
Program: cp -R /usr/obj{,.test} with zpool iostat 1

               capacity     operations    bandwidth
pool         used     avail    read   write   read  write
----------  -----  -----  -----  -----  -----  -----
rpool        20.5G   165G     44     41  5.32M  4.63M
rpool        20.5G   165G    442    173  8.27M  12.2M
rpool        20.6G   165G    702     96  7.75M  5.03M
rpool        20.6G   165G    804      0  13.7M      0
rpool        20.6G   165G    241      0  18.9M      0
rpool        20.6G   165G    199      0  14.7M      0
rpool        20.6G   165G    467      0  14.5M      0
rpool        20.6G   165G    603      0  13.8M      0
rpool        20.6G   165G    381      0  14.6M      0
rpool        20.6G   165G    280      0  19.7M      0
rpool        20.6G   165G    137    185  9.95M  16.7M
rpool        20.6G   165G      0    405      0  46.0M
rpool        20.6G   165G      0    415      0  46.3M
rpool        20.7G   165G    111    183  6.58M  11.2M
rpool        20.7G   165G    353      0  35.5M      0
rpool        20.7G   165G    475      0  14.6M      0
rpool        20.7G   165G    398      0  19.1M  42.0K
rpool        20.7G   165G    601      0  19.3M      0
rpool        20.7G   165G    773      0  13.3M      0
rpool        20.7G   165G  1.21K      0  7.89M      0
rpool        20.7G   165G    717     52  10.9M  1.71M
rpool        20.9G   165G    136    295  1.61M  31.1M
rpool        20.9G   165G    365      0  1.31M      0
rpool        20.9G   165G    350      0  2.17M      0
rpool        20.9G   165G    361      0  1.72M      0
rpool        20.9G   165G    484      0  7.08M      0
rpool        20.9G   165G    557      0  13.2M      0
rpool        20.9G   165G    493      0  14.5M      0
rpool        20.9G   165G    517      0  10.1M      0
rpool        20.9G   165G    632      0  10.1M      0
rpool        20.9G   165G    482      0  7.35M      0
rpool        20.9G   165G    511      0  4.01M      0
rpool        20.9G   165G    528      0  4.19M      0
rpool        20.9G   165G    461      0  1.28M      0
rpool        20.9G   165G    522      0  2.54M      0
rpool        20.9G   165G    536      0  2.26M      0
rpool        20.9G   165G    620      0  3.31M      0
rpool        20.9G   165G    685      0  13.4M      0
rpool        20.9G   165G    988      0  9.64M      0
rpool        20.9G   165G    593    120  6.14M  12.0M
rpool        20.9G   165G      0    475      0  52.3M
rpool        20.9G   165G      0    486      0  53.9M
rpool        20.9G   165G     27    385  34.8K  47.6M
rpool        21.1G   165G    748     87  5.20M   275K
rpool        21.1G   165G    824      0  10.3M      0
rpool        21.1G   165G    894      0  10.8M      0
rpool        21.1G   165G    595      0  13.5M  3.00K
rpool        21.1G   165G    377      0  13.5M      0
rpool        21.1G   165G    638      0  8.55M      0
rpool        21.1G   165G     48    425  5.79M  42.5M
rpool        21.1G   165G     26    326  1.34M  23.3M
rpool        21.1G   165G    287      0  24.2M      0
rpool        21.1G   165G    278      0  19.1M      0
rpool        21.1G   165G    196    185  16.9M  17.5M
rpool        21.2G   165G      8    469   424K  42.9M
rpool        21.2G   165G    375      2  24.5M  3.00K
rpool        21.2G   165G    384      0  29.0M      0
rpool        21.2G   165G     35    457  4.40M  50.7M
rpool        21.3G   165G    132    156  11.5M  7.11M
rpool        21.3G   165G    236      0  21.6M      0
rpool        21.3G   165G    263      0  15.0M      0
rpool        21.3G   165G     73    406  6.46M  42.2M
rpool        21.3G   165G    179    177  7.66M  9.71M
rpool        21.3G   165G    296      0  27.4M      0
rpool        21.3G   165G    149    181  15.3M  13.1M
rpool        21.4G   165G     17    493  1.30M  35.9M
rpool        21.4G   165G    308      0  22.1M      0
rpool        21.4G   165G    280      0  22.7M      0
rpool        21.4G   165G      4    477   432K  45.2M
rpool        21.4G   165G    222     48  17.8M   130K
rpool        21.4G   165G    295      0  24.6M      0
rpool        21.5G   165G    137    241  13.2M  21.6M
rpool        21.5G   165G    125    272  14.4M  32.6M
rpool        21.5G   165G    270      0  20.9M      0
rpool        21.6G   164G     72    370  7.01M  31.4M
rpool        21.6G   164G    287      0  21.6M  3.00K
rpool        21.6G   164G    377      0  20.3M      0
rpool        21.6G   164G    334      0  20.9M      0
rpool        21.6G   164G    400      0  20.8M      0
rpool        21.6G   164G    288      0  21.6M      0
rpool        21.6G   164G    173    200  15.0M  14.9M
rpool        21.6G   164G      0    560      0  59.4M
rpool        21.7G   164G      8    499   450K  41.9M
rpool        21.7G   164G    262      3  24.3M     3K
rpool        21.7G   164G    284      0  19.9M      0
rpool        21.7G   164G    296      0  18.1M      0
rpool        21.7G   164G    298      0  20.8M      0
rpool        21.7G   164G    288      0  25.2M      0
rpool        21.7G   164G    125    271  12.0M  28.2M
rpool        21.9G   164G     86    386  6.82M  35.9M
rpool        21.9G   164G    318      0  19.6M      0
rpool        21.9G   164G    238      0  17.8M      0
rpool        21.9G   164G    350      0  39.5M      0
rpool        21.9G   164G    176      0  13.2M      0
rpool        21.9G   164G    143    104  11.5M  8.35M
rpool        21.9G   164G      0    513      0  54.8M
rpool        21.9G   164G      1    523  95.9K  53.1M
rpool        22.0G   164G    134     43  10.1M   125K
rpool        22.0G   164G    165      0  13.2M      0
rpool        22.0G   164G    284      0  30.7M      0
rpool        22.0G   164G    224    134  25.9M  11.9M
rpool        22.1G   164G     54    310  4.33M  30.1M
rpool        22.1G   164G    178      0  15.4M      0
rpool        22.1G   164G    320      0  21.1M      0
rpool        22.1G   164G    260    259  8.82M  24.5M
rpool        22.2G   164G     40    381  1.71M  30.5M
rpool        22.2G   164G    514      0  12.4M      0
rpool        22.2G   164G    597      0  4.58M      0
rpool        22.2G   164G    680      0  8.34M      0
rpool        22.2G   164G    548      0  12.8M      0
rpool        22.2G   164G    239    282  6.07M  30.0M
rpool        22.3G   164G    255    221  6.71M  13.5M
rpool        22.3G   164G    818      0  10.9M      0
rpool        22.3G   164G    780      0  9.07M      0
rpool        22.3G   164G    735      0  2.91M      0
rpool        22.3G   164G    740      0  4.51M      0
rpool        22.3G   164G    481    372  2.16M  33.1M
rpool        22.3G   164G    799     49  9.26M   121K
rpool        22.3G   164G    812      0  5.19M      0
rpool        22.3G   164G    739      0  6.60M      0
rpool        22.3G   164G    746      0  1.64M      0
rpool        22.3G   164G    717      0  4.20M      0
rpool        22.3G   164G    774      0  4.82M      0
rpool        22.3G   164G    877    158  5.27M  16.6M
rpool        22.3G   164G    303    302  3.24M  20.8M
rpool        22.3G   164G    776      0  10.4M      0
rpool        22.3G   164G  1.04K      0  9.06M      0
rpool        22.3G   164G    219    294  5.02M  26.6M
rpool        22.4G   164G     70     43   453K   114K

8. 설치 후기

compression 설정하고 시스템 설치하면 시간이 좀 걸린다.
이미 설치된 root pool 에는 raid 0 , raidz 설정이 안되고 mirror 만 설정됨
# zpool add rpool ad1p1
cannot add to 'rpool': root pool can not have multiple vdevs or seprate logs
# zpool attach rpool ad0p2 ad1p1
(mirror 구성)

from man page
 zpool attach [ -f ] pool device new_device
 Attaches new_device to an existing zpool device. The existing device cannot be part of a raidz configuration If device is not currently part of a mirrored configuration, device automatically transforms into a two-way mirror of device and new_device If device is part of a two-ay mirror, attaching new_device creates a three-way mirror, and so on In either case, new_device begins to resilver immediately.

차라리 root pool 은 usb 나 따로 작게(1~2G) 파티션 설정 하는 것이 편하겠다, 안정성도 괜찮고 전반적으로 매우 마음에 든다.
주로 Desktop 으로 사용하는터라 pkg_add -r gnome2 로 gnome2 설치후 compiz-fusion 로 멋지게 Desktop 설정~
오랜만에 다시 사용한 FreeBSD 인데 몇몇 변화가 보이는데 당장 관심(Multimedia) 가는 사항들

1. nvidia driver 가 amd64 지원.
2. cx88 지원 /usr/ports/multimedia/cx88/
3. webcam 지원 /usr/ports/multimedia/webcamd (v4l)
4. flash plugin /usr/ports/www/nspluginwrapper (무척 잘된다.)
이제 다시 Main Desktop 을 FreeBSD 로 사용해도 괜찮겠다.

ps.
오래전부터 생각했지만 ports 시스템도 변화가 필요해보인다 간단하게 pkg_add -r gnome2 해도 시간이 매우 오래 걸리는 이유중 패키지 하나 설치하고 다음설치할 패키지 받고, get && install && get && install  한번에 다 받으면서 다 받지 못한건 lock 등, ubuntu 를 Main Desktop 으로 사용하며 패키지 관리의 편함에 빠진듯

물론 새로 프로그램을 만드는 것 보단 기존의 것을 발전시키는 것이 맞긴 한데 그로인해 portupgrade 도 나왔었고 예전엔 누가 ports 를 리눅스에서도 사용하게 하는 방법도 있었는데 지금은 gentoo 의 portage, debian 의 apt 등 편리한게 많으니

reference:
http://en.wikipedia.org/wiki/ZFS
http://docs.sun.com/app/docs/doc/819-5461/appendixa-1?a=view
http://blog.sdnkorea.com/blog/731

Comments