pbs作業(yè)管理系統(tǒng)曙光_第1頁
pbs作業(yè)管理系統(tǒng)曙光_第2頁
pbs作業(yè)管理系統(tǒng)曙光_第3頁
pbs作業(yè)管理系統(tǒng)曙光_第4頁
pbs作業(yè)管理系統(tǒng)曙光_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

PBS作業(yè)管理系統(tǒng)2022/12/192內(nèi)容任務(wù)管理系統(tǒng)概述PBS作業(yè)調(diào)度系統(tǒng)作業(yè)調(diào)度系統(tǒng)的使用2022/12/193任務(wù)管理系統(tǒng)的功能單一系統(tǒng)映象機群松散的結(jié)構(gòu)的整合系統(tǒng)資源整合異構(gòu)系統(tǒng)的整合多用戶的管理用戶提交的任務(wù)的統(tǒng)一安排,避免沖突用戶權(quán)限的管理非授權(quán)用戶的控制2022/12/194任務(wù)管理系統(tǒng)的簡史2022/12/195任務(wù)管理系統(tǒng)的分類基于進程級別的調(diào)度由機群中的操作系統(tǒng)或者運行時Runtime內(nèi)部支持,對運行的作業(yè)進行監(jiān)控;以實現(xiàn)機群內(nèi)的透明調(diào)度、以及自動優(yōu)化進程的分配和平衡負載基于作業(yè)級別的調(diào)度這種方式由獨立的作業(yè)管理系統(tǒng)實現(xiàn)。該系統(tǒng)通過專門的入口,接收用戶提交的任務(wù),送入相應(yīng)的隊列等待調(diào)度;并在適當?shù)臅r機分配資源,為任務(wù)創(chuàng)建作業(yè),將作業(yè)提入運行,在作業(yè)運行結(jié)束后完成收尾工作,并提供記帳功能。管理員和用戶還可以在機群中查詢并預(yù)訂符合要求的資源,從而實現(xiàn)對作業(yè)和資源的全程交互控制。2022/12/196任務(wù)管理系統(tǒng)的比較管理實現(xiàn)級別進程級作業(yè)級調(diào)度方式透明,基于最小負載可以基于網(wǎng)絡(luò)拓撲/程序特性/負載/自定義策略調(diào)度管理層次

低級,僅根據(jù)局部信息

高級,根據(jù)全局信息負載均衡方式支持動態(tài)負載均衡支持靜態(tài)負載均衡;如有checkpoint功能,可支持動態(tài)負載均衡資源共享僅能夠共享硬件資源可以共享硬件、軟件和證書等資源服務(wù)質(zhì)量Qos可能造成大作業(yè)饑餓,無Qos只要策略適當,可以保證Qos機群一致性的層次入口不一致,仍為多機系統(tǒng);可以提供存儲一致性

提供單一系統(tǒng)入口和存儲一致性對用戶權(quán)限、資源和作業(yè)的高級管理策略無法實現(xiàn)能夠很好地實現(xiàn)系統(tǒng)結(jié)構(gòu)規(guī)??蓴U展

如果規(guī)模過大,會遇到前述的O(㎡)的通訊問題,難以擴展

通訊量與系統(tǒng)規(guī)模成線形放縮,可以很好的擴展對作業(yè)類型的限制如前述,不適合于系統(tǒng)調(diào)用較多的程序(如I/O密集型)

對程序類型無限制2022/12/197內(nèi)容任務(wù)管理系統(tǒng)概述PBS作業(yè)調(diào)度系統(tǒng)作業(yè)調(diào)度系統(tǒng)的使用2022/12/198PBS作業(yè)調(diào)度系統(tǒng)PBS最初由NASA的Ames研究中心開發(fā),為了提供一個能滿足異構(gòu)計算網(wǎng)絡(luò)需要的軟件包。它力求提供對批處理的初始化和調(diào)度執(zhí)行的控制,允許作業(yè)在不同主機間的路由。2022/12/199PBS的技術(shù)特色力求控制對批處理的初始化和調(diào)度執(zhí)行,允許作業(yè)在不同主機間的路由。獨立的調(diào)度模塊存有各個可用的排隊作業(yè)、運行作業(yè)和系統(tǒng)資源使用信息,并且允許系統(tǒng)管理員定義資源和每個作業(yè)可使用的數(shù)量。在作業(yè)調(diào)度策略上,PBS提供了默認的公平共享和獨占FIFO調(diào)度策略,還提供了TCL、BACL、C三種過程語言和調(diào)度類,并定義了一些調(diào)度需要的函數(shù)和完整的API,方便實現(xiàn)新的調(diào)度策略。提供文件傳送,F(xiàn)ileStage-in和Stage-out。滿足POSIX1003.2d標準,支持作業(yè)依賴,和完整的安全認證。提供用戶映射功能,使PBS能用于用戶不一致的系統(tǒng)中。2022/12/1910PBS的結(jié)構(gòu)2022/12/1911PBS的組成服務(wù)器:pbs_server調(diào)度器:pbs_sched執(zhí)行器:pbs_mom命令行:用戶腳本,管理命令等2022/12/1912PBS的基本原理2022/12/1913PBS的優(yōu)缺點支持系統(tǒng)級檢查點功能(需底層操作系統(tǒng)支持)很好的大規(guī)模擴展性獨立的調(diào)度模塊**支持作業(yè)依賴符合POSIX1003.2d標準--只支持Unix類操作系統(tǒng)--多集群協(xié)作功能有限--不支持用戶級檢查點功能2022/12/1914術(shù)語節(jié)點(node)

一個單一的操作系統(tǒng)映像,一個統(tǒng)一的虛擬內(nèi)存映像一個或多個cpu,一個或多個IP地址的計算機系統(tǒng)被稱之為一個節(jié)點。通常執(zhí)行主機(executionhost)也被稱之為節(jié)點。節(jié)點屬性

隊列、服務(wù)器和節(jié)點都有與自己相關(guān)的屬性,這些屬性提供控制信息。與節(jié)點相關(guān)的屬性有:狀態(tài)、類型、虛擬處理器的個數(shù)、作業(yè)列表(本節(jié)點被分配給的作業(yè))以及節(jié)點的特性?!?/p>

節(jié)點特性

為了提供一組節(jié)點的分配的方法,零個或者多個特性被賦給每個節(jié)點。這個特性不過是一串對于PBS沒有含義的字母和數(shù)字的組合(第一個字符必須是字母)。2022/12/1915PBS安裝解壓源文件包

[root@node1/public]#tar-zxvfopenpbs-2.3.16.tar.gz編譯設(shè)置

[root@node1/public/OpenPBS_2.3.16]#./configure--disable-gui--set-server_home=/var/spool/pbs--enable-docs--x-libraries=/usr/X11R6/lib64

其中,--x-libraries=/usr/X11R6/lib64是在X86_64(AMD64或EM64T)上安裝時,需要指明系統(tǒng)64位庫的位置。編譯安裝

[root@node1/public/OpenPBS_2.3.16]#make [root@node1/public/OpenPBS_2.3.16]#makeinstall2022/12/1916PBS在機群上安裝

由于節(jié)點系統(tǒng)相同,因而可以用如下SHELLscript在node2~node8上安裝;

#!/bin/bash foriin`seq28` do echo“node$i----------------------------------“rshnode$i“cd/public/openpbs;makeinstall” echo“-------------------------------------------“ echo“”done2022/12/1917服務(wù)進程配置和啟動文件系統(tǒng)配置文件/etc/pbs.conf #!/bin/sh pbs_home=/var/spool/pbs指定系統(tǒng)的pbs的設(shè)置的目錄位置

pbs_exec=/usr/local指定pbs可執(zhí)行程序的目錄位置

start_server=1 start_sched=1當為1是表示守護進程啟動,0為守護進程不啟動

start_mom=1

系統(tǒng)啟動腳本/etc/init.d/openpbs

Server的系統(tǒng)啟動腳本/etc/init.d/pbs_serverScheduler系統(tǒng)啟動腳本/etc/init.d/pbs_schedMom系統(tǒng)啟動腳本/etc/init.d/pbs_mom2022/12/1918Server端設(shè)置初始化server:(第一次運行或者重新配置) /usr/local/sbin/pbs_server–tcreateServer配置目錄

/var/spool/pbs/server_priv/節(jié)點屬性聲明:/var/spool/pbs/server_priv/nodes

node2R220Anp=2 node3R220Anp=2 node4dualcorenp=4 node5dualcorenp=4 node6R4280Anp=4 node7R4280Anp=42022/12/1919mom端設(shè)置mom配置目錄:/var/spool/pbs/mom_priv/mom配置文件:/var/spool/pbs/mom_priv/config

#MOMserverconfigurationfile#ifmorethanonevalue,separateitbycomma.##ruleisdefinedbythename$ideal_load1.5$max_load2

##hostallowedtoconnecttoMomserveronunprivilegedport$restricted*.

##logevent:#0x1fflogallevents+debugevents#0x0ffjustallevents$logevent0x0ff

##hostallowedtoconnecttomomserveronprivilegedport$clienthostnode1

##alarmifthescripthangortakeverylongtimetoexecute$prologalarm30

2022/12/1920Server端的動態(tài)設(shè)置PBS要能正常運行還需要通過qmgr命令的server進行配置,設(shè)置一些屬性。輸入qmgr命令進入配置交互命令。下面是讓PBS可以正常運行的一些步驟。創(chuàng)建隊列createqueue隊列名queue_type=Excuttion打開和啟動隊列setqueue隊列名enable=t,started=t打開調(diào)度setserverscheduling=t設(shè)置默認隊列setserverdefault_queue=隊列名2022/12/1921qmgr命令(管理員使用)輸入qmgr進入交互式模式后即可輸入各種命令

qmgr動作:對象類型和操作符

動作對象類型對象名屬性操作符值(,屬性操作符值)……create創(chuàng)建一個對象delete刪除一個對象set設(shè)置對象的屬性unset除去對象的屬性print打印對象的屬性list列出對象的屬性server服務(wù)器=queue隊列+=node節(jié)點-=2022/12/1922PBS隊列設(shè)置導入server配置文件:

[root@node1root]#qmgr<queue.conf輸出配置文件:

[root@node1root]#qmgr–c“printserver”>queue.conf配置文件例子:

createqueuedefault setqueuedefaultqueue_type=execution setqueuedefaultmax_running=20 setqueuedefaultenabled=True setqueuedefaultstarted=True setserverscheduling=True setservermax_user_run=20 setserverdefault_queue=defaultsetserverquery_other_jobs=True2022/12/1923Scheduler調(diào)度行為配置Scheduler的行為由配置目錄下的sched_priv/sched_config文件進行控制Sort_by關(guān)鍵字控制調(diào)度算法可以選擇的選項為

no_sort,shortest_job_first,longest_job_first,smallest_memory_first,largest_memory_first,high_priority_first,low_priority_first,multi_sort,fair_share,large_walltime_first,short_walltime_first修改這個文件后重新啟動scheduler即可。2022/12/1924內(nèi)容任務(wù)管理系統(tǒng)概述PBS作業(yè)調(diào)度系統(tǒng)作業(yè)調(diào)度系統(tǒng)的使用2022/12/1925PBS的使用步驟準備:編寫描述改作業(yè)的腳本,包括作業(yè)名,需要的資源等。提交:使用qsub命令將該作業(yè)提交給PBS服務(wù)器排隊:服務(wù)器將該任務(wù)排入適當?shù)年犃姓{(diào)度:服務(wù)器檢查各工作節(jié)點的狀態(tài)是否符合該作業(yè)的要求,并進行調(diào)度。執(zhí)行:當條件滿足時,作業(yè)被發(fā)給相應(yīng)的執(zhí)行服務(wù)器執(zhí)行。程序運行時執(zhí)行服務(wù)器會收集程序的標準輸出和標準錯誤流,等程序結(jié)束時,將這些信息返回給用戶。查詢和調(diào)整:當作業(yè)在運行時,用戶可以使用qstat進行狀態(tài)查詢。用戶發(fā)現(xiàn)作業(yè)提交錯誤時,可以使用qdel刪除正在運行的作業(yè)。查看結(jié)果:使用文本編輯軟件vi或者系統(tǒng)命令cat,less等查看輸出及錯誤信息顯示。2022/12/1926PBS的基本命令在PBS系統(tǒng)中,用戶使用qsub命令提交用戶程序。用戶運行程序的命令及PBS環(huán)境變量設(shè)置組成PBS作業(yè)腳本,作業(yè)腳本使用如下格式提交到PBS系統(tǒng)運行:[zhaocs@node1~]$qsub<PBS作業(yè)腳本>2022/12/1927qsub運行參數(shù)運行參數(shù)說明-a<作業(yè)開始運行的時間>向PBS系統(tǒng)指定作業(yè)運行的開始時間。作業(yè)運行時間格式為:[[[[CC]YY]MM]DD]hhmm[.SS]-A<用戶名>使用不同的用戶來提交作業(yè),缺省使用當前用戶名-o<標準輸出文件的路徑>-e<標準錯誤輸出的路徑>該參數(shù)指定標準錯誤輸出的位置,缺省的情況下,PBS系統(tǒng)把標準輸出和標準錯誤輸出放在用戶qsub命令提交作業(yè)的目錄下。標準錯誤輸出:<作業(yè)名>.o<作業(yè)號>標準錯誤輸出:<作業(yè)名>.e<作業(yè)號>路徑使用如下格式標準:[<節(jié)點名>:]<路徑名>-N<作業(yè)名>指定提交的作業(yè)名-q<目標隊列>指定作業(yè)提交的目標隊列,其中目標隊列可以是目標隊列、目標節(jié)點名或者是目標節(jié)點上的隊列。如果目標隊列是一個路由隊列,那么服務(wù)器可能把作業(yè)路由到新的隊列中。如果該參數(shù)沒有指定,命令qsub會把作業(yè)腳本提交到缺省的隊列中。-l<申請資源列表>該參數(shù)指定作業(yè)腳本申請的PBS系統(tǒng)資源列表。申請資源列表使用如下格式:

<資源名>[=[<數(shù)量>]][,資源名[=[<數(shù)量>]],…..]例如作業(yè)希望申請在雙路節(jié)點上申請5個CPU資源的情況,則可以在腳本中如下:#PBS–lnodes=2:ppn=2+:ppn=12022/12/1928PBS作業(yè)腳本注釋,以“#”開頭PBS指令,以“#PBS”開頭SHELL命令#PBS–Nvasp.Hg#PBS–lnodes=8:ppn=2echo"Thisjobsis"$PBS_JOBID@$PBS_QUEUEcd$PBS_O_WORKDIRmpirun-np16-machinefile$PBS_NODEFILE./vasp2022/12/1929PBS的環(huán)境變量變量名說明登陸SHELL繼承來的變量包括$HOME,$LANG,$LOGNAME,$PATH,$MAIL,$SHELL和$TZ。$PBS_O_HOSTqsub提交的節(jié)點名稱$PBS_O_QUEUEqsub提交的作業(yè)的最初隊列名稱$PBS_O_WORKDIRqsub提交的作業(yè)的絕對路徑$PBS_JOBID作業(yè)被PBS系統(tǒng)指定的作業(yè)號$PBS_JOBNAME用戶指定的作業(yè)名,可以在作業(yè)提交的時候用qsub–N<作業(yè)名>指定,或者在PBS腳本中加入#PBS–N<作業(yè)名>。$PBS_NODEFILEPBS系統(tǒng)指定的作業(yè)運行的節(jié)點名。該變量在并行機和機群中使用。當在PBS腳本中用#PBS–lnodes=2:ppn=2指定程序運行的節(jié)點數(shù)時,可以使用$PBS_NODEFILE在腳本中引用PBS系統(tǒng)指定的作業(yè)運行的節(jié)點名。比如:#PBS–lnodes=2:ppn=2mpirun–np4–machinefile$PBS_NODEFILE<程序名>$PBS_QUEUEPBS腳本在執(zhí)行時的隊列名2022/12/1930PBS作業(yè)腳本注釋,以“#”開頭PBS指令,以“#PBS”開頭SHELL命令#PBS–Nvasp.Hg#PBS–lnodes=8:ppn=2#PBS–q@node1echo"Thisjobsis"$PBS_JOBID@$PBS_QUEUEcd$PBS_O_WORKDIRmpirun-np16-machinefile$PBS_NODEFILE./vasp2022/12/1931PBS作業(yè)腳本舉例#這是一個串行作業(yè)腳本的例子#PBS–NLoop.out#PBS–lnodes=1:ppn=1cd/public/home/zhaocs/test/./a.out>$HOME/result/a.result#這是一個并行作業(yè)腳本的例子#PBS–Nvasp.Hg#PBS–lnodes=8:ppn=2#PBS–q@node1echo"Thisjobsis"$PBS_JOBID@$PBS_QUEUEcd$PBS_O_WORKDIRmpirun-np16-machinefile$PBS_NODEFILE./vasp2022/12/1932詳細示例編輯PBS腳本內(nèi)容如下:(注意,#PBS行不是注釋,所有說明行均以###開始,即紅色字體部分)###聲明作業(yè)名為mpi#PBS-Nmpi###申請資源數(shù)為10個節(jié)點,每個節(jié)點16個cpu

#PBS-lnodes=10:ppn=16###將標準輸出信息與標準錯誤信息合并輸出到文件中#PBS-joe###指定作業(yè)提交到low隊列#PBS–qlow###估計最大運算時間為1000小時,若沒有設(shè)置這項,系統(tǒng)為自動按所在隊列默認walltime處理#PBS-lwalltime=1000:00:002022/12/1933###在作業(yè)結(jié)束時,給用戶發(fā)郵件#PBS-me###進入作業(yè)調(diào)度目錄cd$PBS_O_WORKDIR###計算申請的cpu數(shù)目NP=`cat$PBS_NODEFILE|wc-l`###設(shè)置計算所需要的環(huán)境變量,如使用GNU版OpenMPI運行程序###程序運行部分,使用infiniband網(wǎng)運行此程序mpirun-np$NP-machinefile$PBS_NODEFILE--mcabtlself,openibcpi-openmpi2022/12/1934一個復(fù)雜的PBS作業(yè)腳本#!/bin/bash#PBS-Njobname#PBS-lnodes=4:ppn=2cat`echo$PBS_NODEFILE`>$HOME/$PBS_JOBID.nodesfornodein`cat$HOME/$PBS_JOBID.nodes`dorsh$nodemkdir/tmp/$PBS_JOBIDrsh$nodecp-rf$PBS_O_WORKDIR/*/tmp/$PBS_JOBID/donecd/tmp/$PBS_JOBIDmpirun-np8-machinefile$PBS_NODEFILE$HOME/bin/vaspcp-rf/tmp/$PBS_JOBID/*$PBS_O_WORKDIR/fornodein`cat$HOME/$PBS_JOBID.nodes`dorsh$noderm-rf/tmp/$PBS_JOBIDdonerm$HOME/$PBS_JOBID.nodes2022/12/1935查詢和取消作業(yè)[dawning@node1~]$qstat@node1JobidNameUserTimeUseSQueue--------------------------------------------------------------93.node1test.pbszhaocs0Rdefault95.node1vasp.Hgvasp0Edefault111.node1structureamber0Qdefault[zhaocs@node1~]$qdel93.node12022/12/1936查詢作業(yè)運行的位置[zhaocs@node1~]$pbsnode-a[zhaocs@node1~]$qstat–f[zhaocs@node1~]$qstat-r2022/12/1937ansys單節(jié)點計算ansys110-np4-iwing.inp跨節(jié)點計算:ansys110-dis-machinesnode22:4:node23:4-iwing.inp2022/12/1938ansys.pbs#!/bin/bash#PBS-Nansys_wing#PBS-lnodes=1:ppn=8#PBS-joermhost.list-rffornodein`cat$PBS_NODEFILE`doecho"-eMPI_REMSH=/usr/bin/rsh-h$node-np1/home/demo/fluent/bin/ansys_inc/v110/ansys/bin/ansysdis110-dis-mpiHPMPI"done>host.listansys110-mpifile./host.list-iwing.inp2022/12/1939創(chuàng)建ma-----------------------------------node22node23------------------------------------需要注意最后有一個空行。fluent3d–t16–cnf=./ma–p-g–ifluent.jou2022/12/1940fluent.pbs#!/bin/bash#PBS-Nfluent_8cpu#PBS-lnodes=2:ppn=4#PBS-joeNPROCS=`wc-l<$PBS_NODEFILE`cd$PBS_O_WORKDIRfluent3d-t$NPROCS-pib.ibv-cnf=$PBS_NODEFILE-g-im1>&m1_n2p8.out2022/12/1941cfxcfx5solve-defBenchmark.def-par-dist-start-method“HPMPIdistributedParallel”‘node1*2,node2*2’2022/12/1942cfx.pbs#!/bin/bash#PBS-NCFX_8cpu#PBS-lnodes=4:ppn=2CFX_DEF_FILE=Benchmark.def########################################################################Youdon'tneedtomodifythelinesbelow########################################################################PeHostfile2MachineFile(){cat$1|whilereadline;do#echo$linehost=`echo$line`2022/12/1943#addherecodetomapregularhostnamesintoATMhostnamesif[-z$mList];thenmList=$host"*1"elsemList=$mList,$host"*1"fiecho$mListdone}CFX_PBS_NODEFILE="/tmp/cfx_`whoami`_$PBS_JOBID"PeHostfile2MachineFile$PBS_NODEFILE>$CFX_PBS_NODEFILENPROCS=`wc-l$PBS_NODEFILE`cd$PBS_O_WORKDIR/public/software/ansys_inc/v110/CFX/bin/cfx5solve-def$CFX_DEF_FILE-par-dist`tail-n1$CFX_PBS_NODEFILE`-start-method"HPMPIDistributedParallel"2022/12/1944abaqus/public/software/ABAQUS/6.8-PF3/site/abaqus_v6.env-----------------------------------mp_mpi_implementation=HPhpmpipath=driverUtils.locateFile(os.environ.get('ABA_PATH',''),'External/mpi/hpmpi-2.2.5.1/bin','mpirun')mp_mpirun_path={HP:hpmpipath}mp_rsh_command='rsh-n-l%U%H%C'mp_host_list=[[‘node1’,8],[‘node2’,8]]-----------------------------------abq68pf3-jexamplecpus=162022/12/1945abaqus.pbs#!/bin/sh#PBS-NABAQUS_4cpu#PBS-lnodes=2:ppn=2#PBS-joeINPUT_FILE="circuit.inp"OUTPUT_FILE="abaqus.log"ABAQUS_EXEC="/public/software/abaqus/Commands/abaqus"ABAQUS_ENV="/public/software/abaqus/6.5-6/site/abaqus_v6.env"#forabaqus/standardABAQUS_STANDARD_MEMORY="4096mb"ABAQUS_PRE_MEMORY="4096mb"ABAQUS_SCRATCH="/tmp"ABAQUS_MP_MODE="THREADS"2022/12/1946#forabaqus/explictABAQUS_MP_MODE="MPI"########################################################################Youdon'tneedtomodifythelinesbelow########################################################################GetNodeList(){np=1whilereadline;dohost=$lineif[!-z$lasthost];thenif[$host=$lasthost];thennp=`expr$np+1`2022/12/1947elseif[-z$mList];thenmList=[\'$lasthost\',$np]elsemList=$mList,[\'$lasthost

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論