• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 使用NetBSD構建基于iSCSI的小型SAN

    發表于:2007-05-26來源:作者:點擊數: 標簽:
    引言 隨著信息系統應用的復雜和多樣化,存儲越來越受到企業關注,存儲的 需求 也越來越多樣化。NetBSD在近期的HEAD(CURRENT)代碼中加入了對iSCSI服務的支持,下面就讓我們來看看如何利用NetBSD來構建一個基本的SAN(Storage Area Network)環境。 開啟iSCS
    引言

    隨著信息系統應用的復雜和多樣化,存儲越來越受到企業關注,存儲的需求也越來越多樣化。NetBSD在近期的HEAD(CURRENT)代碼中加入了對iSCSI服務的支持,下面就讓我們來看看如何利用NetBSD來構建一個基本的SAN(Storage Area Network)環境。

    開啟iSCSI服務

    首先要使用iSCSI服務,你得更新你的系統到HEAD版本,本文使用的NetBSD版本信息如下:

    # uname -a
    NetBSD 3.99.16 NetBSD 3.99.16 (GENERIC) #0: Sun Mar 5 09:59:31 UTC 2006 builds@works.netbsd.org:/home/builds/ab/HEAD/i386/200603050000Z-obj/home/builds/ab/HEAD/src/sys/arch/i386/compile/GENERIC i386

    如果你的NetBSD版本過低,你可以到ftp://ftp.netbsd.org/pub/NetBSD-daily/HEAD下載安裝包,或者使用cvs同步源代碼,并升級你的NetBSD,這里就不詳細介紹,具體升級方法請參見NetBSD Guide.

    目前NetBSD對iSCSI的支持是用一個用戶狀態的守護進程iscsi-target來實現的,它位于/usr/sbin/iscsi- target。這里有兩個概念需要簡單的介紹一下,在服務端提供iSCSI存儲服務的存儲對像稱為target,一個服務端可以有多個target,使用 iSCSI服務的客戶端稱為initiator。

    NetBSD上iSCSI的默認配置文件為/etc/iscsi/targets,它包含了每個target的描述,它的內容如下:

    # $NetBSD: targets,v 1.2 2006/02/16 19:30:57 agc Exp $
    #
    # Structure of this file:
    #
    # + an extent is a straight (offset, length) pair of a file or device
    # it's the lowest common storage denominator
    # at least one is needed
    # + a device is made up of one or more extents or other devices
    # devices can be added in a hierachical manner, to enhance resilience
    # + in this example, no device definitions are necessary, as the target
    # will just use a simple extent for persistent storage
    # + a target is made up of 1 or more devices
    # The code does not support RAID1 recovery at present

    # Simple file showing 1 extent, mapped straight into 1 target

    # extent file or device start length
    extent0 /tmp/iscsi-target0 0 100MB

    # target flags storage netmask
    target0 rw extent0 0.0.0.0/0


    其中,extent指定了iSCSI數據的存儲位置,而target則是iSCSI提供給客戶端(initiator)的存儲點,客戶端將通過它來完成具體的存儲請求。

    上面配置文件中的具體含義是:定義了一個extent存儲介質extent0,它將使用文件/tmp/iscsi-target0來存儲數據,數據存儲從文件頭部開始,容量為100MB;定義了一個target存儲點target0,權限為rw(讀和寫),它使用先前定義的存儲介質extent0來進行存儲,該存儲點允許IP段為 0.0.0.0/0 的機器訪問。

    接下來是啟用iSCSI服務,在/etc/rc.conf中增加如下行:

    iscsi_target=YES

    接下來便可以啟動iSCSI服務了:
    # /etc/rc.d/iscsi_target start

    如果你的配置正確,你將會看到類似以下的啟動信息:
    Starting iscsi_target.
    Reading configuration from `/etc/iscsi/targets'
    target0:rw:0.0.0.0/0
    extent0:/tmp/iscsi-target0:0:104857600

    DISK: 1 logical units (204800 blocks, 512 bytes/block), type iscsi fs
    DISK: LU 0: 100 MB disk storage for "target0"
    TARGET: TargetName is iqn.1994-04.org.netbsd.iscsi-target


    這表示iSCSI服務已經啟動成功,是不是非常簡便呢?
    客戶端連接iSCSI服務

    現在iSCSI服務已經開始工作了,下面就是用客戶端連接上iSCSI,以檢測我們之前的工作是否正確。

    這里我使用的客戶端是Microsoft iSCSI Initiator 2.01 x86,你可以從http://download.microsoft.com/download/a/e/9/ae91dea1-66d9-417c- ade4-92d824b871af/Initiator-2.01-QFE-908935-x86fre.exe 得到它,需要注意的是,它只支持Windows 2000 SP3及以上的Windows版本。下載完并安裝好后,你會在桌面上看到一個名為Microsoft iSCSI Initiator的圖標,雙擊打開后,可以看到Microsoft iSCSI Initiator窗口,如圖1。

    issue17_iscsi1.png
    圖1

    點擊Discovery標簽,再點擊Add按鈕,出現增加Target Portal的對話杠,輸入你的NetBSD服務器的IP地址,然后點確定,如圖2。

    issue17_iscsi2.png
    圖2

    這里就可以看到你的NetBSD服務器的IP已經添加到Target Portals中,點擊Targets標簽,你將看到剛才我們設置的存儲點target0,如果沒有出現,請點擊Refresh按鈕刷新,如圖3,點擊 Log On銨鈕,出現登錄框,直接點擊OK即可,如圖4。

    issue17_iscsi3.png
    圖3
    issue17_iscsi4.png
    圖4

    登錄成功后,你可以看到Targts中的狀態已經變為Connected,同時NetBSD上的/var/log/messages中你也可以看到一條類似以下的initiator登錄提示信息:

    Mar 30 09:07:59 iscsi-target: > Normal login from iqn.1991-05.com.microsoft:minilab on 192.168.0.9

    接下來就是初始化iSCSI硬盤了。進入控制面板->管理工具->計算機管理,點擊磁盤管理,這里會出現磁盤簽署升級向導,如圖5。
    issue17_iscsi5.png
    圖5

    點擊下一步按鈕,這里列出了要簽署的硬盤,選中它,繼續點擊下一步,出現硬盤升級列表,同樣選中它,點擊下一步完成升級。這里,計算機管理的磁盤管理器列表中會多出一個硬盤,本例中為Disk1,如圖6。

    issue17_iscsi6.png
    圖6

    右擊它,創建新的磁盤卷。本例中創建了一個新的卷G,打開我的電腦,你便可以看到它,現在你就可以像使用本地硬盤一樣使用它。如圖7為向該硬盤(G:)中復制文件。

    issue17_iscsi7.png
    圖7

    到此,我們便完成了iSCSI服務的建立和客戶端的連接,接下來我們繼續看看如何使用NetBSD的RAIDframe提高存儲性能和保護數據的安全性。

    使用RAID5保護iSCSI數據安全

    首先要確認你的Kernel是否已經包含對RAID的支持(GENERIC內核默認情況下支持RAID),方法如下:

    # grep RAIDframe /var/run/dmesg.boot

    如果看到:
    Kernelized RAIDframe activated

    說明你的內核已經開啟了RAID支持,如果沒有看到,你就需要在你的內核配置文件中加入:
    options RAID_AUTOCONFIG
    pseudo-device raid

    并重新編譯內核。

    RAIDframe使用/sbin/raidctl來對內核RAID進行管理,raidctl將讀取一個配置文件來實現對RAID設備的配置, raid配置文件分為4個部分和2個可選部分,每個部分使用START標示該部分的開始。以下是本例中的RAID配置文件 /etc/raid5.conf:

    START array
    1 3 1
    START disks
    /dev/sd0a
    /dev/sd1a
    /dev/sd2a
    START spare
    /dev/sd3a
    START layout
    # sectPerSU SUsPerParityUnit SUsPerReconUnit RAID_level
    32 1 1 5
    START queue
    fifo 100

    配置文件的具體意義如下:
    START array
    1 3 1
    這里是一個array的配置,它分別表示該配置為1個RAID,3個磁盤設備,1個備用盤。
    START disks
    /dev/sd0a
    /dev/sd1a
    /dev/sd2a
    這里是一個disks的配置,它列出了要加入到RAID中的硬盤設備為sd0a、sd1a、sd2a。
    START spare
    /dev/sd3a
    這里是一個備用盤的配置,它說明sd3a將作為備用盤加入到RAID中。
    START layout
    # sectPerSU SUsPerParityUnit SUsPerReconUnit RAID_level
    32 1 1 5
    這里配置了RAID的具體細節,分別表示每個段占用32個扇區,每個校驗單位占用1個段,每個重建單位點用1個段,該RAID的級別為RAID5。
    START queue
    fifo 100
    這里主要配置了隊列參數,使用fifo隊列,每個部分的隊列限制為100個請求。

    接下來初始化RAID設備,使用/dev/raid5作為RAID設備:

    # raidctl -C /etc/raid5.conf raid5

    設置啟動時自動配置RAID設備:
    # raidctl -A yes raid5

    成功時將返回:
    raid5: Autoconfigure: Yes

    初始化RAID序列號,這里的序列號為22334455,可根據需要改變:
    # raidctl -I 22334455 raid5

    檢測RAID是否配置成功:
    # raidctl -s raid5
    Components:
    /dev/sd0a: optimal
    /dev/sd1a: optimal
    /dev/sd2a: optimal
    Spares:
    /dev/sd3a: spare
    Component label for /dev/sd0a:
    Row: 0, Column: 0, Num Rows: 1, Num Columns: 3
    Version: 2, Serial Number: 22334455, Mod Counter: 15
    Clean: No, Status: 0
    sectPerSU: 32, SUsPerPU: 1, SUsPerRU: 1
    Queue size: 100, blocksize: 512, numBlocks: 2097088
    RAID Level: 5
    Autoconfig: Yes
    Root partition: No
    Last configured as: raid5
    Component label for /dev/sd1a:
    Row: 0, Column: 1, Num Rows: 1, Num Columns: 3
    Version: 2, Serial Number: 22334455, Mod Counter: 15
    Clean: No, Status: 0
    sectPerSU: 32, SUsPerPU: 1, SUsPerRU: 1
    Queue size: 100, blocksize: 512, numBlocks: 2097088
    RAID Level: 5
    Autoconfig: Yes
    Root partition: No
    Last configured as: raid5
    Component label for /dev/sd2a:
    Row: 0, Column: 2, Num Rows: 1, Num Columns: 3
    Version: 2, Serial Number: 22334455, Mod Counter: 15
    Clean: No, Status: 0
    sectPerSU: 32, SUsPerPU: 1, SUsPerRU: 1
    Queue size: 100, blocksize: 512, numBlocks: 2097088
    RAID Level: 5
    Autoconfig: Yes
    Root partition: No
    Last configured as: raid5
    /dev/sd3a status is: spare. Skipping label.
    Parity status: DIRTY
    Reconstruction is 100% complete.
    Parity Re-write is 100% complete.
    Copyback is 100% complete.

    上面的信息說明我們的RAID5已經配置成功,接下來是建立disklabel和創建文件系統:
    # disklabel raid5

    輸出:
    # /dev/rraid5d:
    type: RAID
    disk: raid
    label: fictitious
    flags:
    bytes/sector: 512
    sectors/track: 64
    tracks/cylinder: 12
    sectors/cylinder: 768
    cylinders: 5461
    total sectors: 4194176
    rpm: 3600
    interleave: 1
    trackskew: 0
    cylinderskew: 0
    headswitch: 0 # microseconds
    track-to-track seek: 0 # microseconds
    drivedata: 0

    4 partitions:
    # size offset fstype [fsize bsize cpg/sgs]
    a: 4194176 0 4.2BSD 0 0 0 # (Cyl. 0 - 5461*)
    d: 4194176 0 unused 0 0 # (Cyl. 0 - 5461*)
    disklabel: boot block size 0
    disklabel: super block size 0


    創建文件系統
    # newfs -O 2 /dev/raid5a

    這里我們創建的是UFS2的文件系統。
    接下來加載新的文件系統:
    # mkdir /r5
    # mount /dev/raid5a /r5

    查看加載情況(這里sd0,sd1,sd2,sd3都為1G的SCSI硬盤)
    # df -h
    Filesystem Size Used Avail Capacity Mounted on
    /dev/wd0a 497M 23M 449M 4% /
    /dev/wd0e 2.2G 189M 1.9G 8% /usr
    kernfs 1.0K 1.0K 0B 100% /kern
    /dev/raid5a 1.9G 2.0K 1.8G 0% /r5

    現在,將/etc/iscsi/targets中的配置文件改成:
    # $NetBSD: targets,v 1.2 2006/02/16 19:30:57 agc Exp $
    #
    # Structure of this file:
    #
    # + an extent is a straight (offset, length) pair of a file or device
    # it's the lowest common storage denominator
    # at least one is needed
    # + a device is made up of one or more extents or other devices
    # devices can be added in a hierachical manner, to enhance resilience
    # + in this example, no device definitions are necessary, as the target
    # will just use a simple extent for persistent storage
    # + a target is made up of 1 or more devices
    # The code does not support RAID1 recovery at present

    # Simple file showing 1 extent, mapped straight into 1 target

    # extent file or device start length
    extent0 /r5/iscsi-target0 0 1800MB

    # target flags storage netmask
    target0 rw extent0 0.0.0.0/0


    重新啟動iSCSI服務:
    # /etc/rc.d/iscsi_target restart

    現在你的iSCSI數據就已經保存在我們的RAID5設備上了,一個基本的SAN就已經完成,快快體驗你的成果吧。

    由于目前iSCSI在NetBSD中還處于開發階段加上筆者水平有限,所以某些功能還暫未實現,歡迎大家共同討論,分享你的新發現。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>