亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 2324 | 回復(fù): 3
打印 上一主題 下一主題

[存儲(chǔ)備份] (轉(zhuǎn)貼) 利用 UNIX 腳本來(lái)管理 DS4000 磁盤陣列系統(tǒng) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2007-10-30 15:19 |只看該作者 |倒序?yàn)g覽
這篇文章是作者在實(shí)際工作中的總結(jié),他利用了DS 4000 磁盤支持CLI功能的特點(diǎn)(也就是支持命令行接口,批量的命令可以使用腳本來(lái)完成),使用UNIX 系統(tǒng)來(lái)生成可以運(yùn)行在DS 4000上的腳本。比較有實(shí)用價(jià)值,類似的問(wèn)題也可以使用相同的方法解決。還有就是作者使用SED來(lái)完成這個(gè)任務(wù)的,也是學(xué)習(xí)SED的一個(gè)好例子。
原文:http://www.ibm.com/developerwork ... a=dgr-cn-cu&amp

本文向您介紹了如何利用 UNIX 的腳本功能生成能夠在 DS4000上使用的控制腳本。它是文章作者在實(shí)際工作中的總結(jié),具有比較高的實(shí)用性,同時(shí)對(duì)于類似的問(wèn)題的解決也是一個(gè)很有啟發(fā)的例子。文中使用了著名的編輯器SED,對(duì)于這方面感興趣的讀者也是很有幫助的。
             為什么使用 UNIX 腳本來(lái)管理 DS4000
            作為一個(gè)測(cè)試工程師,在我的日常工作中我經(jīng)常要花費(fèi)大量的時(shí)間去完成一些很簡(jiǎn)單但是很耗時(shí)的工作。例如,一次我想在 DS4000 上創(chuàng)建 200個(gè)磁盤。但是由于 DS4000 沒(méi)有能夠批量創(chuàng)建磁盤的功能,我花費(fèi)了 4個(gè)小時(shí)一個(gè)一個(gè)地去創(chuàng)建。這次的經(jīng)歷使我有一種想法去創(chuàng)建一個(gè)能夠可以批量地創(chuàng)建磁盤的工具。經(jīng)過(guò)我一段時(shí)間的研究,我發(fā)現(xiàn) IBM StorageManager 支持 CLI(Command Line Interface)功能,這就意味著我可以利用 UNIX系統(tǒng)的腳本功能來(lái)創(chuàng)建一個(gè)可以被 IBM Storage Manager 使用的腳本。通過(guò)在 IBM Storage Manager運(yùn)行這個(gè)被創(chuàng)建的腳本,可以在無(wú)需人機(jī)交互的情況下批量的創(chuàng)建磁盤。但是作者并不保證本方法在任何情況下總是可以成功,請(qǐng)讀者在驗(yàn)證本文的例子時(shí)注意做好相應(yīng)的備份,最好在實(shí)驗(yàn)環(huán)境上進(jìn)行操作。
             例子腳本介紹
            那么如何創(chuàng)建 IBM Storage Manager 可使用的腳本呢?IBM Storage Manager有它自己的腳本格式。只有腳本的變量值改變而格式并不改變。所以,UNIX腳本需要能夠讓用戶能夠定制的輸入自己的所對(duì)應(yīng)的值,如需要?jiǎng)?chuàng)建磁盤的數(shù)量,HBA 卡的 WWPNs 值,來(lái)生成 IBM StorageManager 能夠使用的腳本文件?梢栽O(shè)計(jì)一個(gè)配置文件來(lái)讓用戶輸入自己對(duì)應(yīng)的變量值。下面就是個(gè)配置文件的例子:
LunNumber:30 #30 個(gè) LUNs
ArrayNumber:1 # 這些 LUNs 創(chuàng)建在 array 1 上
LunName:sunx325b # 這些 LUNs 的名字將為 sunx325b_0, sunx325b_1 ...
Capacity:0.5GB # 每個(gè) LUNs 的容量是 0.5GB
HostGroupName:sunx325b_group # 這個(gè)主機(jī)組的名字為 sunx325b_group
HostName:sunx325b # 這個(gè)主機(jī)名為 sunx325b
Port0:210000e08b0e934d # 第一個(gè) HBA 卡的 wwpn 值
Port1:210000e08b0e6e50 # 第二個(gè) HBA 卡的 wwpn 值
HostType:8 # 主機(jī)類型

                        完成了對(duì)配置文件的定義以后,UNIX 腳本可以把配置文件中用戶定義的值解析出來(lái),并且組織成為 IBM Storage Manager可以使用的腳本。一個(gè)比較好的解析配置文件的工具是 SED 編輯器,這是一個(gè)流式的編輯器。SED編輯器將需要處理的文本作為輸入,經(jīng)過(guò)一系列操作以后,輸出經(jīng)過(guò)修改的文本。SED編輯器的典型應(yīng)用就是通過(guò)模式的匹配來(lái)提取文件中的一部分內(nèi)容或者是把文件中的多個(gè)相同的字符串進(jìn)行替換。UNIX 腳本可以通過(guò)使用 SED編輯器從配置文件中得到需要的數(shù)值,并把這些值添加到能夠被 IBM Storage Manager 使用的腳本中去。
例如,下面展示了如何使用 UNIX 腳本從配置文件中獲取磁盤數(shù)量這個(gè)值。這個(gè)腳本從配置文件獲取 LunNumber 這個(gè)值,然后把這個(gè)值賦給腳本中的對(duì)應(yīng)變量 LunNumber。
sed -n '/LunNumber:/'p $ConfigFile >tmp
lunNumber=`sed 's/LunNumber://' tmp`

                         例子腳本的詳細(xì)說(shuō)明
            下面的例子是展示如何使用 SED 編輯器生成一個(gè) IBM Storage Manager 可以使用的腳本。這個(gè)例子中,腳本從配置文件中獲得了ArrayNumber,LunName 和 Capacity 的值,用于生成 IBM Storage Manager使用的生成磁盤的命令,然后把這個(gè)命令添加到 IBM Storage Manager 的腳本(crtlun.cmd)文件。
x=0
while [ $x -lt $lunNumber ]
do
y=`expr $x % 2`
if [ $y -eq 0 ]
then
echo "create logicalDrive array=$arrayNumber userLabel=\"${lunName}_${x}\"
capacity=$capacity owner=a;" >> crtlun.cmd
else
echo "create logicalDrive array=$arrayNumber userLabel=\"${lunName}_${x}\"
capacity=$capacity owner=b;" >> crtlun.cmd
fi
x=`expr $x + 1`
done

                         這個(gè)UNIX 工具的內(nèi)容是不是很簡(jiǎn)單?但是它卻幫助了我把原來(lái)需要幾個(gè)小時(shí)的工作減少為只需要幾分鐘就可以完成。下面讓我對(duì)我的 UNIX腳本文件的內(nèi)容做個(gè)比較詳細(xì)的介紹。這個(gè)名字為 ds4kscript.sh 的腳本文件可以運(yùn)行在 UNIX(AIX,Solaris,Linux 等)上,用于產(chǎn)生一個(gè)可以在 IBMStorage Manager 上運(yùn)行的腳本。它可以用于在 DS4000 系列上創(chuàng)建和刪除 Lun、host group、host、hostport,映射 Lun 等功能。
這個(gè)腳本的輸入是配置文件:config。它保存這用戶自定義的配置信息。這個(gè)腳本的輸出是一系列的腳本(這個(gè)功能在后面會(huì)加以介紹):crtlun.cmd, crthost.cmd, maplun.cmd, delmap.cmd, delhost.cmd, dellun.cmd, setup.cmd, destroy.cmd支持的操作系統(tǒng):AIX,Solaris 和 Linux
             腳本使用說(shuō)明
             編輯 config 文件,設(shè)置參數(shù)為用戶所需要的值。下面是一個(gè)例子,顯示了 config 文件需要包含那些項(xiàng)以及一些說(shuō)明:
LunNumber:30 #30 個(gè) LUNs
ArrayNumber:1 # 這些 LUNs 創(chuàng)建在 array 1 上
LunName:sunx325b # 這些 LUNs 的名字將為 sunx325b_0, sunx325b_1 ...
Capacity:0.5GB # 每個(gè) LUNs 的容量是 0.5GB
HostGroupName:sunx325b_group # 這個(gè)主機(jī)組的名字為 sunx325b_group
HostName:sunx325b # 這個(gè)主機(jī)名為 sunx325b
Port0:210000e08b0e934d # 第一個(gè) HBA 卡的 wwpn 值
Port1:210000e08b0e6e50 # 第二個(gè) HBA 卡的 wwpn 值
HostType:8 # 主機(jī)類型


                         復(fù)制 ds4kscript.sh 到和 config 相同的目錄下,執(zhí)行:
chmod +x ds4kscript.sh (使用戶對(duì) ds4kscript.sh 具有執(zhí)行權(quán)限)
./ds4kscript.sh ( 執(zhí)行 ds4kscript.sh)

                         在ds4kscript.sh 運(yùn)行的目錄下,一系列文件將會(huì)被創(chuàng)建出來(lái):crtlun.cmd, crthost.cmd, maplun.cmd,delmap.cmd, delhost.cmd, dellun.cmd, setup.cmd,destroy.cmd。下面逐一對(duì)這些文件的功能進(jìn)行描述:
  • 創(chuàng)建 Lun、host group、host、host port,映射 Lun。它包括了 crtlun.cmd, crthost.cmd, maplun.cmd 的所有功能,算是一個(gè)功能集合的腳本。
  • 創(chuàng)建 Luns;
  • 創(chuàng)建 host group、host、host port;
  • 映射端口到 host 上;
  • 刪除 Lun、host group、host、host port,映射 Lun。它包括了 delmap.cmd, delhost.cmd, dellun.cmd 的所有功能,算是一個(gè)功能集合的腳本;
  • 刪除 Lun 映射
  • 刪除 host group、host、host port
  • 刪除 Lun
                        復(fù)制 setup.cmd 的內(nèi)容到 IBM Storage Manager 腳本編輯器中,然后運(yùn)行它;蛘哂脩粢部梢詥为(dú)的復(fù)制crtlun.cmd, crthost.cmd, maplun.cmd 中的內(nèi)容,來(lái)實(shí)現(xiàn)單獨(dú)的一些功能。這時(shí) Lun 已經(jīng)在 DS4000上建立好了,同時(shí)也映射到了主機(jī)上。
             當(dāng)然,同時(shí)可以執(zhí)行 destroy.cmd 內(nèi)的內(nèi)容來(lái)進(jìn)行刪除操作,或者單獨(dú)地執(zhí)行 delmap.cmd, delhost.cmd, dellun.cmd 內(nèi)的內(nèi)容來(lái)清除剛才執(zhí)行的創(chuàng)建操作。
             下面是 ds4kscript.sh 的詳細(xì)內(nèi)容,請(qǐng)注意其中的注解內(nèi)容,會(huì)幫助您的理解:
下面是 ds4kscript.sh 的詳細(xì)內(nèi)容,請(qǐng)注意其中的注解內(nèi)容,會(huì)幫助您的理解:

#

ConfigFile=./config
ProgramName=./ds4kscript.sh

if [ -f $ConfigFile ]
        then
                echo "OK" >> /dev/null
        else
                echo "$ConfigFile not exist!"
                exit -1
        fi

# 從配置文件中依次獲取參數(shù)值
sed -n '/LunNumber:/'p $ConfigFile >tmp
lunNumber=`sed 's/LunNumber://' tmp`
echo lunNumber=$lunNumber

sed -n '/ArrayNumber:/'p $ConfigFile >tmp
arrayNumber=`sed 's/ArrayNumber://' tmp`
echo arrayNumber=$arrayNumber

sed -n '/LunName:/'p $ConfigFile >tmp
lunName=`sed 's/LunName://' tmp`
echo lunName=$lunName

sed -n '/Capacity:/'p $ConfigFile >tmp
capacity=`sed 's/Capacity://' tmp`
echo capacity=$capacity

sed -n '/HostGroupName:/'p $ConfigFile >tmp
hostGroupName=`sed 's/HostGroupName://' tmp`
echo hostGroupName=$hostGroupName

sed -n '/HostName:/'p $ConfigFile >tmp
hostName=`sed 's/HostName://' tmp`
echo hostName=$hostName

sed -n '/Port0:/'p $ConfigFile >tmp
port0=`sed 's/Port0://' tmp`
echo port0=$port0

sed -n '/Port1:/'p $ConfigFile >tmp
port1=`sed 's/Port1://' tmp`
echo port1=$port1

sed -n '/HostType:/'p $ConfigFile >tmp
hostType=`sed 's/HostType://' tmp`
echo hostType=$hostType

# 創(chuàng)建 IBM storage manager 使用的腳本中創(chuàng)建 Lun 的部分,并保存為 crtlun.cmd。
if [ -f crtlun.cmd ]
        then
                rm crtlun.cmd
        else
                echo "OK" >> /dev/null
        fi

x=0
while [ $x -lt $lunNumber ]
do
y=`expr $x % 2`
if [ $y -eq 0 ]
then
echo "create logicalDrive array=$arrayNumber userLabel=\"${lunName}_${x}\"
capacity=$capacity owner=a;" >> crtlun.cmd
else
echo "create logicalDrive array=$arrayNumber userLabel=\"${lunName}_${x}\"
capacity=$capacity owner=b;" >> crtlun.cmd
fi
x=`expr $x + 1`
done

# 創(chuàng)建 IBM storage manager 使用的腳本中創(chuàng)建 host group,host 和 host port 的部分,并保存為 crthost.cmd。
if [ -f crthost.cmd ]
        then
                rm crthost.cmd
        else
                echo "OK" >> /dev/null
        fi
       
echo "create hostGroup userLabel=\"$hostGroupName\";" >>crthost.cmd
echo "create host userLabel = \"$hostName\" hostGroup = \"$hostGroupName\";" >>crthost.cmd
echo "create hostPort identifier = \"$port0\" userLabel = \"${hostName}_hba0\"
host = \"$hostName\" hostType = $hostType;" >>crthost.cmd
echo "create hostPort identifier = \"$port1\" userLabel = \"${hostName}_hba1\"
host = \"$hostName\" hostType = $hostType;" >>crthost.cmd

# 創(chuàng)建 IBM storage manager 使用的腳本中映射 Lun 的部分,并保存為 maplun.cmd。
if [ -f maplun.cmd ]
        then
                rm maplun.cmd
        else
                echo "OK" >> /dev/null
        fi

x=0
while [ $x -lt $lunNumber ]
do
echo "set logicalDrive [\"${lunName}_${x}\"] logicalUnitNumber=$x
hostGroup=\"$hostGroupName\";" >>maplun.cmd
x=`expr $x + 1`
done

# 創(chuàng)建 IBM storage manager 使用的腳本中刪除 Lun 映射的部分,并保存為 delmap.cmd。
if [ -f delmap.cmd ]
        then
                rm delmap.cmd
        else
                echo "OK" >> /dev/null
        fi

x=0
while [ $x -lt $lunNumber ]
do
echo "remove logicalDrive [\"${lunName}_${x}\"] lunMapping
hostGroup=\"$hostGroupName\";" >>delmap.cmd
x=`expr $x + 1`
done

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2007-10-30 16:12 |只看該作者
看起來(lái)不錯(cuò)阿,實(shí)際用的多么?
一般我們都客戶端去操作os,客戶端去操作ds,所以都在一臺(tái)pc上也不麻煩

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2007-10-30 17:01 |只看該作者
用的可能補(bǔ)多,但是一旦LUs很多或者SAN環(huán)境很復(fù)雜的時(shí)候,scripts就派上用場(chǎng)了。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2007-10-31 15:28 |只看該作者
恩。。比較適用于復(fù)雜情況或者測(cè)試環(huán)境。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP