X-Storage光盘库控制系统用户手册

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

光盘库主控板嵌入式系统软件
用户手册
2016-05-17
上海美佳达计算机工程有限责任公司
MIDAS Computer Engineering Co., Ltd
地址:上海市共和新路1207号凤凰城市工业
园9栋3层
邮编:200070
目录
1 盘库主控板控制功能 (4)
1.1功能描述 (4)
1.2简要安装和启动过程: (4)
1.2.1分区: (4)
1.2.2安装: (4)
1.2.3解压 (4)
1.2.4配置 (4)
1.3目录说明 (4)
1.3.1 controll_start.sh 自启动脚本。

(5)
1.3.2 midasfs_start.sh 文件系统自启动脚本 (5)
1.3.3:info目录 (6)
1.3.4 log目录 (6)
1.3.5 delay目录 (8)
1.3.6 cache目录 (8)
1.3.7 tmp目录 (8)
1.3.8 trash目录 (8)
1.3.9 mirror目录 (8)
1.4 SOCKET接口说明 (10)
1.4.1 GETDISKINFO (10)
1.4.2 BURNISOFILE (10)
1.4.3 BURNRDIR (10)
1.4.4 BURNLDIR, (10)
1.4.5 EXPORTDISC, (10)
1.4.6 IMPORTDISC, (11)
1.4.7 PRINTDISC, (11)
1.4.8 OPENDOOR, (11)
1.4.9 QUERYSTATION, (11)
1.4.10 FINDFILE, (12)
1.4.11 FINDFILEOFFLINE, (13)
1.4.12 DUMPMEDIA, (13)
1.4.13 QBURNPROGRESS, (13)
1.4.14 QOFFLINEJOB, (13)
1.4.15 CHKSLOT, (13)
1.4.16 DISCRETURN, (13)
1.4.17 MKISO (13)
1.5 系统内部框图 (14)
1.5.1 Control 进程函数调用图。

(14)
1.5.2 midasfs 进程函数调用图。

(15)
1.6 光盘库调用示例: (16)
1.6.1:查询盘库是否忙碌和空盘 (16)
1.6.2:组织需要刻录的数据,发起刻录。

(16)
1.6.3:查询刻录进度和结果 (16)
2 盘库相关API (17)
2.1、连接服务: (17)
2.2、认证: (18)
2.3、基本命令: (18)
(1)QSYI(查询盘库状态信息) (18)
(2)COMV(机械手移盘) (19)
(3)CDIN和CDOU(光驱进出) (20)
(4)MLIN和MLOU(邮箱进出) (20)
(5)EXPO(邮箱出盘) (20)
(6)CKST(检查盘槽) (20)
(7)OPDR (请求开门) (21)
(8)CLFM (清盘库内存) (21)
3 摆渡机相关API (21)
3.1 STTX 传输: (21)
3.2 API示例: (21)
3.2.1:移盘概要流程 (21)
3.2.2:开门换盘概要流程 (21)
1 盘库主控板控制功能
1.1功能描述
系统运行在centos6.6 x86 64位linux系统下,分为两个服务进程,controll进程是控制进程,midasfs是虚拟文件服务进程,实现控制盘库和文件系统读取的功能。

主要功能列表:
1:目录的即时刻录,获取记录结果,结果中包含盘的位置,电子标签,分盘文件表等信息。

2:SMBA远程目录的刻录。

3:自动盘点放入盘库的光盘。

4:通过虚拟文件系统直接读取盘库中的光盘,机械手自动换盘。

1.2简要安装和启动过程:
1.2.1分区:
系统分区最好建一个独立分区,/jukebox/挂载,数据和系统文件分开,如果是已要安装在用户系统上,建立目录也可以正常运行。

1.2.2安装:
Centos 6.6必须安装64位系统,完全安装,设定双IP地址。

1.2.3解压
安装包到指定目录下,设定自启动,配置动态库链接脚本,重启机器。

1.2.4配置
windows客户端,连接完成,可以正常进行刻盘和打印任务。

1.3目录说明
1.3.1 controll_start.sh 自启动脚本。

/jukebox/controll /jukebox/config.xml
Config.xml 启动配置文件。

<?xml version="1.0" encoding="UTF-8"?>
<Root>
<stationcnt>2</stationcnt>
<workstation1>
<stationplug>1</stationplug>
<stationid>0</stationid>
<ServerPort>2020</ServerPort>
<ServerIP>111.111.1.100</ServerIP>
<PciHost></PciHost>
</workstation1>
<workstation2>
<stationplug>0</stationplug>
<stationid>1</stationid>
<ServerPort>2020</ServerPort>
<ServerIP>192.168.0.250</ServerIP>
<PciHost>host1</PciHost>
</workstation2>
</Root>
这个文件配置总控要连接的盘库设备IP地址和端口。

其中PCIhost如果的空的情况是盘库直接用SATA线连光驱,如果是通过HBA的卡连接光驱的,需要指明是接在那个PCI上,一般是host0。

如果服务器没有外接的光驱或是内置的DVD光驱,这种情况即使是用HBA卡,也可以置空该位,总控会自已寻找光驱,如果象DELL服务器的机型有的有内置光驱,这里需要配置PCI卡位置。

如果无法确认卡是装在PCI的那个位置,可以到/sys目录下,用find /sys –name sr*来判断光驱到底是接在HOST几上。

1.3.2 midasfs_start.sh 文件系统自启动脚本
./midasfs -oallow_other,rw /jukebox/mirror /groups
/jukebox/mirror是盘点生成的目录文件,/groups是系统映射文件夹。

正常运行此脚本时,系统会fork 自已,然后进入后台运行,如果想进入调试模式,修改启动脚本,将打印状态到屏幕。

./midasfs -d -oallow_other,rw /jukebox/mirror /groups
文件系统部分只适合单盘小文件的归并,当数据被分盘时,例如分到N张盘上,如果用文件系统进行读取,只会使用到一个光驱,这对于大数据恢复是无法接受的,这时必须使用下文提到的DUMP MEDIA方法进行T 级的恢复任务。

1.3.3:info目录
此目录下存放着盘库中所有盘的信息。

1.3.3.1 光盘信息文件
,前四位是盘槽号,里面存放内容如下,65,BD-R SRM, MEI/T02,blank,1,empty,1,2048,unformatted,0,50050629632,5,10.0x4495=44950KB/s,8.0x4495=35960K
B/s,6.0x4495=26970KB/s,4.0x4495=17980KB/s,2.0x4495=8990KB/s,,,,,,
蓝光盘会有光盘厂商内容,DVD则不会包含此信息,表明此种类型光表的能接受的读取和刻录速度。

0003.info
65,BD-R SRM, MEI/T02,appendable,2,empty,2,0,,1,11943870464,5,10.0x4495=44950KB/s,8.0x4495=35960KB/s,6.0x4 495=26970KB/s,4.0x4495=17980KB/s,2.0x4495=8990KB/s,,,,我的光盘,udf,
这个信息是表明这张盘被刻录过,并且卷标和文件系统也会存放。

1.3.3.2 controll.map
这个文件是全盘库的二进制存放镜象,所有盘库的信息全在这个文件中,如果有用户想从文件系统解析盘
库信息,可以从这个文件解析。

具体二进制格式可以参看总控的头文件数据结构。

1.3.4 log目录
1.3.4.1 运行日志文件
controll-20160402.log
这种类型的文件是运行日志文件,每天会生成一个日志文件,记录内容如下:
2016/04/02 19:52:14.381;INFO ;controll;0;0004;Server Start ...
2016/04/02 20:13:39.986;INFO ;controll;0;0004;BURN /jukebox/tmp/S3*******.DVD S3******* media begin,the 0 times !
2016/04/02 20:13:47.264;INFO ;controll;0;0004;BURNDISK S3******* START ,move 1 media to /dev/sr1 !
2016/04/02 20:18:17.933;INFO ;controll;0;0004;BURNDISK S3******* END , 1 media to /dev/sr1 !
2016/04/02 20:18:53.814;INFO ;controll;0;0004;BURN /jukebox/tmp/S3*******.DVD S3******* media success end! the 0 times ! -:)
2016/04/02 20:32:01.434;INFO ;controll;0;0004;BURN /jukebox/tmp/S000000001.DVD S000000001 media begin,the 0 times !
2016/04/02 20:32:06.427;INFO ;controll;0;0004;BURN /jukebox/tmp/S000000003.DVD S000000003 media begin,the 0 times !
2016/04/02 20:32:08.861;INFO ;controll;0;0004;BURNDISK S000000001 START ,move 5 media to /dev/sr1 !
2016/04/02 20:32:17.581;INFO ;controll;0;0004;BURNDISK S000000003 START ,move 6 media to /dev/sr0 !
2016/04/02 20:34:42.929;INFO ;controll;0;0004;BURNDISK S000000003 END , 6 media to /dev/sr0 !
2016/04/02 20:35:19.154;INFO ;controll;0;0004;BURN /jukebox/tmp/S000000003.DVD S000000003 media success end! the 0 times ! -:)
2016/04/02 20:36:34.888;INFO ;controll;0;0004;BURNDISK S000000001 END , 5 media to /dev/sr1 !
日志中记录有时间和操作的详细日志。

注意:日志中如果光盘的换面刻录失败时,会有警告,可以根据提求确定光驱编号,及早发现有问题光驱。

1.3.4.2 刻录日志文件
日志文件以卷标为开头:
[root@hz-midas log]# cat D0002.log
<INFO>,2016/04/02 22:19:11,Start Split /jukebox/tmp/D0002,type 3!
<SPLIT>,2016/04/02 22:19:13,/jukebox/tmp/D0002,2,type DVD!,
<INFO>,2016/04/02 22:19:13,Start mkiso /jukebox/tmp/D0002-2-1.DVD ,Num 1 disc,type DVD!
<INFO>,2016/04/02 22:23:59,End mkiso /jukebox/tmp/D0002-2-1.DVD,Num 1 disc,type DVD!
<INFO>,2016/04/02 22:24:00,Start mkiso /jukebox/tmp/D0002-2-2.DVD ,Num 2 disc,type DVD!
<INFO>,2016/04/02 22:28:33,End mkiso /jukebox/tmp/D0002-2-2.DVD,Num 2 disc,type DVD!
<INFO>,2016/04/02 22:28:36,Start burn /jukebox/tmp/D0002-2-2.DVD ,the 0 times !
<INFO>,2016/04/02 22:28:37,Start burn /jukebox/tmp/D0002-2-1.DVD ,the 0 times !
<END>,2016/04/02 22:37:03,D0002(2-2),7,,the 0 times !
<END>,2016/04/02 22:38:32,D0002(2-1),8,,the 0 times !
说明:<SPLIT>标签说明分了几张盘,
<END>标签表明刻的是第几张盘成功。

<WARNING>标签表明是出错信息,后续跟着出错原因:
<NOTVALID:%s,%s is not valid iso file!> 无效刻录ISO文件。

<WARNING>,%s,<NOBLANKDISC:%s,Move to delay work!Please check Blank disk!>非空的光盘,无法记录。

移到delay目录。

<WARNING>,%s,<XNETDOWN:%s,Move to delay work!Please check network!> 与盘库的连接断开,无法再刻录,移到delay目录。

<WARNING>,%s,<FAILSPLIT: %s ,%d,Fail Split disc,type %s!>分割失败。

<INFO>,2016/04/02 22:19:12,Start mkiso /jukebox/tmp/D0001-2-1.DVD ,Num 1 disc,type DVD!
<INFO>,2016/04/02 22:24:00,End mkiso /jukebox/tmp/D0001-2-1.DVD,Num 1 disc,type DVD!
记录打包的时间和类型。

这个日志文件用于记录所有刻录过程中的步骤。

1.3.4.3 光驱日志
记录光驱的刻盘的过程,此日志不会长期保留,只记录上次光驱的刻录过程。

xorriso : UPDATE : 4399 of 4399 MB written (fifo 0%) [buf 91%] 0.0x.
xorriso : UPDATE : 4399 of 4399 MB written (fifo 0%) [buf 91%] 0.0x.
xorriso : UPDATE : Thank you for being patient. Working since 489 seconds.
Writing to '/dev/sr0' completed successfully.
xorriso : NOTE : Re-assessing -outdev '/dev/sr0'
xorriso : NOTE : Disc status unsuitable for writing
Drive current: -outdev '/dev/sr0'
Media current: DVD-ROM
Media status : is written , is closed
Media summary: 1 session, 2252500 data blocks, 4399m data, 0 free
1.3.5 delay目录
此目录下存放打包未刻录成功的ISO文件,一般原因是因为盘库关机,或者是无空盘,这时开门加盘或者是盘库开机后,会自动去找这个未刻录完的ISO去接着刻录,前提是有足够的空盘,如果还是没有空盘,接着会被放回delay目录。

可以根据上篇的卷标对应的日志查对delay目录下的文件,例如发生NOBLANKDISC 或是XNETDOWN时,未刻录的ISO就会被移到此目录下。

1.3.6 cache目录
此目录用于存放光盘对应的镜象ISO,当想复制一张盘,或者将常用ISO导出当缓冲时,在盘库的控制界面可以点盘槽进行导出,导出生成的文件为UDF文件,前缀名为盘的盘槽号。

此目录还有一个用处是用于一组大量盘的合并,比如说一个目录被成上百张的蓝光盘,比如说大庆的客户,这些总控会关这些盘的全部导成ISO,这样可以将盘库或是集群中的所有光驱全部用起来,极大的提高恢复速度,文件系统的恢复方法是要解析目录结构,当光盘上目录或是文件超十万时,基本已经慢到1M以内,而通过导ISO,速度是稳定的,是通过连续读写块的的方式实现的。

另一个大的作用是上层统计常用的盘,根据容量导成ISO,这样当客户访问时可以通过ISO 进行读取,利用硬盘空间减少对光盘的访问,提高盘库的运行寿命。

1.3.7 tmp目录
此目录下存放用来分盘或是打包的目录,以及打包生成正在刻录的ISO镜象,打印用的PRT 文件。

另外此目录还有一个很重要的作用,那就是刻录超过三遍都无法刻录成功的光盘内容,这时系统只好将这种镜象保存在此目录下,写下目志,供用户来人工干预,一般情况下是设备的原因造成的,数据不成功是不会被删掉的。

1.3.8 trash目录
此目录是系统用的目录,当有盘仓变动时,会将盘仓对应的数据移到此目录下,系统后台有进程会分时将数据删掉。

只用于系统,不对外使用。

1.3.9 mirror目录
这个目录是读和写的主目录,盘库盘点出来的光盘的目录结构,用户要刻录的目录,以及用户要通过文件系统看到的盘库上的目录结构。

1.3.9.1 用户数据存贮
用户可以通过SAMBA或者是FTP或者移动硬盘方式将数据拷到此目录下,完全可以当共享目录使用。

1.3.9.2 用户数据刻录
当用户上传数据目录到此目录后,可以在此目录下生成MIDASBURN.txt的文件,当控制程序检测到此特殊文件时,会分析此文件,然后根据文件中内容进行记录。

MIDASBURN.txt包含三行内容:
1:要刻的盘的类型。

DVD,BD25,BD50,BD100,BD128,分别表示要刻的不同盘的类型。

2:卷标,卷标可以包含中文,中文长度按utf-8计算,不能超过8个中文汉字,这是ISO规范的部分,如果超过将会被切成固定长度。

3:盘槽号,此数据刻录到指定的光盘。

MIDASBURN.txt 示例:
BD50
光盘记录测试
当检测到文件目录下有此特殊文件时,系统先将目录移到tmp目录下,是为了防止数据再次被增删改,然后进行打包刻录等操作,具体过程请参看LOG目录对应的卷标文件。

1.3.9.3 ISO类型文件刻录。

当在此目录下有后缀名是.DVD .BD25 .BD50 .BD100 .BD128的文件时,系统会检查此类型文件是否是有效的ISO文件,如果是的话,将此文件移到tmp目录下,然后直接寻找对应的光盘类型进行刻录。

这个准备用于集群系统分任备式的刻录,集群在分盘打包后,然后将要刻录的任务队列分布到不同的盘库上,然后进行刻录。

注意事项:用户在上传中不能直接用此类型的文件后缀名,只有决定刻录时,改后缀名,然后才可以进行刻录。

1.3.9.4指定光盘的打印
当在此目录下生成.prt文件时,总控会默认此文件是GBK编码,然后先转成UTF-8,再转为PDF文件打印,文件名的前缀是指定的盘槽号。

此类型的文件也可以与MIDASBURN.txt混用,此时将会先刻录再打印。

注意:此部分功能只实现了简单的几行文本打印,平台将来得用可视化工具生成PDF文件,然后打印到指定盘槽,这样可以实现彩色图片和文字混排的效果。

1.3.9.5 文件系统读取
此目录会被midasfs进程转为虚拟的文件系统,并且mount到/groups 目录下,当有进程访问/groups目录下的虚拟文件时,midasfs会判断此目录是未刻录数据还是已刻录数据,如果是未刻录数据,直接读硬盘,如果是盘库中的数据,调用盘库接口,从光盘上直接读取。

1.4 SOCKET接口说明
Control 进程开启2021端口,接口采用,分割的字符串,回车为结束。

通用格式为:
命令,参数1,参数n, 回车
1.4.1 GETDISKINFO
说明:GETDISKINFO,XX,
盘点光盘命令,XX表示盘槽号。

返回值:
RET,GETDISKINFO,XX,-1,
END
XX表示盘点的盘仓号,-1失败,0 成功。

1.4.2 BURNISOFILE
因为有文件系统的ISO调用了,这个内部实现,外部接口是否还要调。

1.4.3 BURNRDIR
刻录远程的SAMBA目录。

1.4.4 BURNLDIR,
刻录本地目录
1.4.5 EXPORTDISC,
从邮箱出盘。

EXPORTDISC,3,
RET,ExportDisc,3,0,
END
1.4.6 IMPORTDISC,
从邮箱进盘。

IMPORTDISC,
RET,ImportDisc,3,
END
如果邮箱回来有盘,自动触发盘点。

1.4.7 PRINTDISC,
指定光盘打印。

1.4.8 OPENDOOR,
光盘库开门。

OPENDOOR,
RET,OpenDoor,0,
END
成功开门后,机械手沉底,开门可以进行操作。

这时QUERYSTATION返回的JASON中门的状态为开门,当用户关门后,jason会返回已关门,这时会自动chkslot,自动盘点,可以在控制界面中看到运行结果,jason的返回结果中有正在运行的队列数,当队列数为0时,盘库进入待命状态,同时检查上次的delay目录是否有没刻完的文件,进行刻录。

插拨盘仓时会触犯发修改文件系统,盘仓拨掉后整个盘仓对应的目录会被移掉,如果是增加的盘仓则会自动盘点生成新的目录供文件系统方问。

1.4.9 QUERYSTATION,
获取盘库信息,返回jason格式。

{
"MachineType":" MDS-CHG MC-8100 ",
"DoorStatus":0, "EventCnt":0,
"Mag":[
{"MagNo":0,
"Rfid":" ",
"Slot":[
{"id":1,"cdexist":2,"trayexist":2, "ischecked":1,"isblank":1,"mediatype":" BD-R SRM ","label":" ","slot_status":78 },
{"id":2,"cdexist":1,"trayexist":1, "ischecked":1,"isblank":0,"mediatype":"
BD-R SRM ","label":" 555 ","slot_status":78 },
{"id":3,"cdexist":1,"trayexist":1, "ischecked":1,"isblank":0,"mediatype":" DVD-ROM ","label":" 卷标23akdfj ","slot_status":78 },
{"id":4,"cdexist":1,"trayexist":1, "ischecked":1,"isblank":0,"mediatype":" DVD-ROM ","label":" y0000000001 ","slot_status":78 },
………
"Drivers":[{"id": " /dev/sr0 ","ishavemedia":2,"cd_src":0,"progress":" " },
{"id": " /dev/sr1 ","ishavemedia":2,"cd_src":0,"progress":" " },
{"id": " ","ishavemedia":0 ,"cd_src":0 ,"progress":" " },
{"id": " ","ishavemedia":0 ,"cd_src":0 ,"progress":" " },
{"id": " ","ishavemedia":0 ,"cd_src":0 ,"progress":" " },
{"id": " ","ishavemedia":0 ,"cd_src":0 ,"progress":" " }
]
,
"Printer":{"ishavemedia": -1, "cd_src": 0 }
}
END
从这个jason中可以获取盘库的所有信息。

"EventCnt":0, 这个是队列表,显示盘库是否在忙碌还是待命状态中。

1.4.10 FINDFILE,
查找光盘库中的文件
FINDFILE,doc,
/0005_D0002(2-1)/电子组/使用文件20130810/盘库装配电子料/WKB-001-V11/WKB-001-V11.schdoc
/0005_D0002(2-1)/电子组/使用文件20130810/盘库装配电子料/线束类/打印机内部电路板接口连线说明.doc
/0055_D0002(2-1)/电子组/开关电源/美佳达规格书.doc
………..
Total Found 154 match results in online !
查询会返回文件系统中含有查询关键字的列表,再通过文件系统可以直接读取。

支持正则表达式。

[] 表示其中的某一个字符,例如[ade] 表示a或d或e
可以用^符号做[]内的前缀,表示除[]内的字符之外的字符。

比如搜索oo前没有g的字符串所在的行. 使用'[^g]oo' 作搜索字符串
[] 内可以用范围表示,比如[a-z] 表示小写字母,[0-9] 表示0~9的数字, [A-Z] 则是大写字母们。

[a-zA-Z0-9]表示所有数字与英文字符。

当然也可以配合^来排除字符
行首与行尾字符^ $. ^ 表示行的开头,$表示行的结尾( 不是字符,是位置)那么‘^$' 就表示空行,因为只有
行首和行尾。

$表示它前面的串是在行的结尾,比如'\.' 表示. 在一行的结尾
搜索末尾是.的行
例如:
FINDFILE,doc$, 表示查找未尾是doc的。

1.4.11 FINDFILEOFFLINE,
查找已经离线的文件,返回是电子标签和盘槽号。

同FINDFILE相同,只不过查找的是已经刻过但是已经离线的文件。

1.4.12 DUMPMEDIA,
将指定盘槽光盘导出成ISO,存放在cache目录下。

DUMPMEDIA,3,
将会在cache目录下先成3.iso文件,导出过程中会是3.iso_,这时可以通过大小来判断导出进度。

1.4.13 QBURNPROGRESS,
查询刻录进度。

QBURNPROGRESS,sr1,
当用QUERYSTATION查询时,如果光驱中显示有盘在刻录,这里可以用此命令查询光驱的刻录进度,一般用于显示。

1.4.14 QOFFLINEJOB,
查询离线任务的进度。

1.4.15 CHKSLOT,
检查盘托和盘是否存。

CHKSLOT,3,
1.4.16 DISCRETURN,
回盘。

1.4.17 MKISO
本地目录切割并且生成ISO。

1.5 系统内部框图
1.5.1 Control 进程函数调用图。

主控采用多线任务队列方式执行任务。

自动连接盘库,自动检测断开,自动check slot,自动盘点,检测到指定目录有目录时自动刻盘。

主程序采用socket接口接收指令。

1.5.2 midasfs 进程函数调用图。

文件系统是独立的进程,是多线程结构,所有的函数必须是可重入线程安全型。

文件系统和总控调用相同的盘库操作库,通过system V seamphone排它访问盘库,能过共享内存交换数据。

初始化时连接盘库,读取总控建立的光盘索引表和光驱表,另开线程管理重连和断开的socket.
多用户访问同一光盘时的流程,需要能够保证并发访问的正确性,并且在多用户访问完成后,
顺利的解锁光驱,并且解锁过程不会影响到其它用户的访问。

1.6 光盘库调用示例:
1.6.1:查询盘库是否忙碌和空盘
1.6.1.1:调用socket接口QUERYSTATION指令,参见
2.9节,
其中这两项分别表明是门的状态和总控的事件队列数,事件队例数最大是6 "DoorStatus":0, "EventCnt":0,
如果门处于关门状态,并且事件队列数小于6,则可以进行下一步操作。

{"id":2,"cdexist":1,"trayexist":1, "ischecked":1,"isblank":0,"mediatype":" BD-R SRM ","label":" 555 ","slot_status":78 },
1.6.1.2 查询空盘。

这一列表明盘库所有光盘的状态,其中isblank为表明是空盘,mediatype表明是光盘类型。

如果光盘有需要刻录类型的光盘,交且有空盘,则可以进行刻录准备。

说明:这两步是刻录前准备工作,需要询问清楚设备是否满足刻录条件,不管是管理单台设备还是多台设备都必须执行这一步检查。

1.6.2:组织需要刻录的数据,发起刻录。

1.6.
2.1 组织数据的过程分类多种,通过视频采集SDK类,文件FTP,SAMBA,IPSAN,或者本地文件,只需要将需要刻录的文件通过SAMBA或者FTP方式上传到/jukebox/mirror或是/groups目录下,上传完毕后需要将所有文件关闭。

1.6.
2.2 生成刻录的触发文件。

MIDASBURN.txt是刻录的触发文件,需要将此文件在外面生成,然后mv到/jukebox/mirror/xxxx目录下,xxxx表示用户组织待刻目录。

说明:如果触发文件没有内容,默认采用BD50G光盘刻录。

触发文件必须在外面生成或者先生成别的文件名,然后写入数据后再改名为触发文件。

1.6.3:查询刻录进度和结果
当检查到/jukebox/mirror/xxxx待刻目录被移走后,开始检查QOFFLINEJOB来查询刻录进度,典型的刻录进度文件如下:
<INFO>,2016/07/12 20:50:13,Start Split /jukebox/tmp/2542,type 1! (开始分割任务)
<SPLIT>,2016/07/12 20:50:13,/jukebox/tmp/2542,1,type BD50!, (分割目录结果,分割数类型)
<INFO>,2016/07/12 20:50:13,Start mkiso /jukebox/tmp/2542.BD50 ,Num 1 disc,type BD50!(打包中)
<INFO>,2016/07/12 23:36:57,End mkiso /jukebox/tmp/2542.BD50 ,Num 1 disc,type BD50!(打包结束)
<INFO>,2016/07/13 01:12:00,Start burn /jukebox/tmp/2542.BD50 ,the 0 times !(开始刻录)
<END>,2016/07/13 02:46:02,2542,36,00000600005,the 0 times ! (刻录成功,盘仓标签,位置,重试次数。


Start print disc 36,Move to printer! (开始打印)
<info>,<PrintDisc:2016/07/13 02:50:39, print 36 disc ,send lpr!> (打印结束)
其中有几类的关键字说明一下:
<WARNING>,%s,<NOBLANKDISC:%s,Move to delay work!Please check Blank disk!>
此类说明没有空白光盘
<WARNING>,%s,<XNETDOWN:%s,Move to delay work!Please check network!>
总控连接不上盘库,文件已打包,打包的数据放入/jukebox/delay目录。

<INFO>,%s,<NODISC or INFO:%s,Cann't Get Disc info !,ret %d >
光驱读不出送入光盘的引导信息。

<INFO>,%s,<XORISOERR:%s,xorriso burn fail!>
调用外部的刻录命令失败。

说明:刻录过程中如果是刻录失败或者是光驱读不出盘,刚会自动重新换盘到别的光驱再尝试三次。

2 盘库相关API
盘库API采用SOCKET接口提供,端口号为2020,控制协议采用纯文本ASCII加换行,逗号分割参数方式提供。

注意:文本最后必须加回车,\n结尾才会处理。

2.1、连接服务:
AT91网口:系统出厂盘库IP地址是111.111.1.100,用户在开发中可以使用telnet模拟发送SOCKET指令操作盘库,如果是JAVA或是C代码则调用标准的SOCKET connect函数,端口为2020.
例:telent 111.111.1.100 2020
2.2、认证:
Socket 连接到盘库服务后,客户端会接收到服务发来的字符串,然后客户端必须发送以下字符串才能连接成功,否则连接会被远端断掉。

命令形式:RESP, (认证字符)
返回:AUTH, 0, (认证成功)
2.3、基本命令:
(1)QSYI(查询盘库状态信息)
客户端发送QSYI,到服务器,服务器返回如下格式报文。

MASTATUS关键字表明行开始。

(1):MSTATUS,START, 消息头开始。

(2):MSTATUS,MAXINFO,DeviceName:MDS-CHG MC-8100 ,MaxMag:128,MaxRec:32,MaxMail:1
返回设备类型,DeviceName表明是设备类型。

(3):MSTATUS,MACINFO,0:60:6e:83:60:c8
返回网卡MAC地址,关键字MACINFO
(4):MSTATUS,IPINFO,111.111.1.100
返回盘库设定的IP地址,关键字IPINFO
(5):MSTATUS,MAGAZINE,0,00000600005,33333333333333332222222222222222222222222222 222222
盘仓的信息,蓝色位表示盘仓编号,绿色表明是电子标签,后续跟盘槽状态信息,盘仓固为包含50个盘槽信息。

盘槽信息含义。

3:有盘有托,
2:有托无盘,
1:无托无盘
0:未知。

MSTATUS,MAGAZINE,1,00000600006,22222222222222222222222222222222222222222222222 222
盘仓信息只有插在光盘库上的才会有信息显示,根据编号就可知道盘仓位置。

盘仓编号采用从下往上,从左到右的方式编号。

(6):MSTATUS,DRIVER,0,0,20481,1,20481
光驱信息,蓝色表示光驱编号,对应盘库最下面一个光驱,绿色表示光驱进出状态,1为进到位,0为出到位。

20481为光驱的地址编号,0x5001十六进制表示,1,表示无盘,这个信息和盘槽表示方法一样,如果有盘的话,后面跟光驱中盘的来源地址。

MSTATUS,DRIVER,1,0,20482,1,20482
(7):MSTATUS,MAIL,0,0,24577,1,24577
邮箱信息,与光驱相同结构。

(8):MSTATUS,PRINTER,0,0,0x7001,28673
打印机信息,与光驱结构相同。

(9):MSTATUS,END,
信息结束。

简要说明:
1:盘仓信息返回格式:
[盘槽信息],[编号],[电子标签],[ 50个盘槽位信息]
盘槽信息示例:
MSTATUS,MAGAZINE,1,00000600006,22222222222222222222222222222222222222222222222 222
表示编号为1的盘仓,电子标签为00000600006,此盘仓只有盘托没有光盘,是个空的盘仓。

2:设备返回格式:
[设备],[编号],[0:出到位1:进到位],[坐标地址],[1:无盘2:有托3:有盘有托],[盘槽位]
光驱信息示例:
DRIVR,0, 0,20481,1,20481 ———第一个驱动器里无盘
DRIVR,0, 0,20481,3,4 ———第四个盘槽位的光盘在第一个驱动器里
(2)COMV(机械手移盘)
CMOV,0xDEST,0xSRC,
说明:设备地址按十六进制编号,所以参数采用十六进制表示,CMOV命令字后跟目的地址,最后是源地址。

如下示例:
命令形式:COMV, 0x5001, 0x4,
(把第四张盘送入第一个光驱)
返回值:
RET,0,成功移盘
RET,-1,移盘失败
RET,10,设备忙,无法移盘。

RET,21,源中没有移动的盘。

RET,31,目的地有盘。

RET,91,机械手送盘失败。

(3)CDIN和CDOU(光驱进出)
命令形式:
CDIN, 0x5001, (光驱进到位)
CDOU, 0x5001, (光驱出到位) 返回:RET 0(成功)-1(失败)
(4)MLIN和MLOU(邮箱进出)
命令形式:
MLIN ,0x6001, (邮箱进到位)
MLOU,0x6001, (邮箱出到位)
返回:RET 0(成功)-1(失败)
(5)EXPO(邮箱出盘)
EXPO,0xDEST,
命令形式:0xDEST,是要经邮箱送出的盘槽地址。

例如:EXPO ,0x4, 光盘出盘
返回:RET 0(成功)-1(失败)
(6)CKST(检查盘槽)
命令形式:
CKST ,0x31, check49号槽位
返回值:
返回:RET 0(成功)-1(失败)
(7)OPDR (请求开门)
命令形式:OPDR,
返回:RET 0(成功)-1(失败)
请求开门,如果返回成功表示机械手已经沉底,可以打开盘库门。

(8)CLFM (清盘库内存)
命令形式:CLFM,
返回:RET 0(成功)-1(失败)
返回成功时,应该将盘库重新启动,这条命令用于盘库中保存的盘的信息和盘仓不相符,造成这种情况的原因是盘库在关机时进行了盘仓操作,清掉保存的内容,系统会在开机时自动进行检查盘槽操作。

3 摆渡机相关API
3.1 STTX 传输:
命令形式:
STTX ,1, 停止传输STTX ,0, 开始传输
返回:RET 0(成功)-1(失败)
3.2 API示例:
3.2.1:移盘概要流程
(1):socket连接
(2):发送RESP,连接报文,等收到AUTH,0,连接成功。

(3):发送QSYI,查询状态命令,解析报文。

(4):调用CMOV指令,根据查询到的盘库状态,移盘。

(5):等待下一条指令。

3.2.2:开门换盘概要流程
(1):socket连接
(2):发送RESP,连接报文,等收到AUTH,0,连接成功。

(3):发送QSYI,查询状态命令,解析报文。

(4):根据查询到的状态将光驱或者是邮箱中的盘回部回到盘仓,为了防止开门换盘后留在盘库中的盘成为无法查找到来源的盘。

调用CDOU,和CMOV指令将盘移到盘仓。

如果是摆渡机,则先要调用STTX指令终止传输后再进行回盘操作。

(5):发送OPDR,指令进行开门操作。

(6):开门,插拨盘仓进行换盘操作,关门,注意换盘仓时要轻推。

(7):如果是摆渡机,调用STTX,0,开始自动移盘操作,如果是盘库,这时调用QSYI,可以查看到盘库正在进行CHKSLOT操作,等到所有的盘全部CHECK完毕,可以进行正常操作。

相关文档
最新文档