簡單的說,可以把 iscsi-target 的 extent 設成 ZFS 的 volume 就可以了…
不過我不知道如果 extent 的大小設超過 iscsi-target 會發生什麼事。
# zfs create -V 10g tank/iscsi
# cd /usr/ports/net/iscsi-target/ ; make install clean
# cat > /usr/local/etc/iscsi/targets
extent0 /dev/zvol/tank/iscsi 0 10GB
target0 rw extent0 10.0.0.0/24
^D
# /usr/local/etc/rc.d/iscsi_target forcestart
這樣就可以用別的 iSCSI initiator 來連接 iSCSI Target 了。
當系統小的時候,用 mysqldump 在離峰時間把資料 dump 出來還算可行。
雖然 Table 會暫時 Lock 住,但是因為小,所以速度可以很快,鎖住的時間可以不計。
但當系統大的時候就不能這樣做了。
好在已經有許多處理這個問題的經驗者。
解決這個問題的 Key Point 是「減少鎖 Table 的時間」,因此如果採用的 File System 或是 Volume Manager 有支援快速的 snapshot 功能的話,整個問題就簡單很多。步驟如以下所示:
- SLAVE STOP;
- FLUSH TABLE WITH READ LOCK;
- 作 snapshot
- UNLOCK TABLES;
- SLAVE START;
如果採用 LVM (Linux), ZFS (FreeBSD, Solaris) 或是 NetApp 的話,整個備份過程可以小於 5 秒鐘,因此可以做到每個小時備份一次而不影響正常使用。如果在 Slave 上做 snapshot 備份,則完全不會影響到寫入(READ LOCK時還是可以讀)。
Tested with: bonnie -s 2048, FreeBSD 7.0 UFS2 , Hardware RAID 5 (6 PATA 7200rpm 250G disks)
vfs.read_max=8 (default)
-------Sequential Output--------
-Per Char- –Block— -Rewrite–
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU
2048 25812 24.8 26483 6.6 13886 4.4
—Sequential Input– –Random–
-Per Char- –Block— –Seeks—
K/sec %CPU K/sec %CPU /sec %CPU
32162 32.5 33386 5.1 232.3 1.5
vfs.read_mas=128
-------Sequential Output--------
-Per Char- –Block— -Rewrite–
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU
2048 25380 24.3 25949 6.5 13956 4.3
—Sequential Input– –Random–
-Per Char- –Block— –Seeks—
K/sec %CPU K/sec %CPU /sec %CPU
41060 43.4 42839 8.3 224.9 1.4
vfs.read_max=256
-------Sequential Output--------
-Per Char- –Block— -Rewrite–
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU
2048 25714 24.3 25939 6.5 13966 4.3
—Sequential Input– –Random–
-Per Char- –Block— –Seeks—
K/sec %CPU K/sec %CPU /sec %CPU
41442 43.8 43737 8.6 225.2 1.5
結論:調整 vfs.read_max 對 random 存取的效能沒有太大幫助,而對 sequential read access 則有 25% 的效能增進。
在 FreeBSD 7.0 提供了一個新功能: gjournal。但在上面跑 UFS snapshot 會 kernel panic。(這個 RAID 有 5T)

而且發現在打 snapshot 的途中不能寫(這也就算了),還不能讀 Orz
所以 ufs snapshot 沒有用,要 snapshot 還是乖乖用 zfs 或是 NetApp 好了…
在 /boot/device.hints 設定 hint.scbus.0.at=”ahd0″ 即可。
Hint:
1. 預設的 Initiator NodeName 是 iqn.2005-01.il.ac.huji.cs:<hostname>
2. 依照 man 5 iscsi.conf 設定 /etc/iscsi.conf
3. util 是 iscontrol, kernel module 是 iscsi_initiator
剛剛 chenpc 說 webmail 不能登入,一試發現真的不能登入,而且 /var/log/maillog 沒有錯誤訊息。
一開始以為是憑證換掉造成 SSL failure,但是 chenpc 說他沒換。
本來打算裝個 ssl client 去試試看的,結果先跑了 sockstat | grep 993 出現:
daemon rpc.lockd 70353 6 tcp6 *:993 *:*
root rpc.lockd 70352 6 tcp6 *:993 *:*
root inetd 913 8 tcp4 *:993 *:*
真是令人絕望的 rpc.lockd …
解決辦法就是關掉 rpc.lockd,把 inetd.conf 裡面的 imap/pop3 加上 v6,然後再跑 rpc.lockd。這樣 rpc.lockd 就不會去聽 IPv6 的 Port 993 了。
(當然,也可以改 webmail 的設定檔,把 localhost 改成 127.0.0.1,強迫走 IPv4…)
據廖大消息,hinet 開放用戶使用 ipv6 tunnel broker,這裡把我在 bsd 上設定的步驟寫下:
- 首先確定有把 tun/gif 編入 kernel,或是用kldload 載入 if_tun.ko/if_gif.ko
- 安裝port: net/gateway6
- 修改 /usr/local/etc/gw6c.conf
# 撥接用戶的 userid 是 HN 號碼(八位數字,不用加上@hinet.net),密碼是撥接密碼;固接用戶留空
userid=
passwd=
# 撥接用戶使用的 Server IP 是 203.74.21.88,固接用戶使用的是 203.74.21.89
server=203.74.21.89
# 撥接用戶使用的 auth method 是 any,固接用戶使用的是 anonymous
auth_method=anonymous
host_type=host
prefixlen=64
if_prefix=bge0
gw6_dir=/usr/local
auto_retry_connect=yes
retry_delay=30
keepalive=yes
keepalive_interval=30
tunnel_mode=v6anyv4
# 如果有使用到其他的tun/gif,記得不要衝突。
if_tunnel_v6v4=gif0
if_tunnel_v6udpv4=tun0
if_tunnel_v4v6=gif0
client_v4=auto
client_v6=auto
template=freebsd
proxy_client=no
broker_list=tsp-broker-list.txt
last_server=tsp-last-server.txt
always_use_same_server=no
log_filename=gw6c.log
log_rotation=yes
log_rotation_size=32
syslog_facility=USER
- 修改 /etc/rc.conf
gateway6_enable="YES"
- 執行 gateway6
# /usr/local/etc/rc.d/gateway6 start
因為不能使用 router mode,所以如果你有很多台電腦要上 ipv6 的話,只能每台電腦都裝 gateway6 的 client 或用 ipv6 的 nat…
這個版本解決了安全性的問題,有使用的人要去更新啊。
接下來還有 rrdtools 跟 samba 的問題希望儘快解決……
Latest Comments
RSS