FreeBSD Подготовка + ZFS + ISCSI

Если FreeBSD 9, сразу обновляемся

# freebsd-update fetch
# freebsd-update install

# freebsd-update upgrade -r 9.1-RELEASE
# freebsd-update install

# shutdown -r now
# freebsd-update install

———————————————————————————
———————————————————————————
pkg_add

Если pkg_add -r не работает:
setenv PACKAGESITE http://ftp6.ru.freebsd.org/pub/FreeBSD/ports/amd64/packages-9.1-release/Latest/

———————————————————————————
———————————————————————————

Если FreeBSD 9.1
Обновляем порты:
первый раз:
portsnap fetch && portsnap extract
для обновления после:
portsnap fetch && portsnap update

Если поломались базы то так:
rm -rf /var/db/portsnap
mkdir /var/db/portsnap
portsnap fetch extract

Ставим что нужно сразу:
Для обновлений исходников SVN
cd /usr/ports/devel/subversion
make install clean

для удобства утилита screen
cd /usr/ports/sysutils/screen
make install clean

cd /usr/ports/shells/bash
make install clean

cd /usr/ports/editors/vim-lite/
make install clean
———————————————————————————
———————————————————————————
SVN
Загружаем что нужно:

#svn checkout svn://svn.FreeBSD.org/doc/head /usr/doc
#svn checkout svn://svn.FreeBSD.org/ports/head /usr/ports
svn co svn://svn.freebsd.org/base/releng/9.1/ /usr/src

Для обновления в будущем:
#svn up /usr/doc
#svn up /usr/ports
svn up /usr/src
———————————————————————————
———————————————————————————
Ядро
Кнфиг ядра для 64 битных систем тут:
/usr/src/sys/amd64/conf
Собираем:
cd /usr/src/
rm -R /usr/obj/*
make clean && make clean
make -sj4 buildkernel KERNCONF=NGEN
Устанавливаем:
make installkernel KERNCONF=NGEN
init 6
———————————————————————————
———————————————————————————
Мир
cd /usr/src/
rm -R /usr/obj/*
make cleandir && make cleandir
make -sj4 buildworld

make installworld
mergemaster
reboot
cd /usr/src/
make delete-old
———————————————————————————
———————————————————————————
ZFS

/boot/loader.conf
vm.kmem_size="330M"
vm.kmem_size_max="330M"
vfs.zfs.arc_max="40M"
vfs.zfs.vdev.cache.size="5M"
echo 'zfs_enable="YES"' >> /etc/rc.conf
/etc/rc.d/zfs start

Так можно сделать если мало дисков, но чтобы избежать путаницы лучше метить диски с помощью GPT
zpool create storage raidz ada1 ada2 ada3

gpart destroy -F ada1
gpart destroy -F ada2
gpart destroy -F ada3

gpart create -s gpt ada1
gpart create -s gpt ada2
gpart create -s gpt ada3

gpart add -t freebsd-zfs -a 4k -l hdd01 ada1
gpart add -t freebsd-zfs -a 4k -l hdd02 ada2
gpart add -t freebsd-zfs -a 4k -l hdd03 ada3

Смотрим результат:
gpart show -l
=>       34  976773101  ada1  GPT  (465G)
         34          6        - free -  (3.0k)
         40  976773088     1  hdd01  (465G)
  976773128          7        - free -  (3.5k)

=>       34  976773101  ada2  GPT  (465G)
         34          6        - free -  (3.0k)
         40  976773088     1  hdd02  (465G)
  976773128          7        - free -  (3.5k)

=>       34  976773101  ada3  GPT  (465G)
         34          6        - free -  (3.0k)
         40  976773088     1  hdd03  (465G)
  976773128          7        - free -  (3.5k)

zpool create storage raidz /dev/gpt/hdd01 /dev/gpt/hdd02 /dev/gpt/hdd03
Смотрим результат

zpool status -v
 pool: storage
 state: ONLINE
  scan: none requested
config:

        NAME           STATE     READ WRITE CKSUM
        storage        ONLINE       0     0     0
          raidz1-0     ONLINE       0     0     0
            gpt/hdd01  ONLINE       0     0     0
            gpt/hdd02  ONLINE       0     0     0
            gpt/hdd03  ONLINE       0     0     0

Дальше создаем что нужно:

zfs create storage/data
zfs set compression=gzip storage/data
zfs create -V 880G storage/data/iscsi

Для работы с ZFS так же можно установить:

cd /usr/ports/sysutils/zfs-stats
make install clean; rehash
zfs-stats -a

Для мониторинга скорости:

zpool iostat -v storage 5 20
———————————————————————————
———————————————————————————
ISCSI Таргет

cd /usr/ports/net/istgt/
make install clean
echo 'istgt_enable="YES"' >> /etc/rc.conf

vi /usr/local/etc/istgt/auth.conf

[AuthGroup1]
        Comment "Auth Group1"
        Auth "iqn.2013.local.dim:itpc4508" "1234567890QWEasd"

Права доступа:

chmod 600 /usr/local/etc/istgt/auth.conf

vi /usr/local/etc/istgt/istgtcontrol.conf

[Global]
Timeout 30
AuthMethod CHAP
Auth "dim" "123QWEasd"
Host 172.28.74.91
Port 3261
TargetName "iqn.2013-04.local.dim:itpc4508"
Lun 0
Flags ro
Size auto

vi /usr/local/etc/istgt/istgt.conf

[Global]
NodeBase "iqn.2013-04.local.dim"
PidFile "/var/run/istgt.pid"
AuthFile "/usr/local/etc/istgt/auth.conf"
Timeout 30
NopInInterval 20
MaxR2T 32
MaxSessions 16
MaxConnections 8
FirstBurstLength 65536
MaxBurstLength 262144
MaxRecvDataSegmentLength 262144
MaxOutstandingR2T 16
DefaultTime2Wait 2
DefaultTime2Retain 60

[UnitControl]
AuthMethod None
Portal UC1 172.28.74.91:3261
Netmask 255.0.0.0

[PortalGroup1]
Portal DA1 172.28.74.91:3260

[InitiatorGroup1]
InitiatorName "ALL"
Netmask 172.28.74.0/24

[LogicalUnit1]
TargetName "itpc4508"
TargetAlias "ZFS itpc4508"
Mapping PortalGroup1 InitiatorGroup1
AuthMethod CHAP
AuthGroup AuthGroup1
UseDigest Auto
ReadOnly No
UnitType Disk
UnitOnline yes
BlockLength 512
QueueDepth 32
LUN0 Storage /dev/zvol/storage/data/iscsi auto

/usr/local/etc/rc.d/istgt restart

vi /etc/syslog.conf

local7.* /var/log/istgt.log

/etc/rc.d/syslogd restart

Запись опубликована в рубрике FreeBSD, ISCSI. Добавьте в закладки постоянную ссылку.