簡介
SCSI爲小型計算機系統接口(英語:Small Computer System Interface; 簡寫:SCSI),一種用於計算機和智能設備之間(硬盤、軟驅、光驅、打印機、掃描儀等)系統級接口的獨立處理器標準。 SCSI是一種智能的通用接口標準。
iSCSI技術是一種由IBM公司研究開發的,是一個供硬件設備使用的可以在IP協議的上層運行的SCSI指令集,這種指令集合可以實現在IP網絡上運行SCSI協議,使其能夠在諸如高速千兆以太網上進行路由選擇。iSCSI技術是一種新儲存技術,該技術是將現有SCSI接口與以太網絡(Ethernet)技術結合,使服務器可與使用IP網絡的儲存裝置互相交換資料。
ISCSI使用rbd作爲後端存儲 :
本文舉例基於ubuntu系統12.04.5 server
ISCSI角色分爲target和initiator
target端即磁盤陣列或其他裝有磁盤的主機,通過iscsi target工具將磁盤空間映射到網絡上,initiator端就可以尋找發現並使用該磁盤。
initiator作爲ISCSI的使用者,用於尋找發現網絡上的target,並使用網絡上的磁盤。
角色 | IP |
target | 10.128.3.22 |
initiator | 10.128.3.21 |
一、準備工作
創建好ceph集羣,創建過程詳細請查看本博另一篇部署ceph。二、target結點的配置(10.128.3.22)
apt-get install tgt
ubuntu-12.04.5-server版本默認安裝(version=1.0.17),如果target要支持後端爲rbd存儲,需要升級tgt >= 1.0.35
本例升級tgt到(version = 1.0.43)
1. 拷貝ceph集羣的ceph.conf和keyring到target, 確保target能訪問ceph cluster.
並關閉rbd cache,主要由於如果在不同的主機啓動多個target服務,並使用同一塊RBD,打開rbd cache功能可能導致數據丟失或錯亂。
在/etc/ceph/ceph.conf文件中添加如下幾行:
[client]
rbd_cache = false
root@server2:~# ceph -s
cluster cfd6bc98-dd50-44b8-ae8e-fbbd9420146b
health HEALTH_WARN
clock skew detected on mon.ceph4
Monitor clock skew detected
monmap e8: 4 mons at {ceph1=10.128.3.11:6789/0,ceph2=10.128.3.12:6789/0,ceph3=10.128.3.13:6789/0,ceph4=10.128.3.14:6789/0}
election epoch 28, quorum 0,1,2,3 ceph1,ceph2,ceph3,ceph4
osdmap e99: 4 osds: 4 up, 4 in
pgmap v5294: 960 pgs, 5 pools, 37812 kB data, 30 objects
4331 MB used, 61164 MB / 65496 MB avail
960 active+clean
2. 確認TGT是否支持rbd
root@server2:~# tgtadm --lld iscsi --op show --mode system | grep rbd
rbd (bsoflags sync:direct)
3. 創建一個RBD image1
root@server2:~# ceph osd pool create testpool1 128 128
pool 'testpool1' created
root@server2:~# rbd create testpool1/image1 -s 1024
root@server2:~# rbd ls testpool1
image1
4. 創建一個target配置文件
/etc/tgt/conf.d/iscsi_ceph.conf
<target iqn.2016-03.rbdstore.example.com:iscsi>
driver iscsi
bs-type rbd
backing-store testpool1/image1 # Format is <pool-name>/<image-name>
</target>
5. 重啓tgt服務
service tgt reload
6. 查看當前詳細的target
tgtadm --lld iscsi --mode target --op show
三、initiator結點的配置(10.128.3.21)
1、安裝open-scsiroot@server1:~# apt-get install open-iscsi
2. 啓動open-scsi服務
root@server1:~# service open-iscsi restart
3. 發現ISCSI target設備
root@server1:~# iscsiadm -m discovery -t st -p 10.128.3.22
10.128.3.22:3260,1 iqn.2016-03.rbdstore.example.com:iscsi
4. 接入target設備
root@server1:~# iscsiadm -m node -p 10.128.3.22 --login
Logging in to [iface: default, target: iqn.2016-03.rbdstore.example.com:iscsi, portal: 10.128.3.22,3260]
Login to [iface: default, target: iqn.2016-03.rbdstore.example.com:iscsi, portal: 10.128.3.22,3260]: successful
5. 確認target設備已經接入(示例中sdc就是iscsi設備)
root@server1:~# cat /proc/partitions
major minor #blocks name
11 0 882472 sr0
2 0 4 fd0
8 0 16777216 sda
8 1 15727616 sda1
8 2 1 sda2
8 5 1046528 sda5
8 16 16777216 sdb
252 0 1046528 dm-0
8 32 1048576 sdc
root@server1:~#
root@server1:~#
root@server1:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 16G 0 disk
├─sda1 8:1 0 15G 0 part /
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 1022M 0 part
└─cryptswap1 (dm-0) 252:0 0 1022M 0 crypt [SWAP]
sdb 8:16 0 16G 0 disk
sdc 8:32 0 1G 0 disk
sr0 11:0 1 861.8M 0 rom
6. 掛載接入的target設備使用
root@server1:~# mkfs.xfs /dev/sdc -f
meta-data=/dev/sdc isize=256 agcount=8, agsize=32768 blks
= sectsz=512 attr=2, projid32bit=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
root@server1:~# mount /dev/sdc /mnt/
root@server1:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 15G 1.6G 13G 12% /
udev 484M 4.0K 484M 1% /dev
tmpfs 100M 388K 99M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 497M 0 497M 0% /run/shm
/dev/sdc 1014M 33M 982M 4% /mnt
7. initiator斷開target
root@server1:~# umount /mnt/