艾瑞克的 Hexo 空間

[BLOG] 新增 Vultr Storage VPS 提供 iscsi 給wordpress 主機使用

本文發表於647天之前,文章內容可能已經過時,如有疑問,請聯繫作者。

新增 Vultr Storage VPS 提供 iscsi 給wordpress 主機使用

前幾天因為DO的WP主機速度不理想,就連拿來當作上PTT的跳板都會頓爹

所以把主機換到了vultr 的東京機房,光是ping值就從 14x ms 下降到了 4x ms,整個大改善啊!

而且方案從原本的 10USD 換成了 5USD (1 cpu / 768M/15G) ,裝好FreeBSD拿來跑 WP算是綽綽有餘

不過因為這台還當作 pydio 主機來用, 15G的空間實在不夠用

發TICKET詢問客服能不能增加硬碟空間,客服表示只能upgrade plan

但是再往上一級的10 USD方案,也只有 20G,多了 5 USD 只有多5G空間(好啦 還有流量也增加,問題是我用不到流量啊…)

算一算,實在不是很划算

就在這個摸門特,發現了 vultr 有 Storage Instance !

只要 5USD 就有一台虛擬主機 (1 cpu / 512M/125G SATA HD)

怎麼算都比upgrade 到 10USD的方案划算,而且價格一樣!

二話不說,馬上申請一台,一樣跑FreeBSD 10.2,打算拿來當作儲存空間用

至於要用 sshfs / curlftpfs / nfs /iscsi 則是還沒決定,且戰且走

 


 

系統開起來之後,先到管理介面替兩台主機都新增一個 private IP,然後兩台主機都需要重新開機

firefox_2016-03-10_11-36-04

 

重新開機後,必須要手動到系統內去新增虛擬 IP

就分別ssh 到這兩台機器,然後用bsdconfig 去設定 Network Management

(By the way , Storage Instance 的效能真的差滿多的,兩台一起設定,就能比較出來)

設定完之後,兩台ping 一下,應該要能通

[email protected]:/etc # ping 10.99.0.11

PING 10.99.0.11 (10.99.0.11): 56 data bytes

64 bytes from 10.99.0.11: icmp_seq=0 ttl=64 time=0.469 ms

64 bytes from 10.99.0.11: icmp_seq=1 ttl=64 time=0.715 ms

64 bytes from 10.99.0.11: icmp_seq=2 ttl=64 time=0.511 ms

64 bytes from 10.99.0.11: icmp_seq=3 ttl=64 time=0.755 ms

^C

— 10.99.0.11 ping statistics —

4 packets transmitted, 4 packets received, 0.0% packet loss

round-trip min/avg/max/stddev = 0.469/0.612/0.755/0.124 ms
接下來就來測試怎麼把Storage Instance的空間掛來 WP 使用

先測試比較簡單的 sshfs

在WP主機上,先載入fuse.ko

kldload fuse.ko
然後 sshfs [email protected] /mnt

輸入密碼之後,就把Storage主機的硬碟掛載 /mnt 底下了

測試一下速度

[email protected]:/iscsi # dd if=/dev/zero of=testfile bs=1k count=100000
100000+0 records in
100000+0 records out
102400000 bytes transferred in 17.661407 secs (1056241 bytes/sec)

WHAT !!!!!?????

這效能是怎麼回事???糟糕到一個不行啊!!!換算起來才 1mb 不到!?

有沒有那麼糟糕啊??看來用 sshfs 行不通!

馬上 umount

既然用fuse 去掛載進來的效能這麼糟糕,那 curlftpfs 應該也不用測試了,跳過,改用 iscsi 好了

翻了一下 google ,好像 FreeBSD 10.2的 iscsi 改用 ctl 來處理

於是參考這篇文章 用FreeBSD10搭建基于ZFS的iSCSI服务 跳過 ZFS 的部分來建立iscsi target


 

以下這段在 storage 主機操作

首先修改 /etc/rc.conf 加入

ctld_enable=”YES”


 

接著編輯 ctld 的設定檔

vim /etc/ctld.conf

portal-group san {

discovery-auth-group no-authentication

listen 10.99.0.10 #改成自己的 IP

}

target iqn.2014-05.com.example:target0 { #target name 可改可不改,就先保留,不要動吧

auth-group no-authentication

portal-group san

lun 0 {

        path /mnt/iscsifile #指定 iscsi file 的位置

        blocksize 4096

        size 100G #指定大小

}

}
建立一個 target(iqn.2014-05.com.example:target0 )、一個 portal-group (san) 不需要認證 (反正這個LAN只有我自己的主機能存取)

再來修改ctld.conf 的權限

chmod 600 /etc/ctl.conf

啟動 ctld 服務

service ctld start

檢查 /var/log/messages 看看有沒有啥錯誤,正常來說應該不會有啥問題。


 

iscsi target 到這邊設定OK,接著來去WP主機建立 iscsi initiator

先載入 iscsi_initiator.ko

kldload -v iscsi_initiator.ko
如果以後開機要自動載入的話

vim /boot/loader.conf
新增底下這一行

iscsi_initiator_load=”YES”
存檔後離開,修改檔案權限
chmod 755 /boot/loader.conf
再來,搜尋一下 iscsi target
iscontrol -v -d targetaddress=10.99.0.10 initiatorname=iqn

#targetaddress 要改成 storage主機的 IP
如果一切沒問題,應該會出現這樣的訊息
adding ‘targetaddress=10.99.0.10’

I-: cmd=0x3 len=265

SessionType=Discovery

InitiatorName=nxl

MaxBurstLength=131072

HeaderDigest=None,CRC32C

DataDigest=None,CRC32C

MaxRecvDataSegmentLength=65536

ErrorRecoveryLevel=0

DefaultTime2Wait=0

DefaultTime2Retain=0

DataPDUInOrder=Yes

DataSequenceInOrder=Yes

MaxOutstandingR2T=1

T-: cmd=0x23 len=212

MaxBurstLength=131072

HeaderDigest=None

DataDigest=None

MaxRecvDataSegmentLength=131072

ErrorRecoveryLevel=0

DefaultTime2Wait=0

DefaultTime2Retain=0

DataPDUInOrder=Yes

DataSequenceInOrder=Yes

MaxOutstandingR2T=1

I-: cmd=0x4 len=16

SendTargets=All

T-: cmd=0x24 len=75

TargetName=iqn.2014-05.com.example:target0

TargetAddress=10.99.0.10:3260,2

TargetName=iqn.2014-05.com.example:target0

TargetAddress=10.99.0.10:3260,2

I-: cmd=0x6 len=0

T-: cmd=0x26 len=0
雖然很多看不懂,但是看樣子似乎是有找到,把 targetName / TargetAddress 抄下來

接著設定 iscsi initiator的設定檔

vim /etc/iscsi.conf

wpiscsi {

authmethod = CHAP

chapIName = YOUR-ISCSI-USERNAME #認證名稱 沒用到

chapSecret = YOUR-ISCSI-PASSWORD #認證密碼 沒用到

initiatorname = iqn

TargetName = iqn.2014-05.com.example:target0 #改成剛剛搜尋回傳的結果

TargetAddress = 10.99.0.10:3260,2 # 改成剛剛搜尋回傳的結果

}
存檔離開、設定權限
chmod 755 /etc/iscsi.conf
測試連線
iscontrol -c /etc/iscsi.conf -n wpiscsi
正常的話,會出現類似這樣的訊息
iscontrol[8146]: running
dmesg 看一下,最底下應該會出現找到新磁碟的訊息
da0 at iscsi0 bus 0 scbus2 target 0 lun 0

da0: <FREEBSD CTLDISK 0001> Fixed Direct Access SPC-4 SCSI device

da0: Serial Number MYSERIAL 0

da0: 102400MB (26214400 4096 byte sectors: 255H 63S/T 1631C)
BINGO !抓到了!

再來就是去bsdconfig 分割,然後掛載

[email protected]:/iscsi # mount

/dev/vtbd0p2 on / (ufs, local, soft-updates)

devfs on /dev (devfs, local, multilabel)

/dev/da0s1a on /iscsi (ufs, local, journaled soft-updates)

[email protected]:/iscsi #
馬上來測試一下速度看看!可以發現磁碟寫入速度有大幅度的增加!!
[email protected]:/iscsi # dd if=/dev/zero of=testfile bs=1k count=1000

1000+0 records in

1000+0 records out

1024000 bytes transferred in 0.005329 secs (192151364 bytes/sec)

[email protected]:/iscsi # dd if=/dev/zero of=testfile bs=1k count=10000

10000+0 records in

10000+0 records out

10240000 bytes transferred in 0.196187 secs (52195094 bytes/sec)

[email protected]:/iscsi # dd if=/dev/zero of=testfile bs=1k count=100000

100000+0 records in

100000+0 records out

102400000 bytes transferred in 17.661407 secs (5797953 bytes/sec)

[email protected]:/iscsi # dd if=/dev/zero of=testfile bs=1k count=100000

100000+0 records in

100000+0 records out

102400000 bytes transferred in 9.815858 secs (10432099 bytes/sec)
 

接著編輯 /root/iscsi.sh ,重開機就去執行這個指令,把iscsi 掛進來

#!/bin/sh

iscontrol -c /etc/iscsi.conf -n wpiscsi

sleep 60

mount /dev/da0s1d /iscsi
chmod u+rwx /root/iscsi.sh

大功告成!

日後重開機的話,手動執行 iscsi.sh ,就可以了!

 

 

 

 

 

 

avatar
[筆記] 台灣安博盒子簡易測試心得

  1. 1. 新增 Vultr Storage VPS 提供 iscsi 給wordpress 主機使用