我目前正在摆弄一个使用ONTAPI的项目(perf stats monitoring sort of thing)。
我想要做的是从“df”和“df -s”复制信息。
做得很好,因为api'volume-list-info'似乎有我想要的大部分信息。 只有一样东西丢失了 – 我实际使用的“储备金”有多less。
我似乎无法在这个或“快照”计数器中find它。 我希望能够做到这一点,而不必做每卷计算,因为我希望做的事情之一是支持一个轻量级的代理客户端,“只是”获取源XML在服务器上处理。
或者有没有一种方法,我可以从volume-list-info中的size / used / size中计算出来?
在解决了这个问题之后,感谢卓越的“toasters”邮件列表 ( 归档 ) – 我最终的解决scheme是使用system-cli API调用。
#!/usr/bin/env perl use strict; use warnings; use XML::Twig; use LWP; my $twig = XML::Twig->new( 'pretty_print' => 'indented' ); $twig->set_root( XML::Twig::Elt->new( 'netapp', { version => 1.7, vfiler => "somevfiler", xmlns => "http://www.netapp.com/filer/admin", }, ) ); my $api_req = $twig->root->insert_new_elt('system-cli'); my $args = $api_req->insert_new_elt('args'); $args->insert_new_elt( 'last_child', 'arg', 'df' ); $args->insert_new_elt( 'last_child', 'arg', '-k' ); $twig->set_doctype('netapp SYSTEM "file:/etc/netapp_filer.dtd"'); $twig->set_xml_version("1.0"); $twig->set_encoding('utf-8'); $twig->print; exit; my $user_agent = LWP::UserAgent->new( 'ssl_opts' => { 'verify_hostname' => 0, 'SSL_version' => 'SSLv3', } ); my $request = HTTP::Request->new( 'POST' => 'https://myfilername/servlets/netapp.servlets.admin.XMLrequest_filer' ); $request->authorization_basic( 'username_here', 'password_here' ); $request->content( $twig->sprint ); my $results = $user_agent->request($request); if ( not $results->is_success ) { print "Error: ", $results->status_line; exit; } my $results_xml = XML::Twig->new( 'pretty_print' => 'indented_a' ); $results_xml->parse( $results->content ); $results_xml->print;
这可以通过API调用捕获df -k的结果。 但是只有一个缺点 – 你只能得到一个纯文本的'命令输出'blob,然后你必须parsing自己,所以你不会真正获得ssh hostname df -k – 仅仅是一个不同的authentication和获取方法,但是那真的是我以后的事情。
同样值得注意的是,这不会使用NetApp SDK。 你可能会认为这是一个优点或不。 就我个人而言,我发现XML::Twig和LWP非常适合与YMMV合作。
无论如何 – 其他build议包括:
ssh hostname df -k 如你所见,系统cli可能是获得“df”输出的唯一方法。
因为“用于快照的空间”可能超过捕捉储备,我更喜欢不同的措施。 snapshot-volume-info API返回可用的大小(在失去制作更多快照的能力之前,您可以在卷中使用多less空间)。
收集flexvolvol的其他空间统计我会使用卷空间得到iter(卷空间列表信息iter在7米)或音量足迹-get-iter(vol-footprint-info在7米)APIs 。
NetApp Manageability SDK下载包括文档; 我提到的电话是在,例如:
doc / ontapi / ontapi_1.20 / Vserver / snapshot / index.html#snapshot-volume-info doc / ontapi / ontapi_1.20 / Vserver / volume / index.html#volume-space-get-iter doc / ontapi / ontapi_1。 20 / Vserver的/体积/ index.html的#体积小巧的-GET-ITER