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

2016-03-10 BLOG

## 新增 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，然後兩台主機都需要重新開機

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

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

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

設定完之後，兩台ping 一下，應該要能通 > root@wpstorage:/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 root@10.99.0.11 /mnt

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

測試一下速度

root@wp:/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 分割，然後掛載 > root@wp:/iscsi # mount > > /dev/vtbd0p2 on / (ufs, local, soft-updates) > > devfs on /dev (devfs, local, multilabel) > > /dev/da0s1a on /iscsi (ufs, local, journaled soft-updates) > > root@wp:/iscsi # 馬上來測試一下速度看看！可以發現磁碟寫入速度有大幅度的增加！！ > root@wp:/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) > > root@wp:/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) > > root@wp:/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) > > root@wp:/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 ，就可以了！

comments powered by Disqus
© 2017 by Lednerb
Bilberry Hugo Theme