CN106126379A - 一种在linux下检测存储器中硬盘背板的自动化方法 - Google Patents
一种在linux下检测存储器中硬盘背板的自动化方法 Download PDFInfo
- Publication number
- CN106126379A CN106126379A CN201610454474.2A CN201610454474A CN106126379A CN 106126379 A CN106126379 A CN 106126379A CN 201610454474 A CN201610454474 A CN 201610454474A CN 106126379 A CN106126379 A CN 106126379A
- Authority
- CN
- China
- Prior art keywords
- hard disk
- backboard
- information
- memorizer
- serial ports
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2289—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing by configuration test
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开一种在linux下检测存储器中硬盘背板的自动化方法,涉及计算机服务器技术领域,在linux下使用perl语言编写的自动化测试程序,在服务器端连接存储器I/O串口及SAS线等数据传送线,程序通过I/O串口及SAS线读取系统下的信息和背板烧录信息,再通过扫描外部条码抓取数据库信息与其进行对比,判断背板使用和烧录情况及外部条码的使用情况;同时与实物状态做对比提示哪个插槽的硬盘有问题;最后,通过调用其它模块来读取硬盘背板的信号从而判断背板的具体状况。本方法可以测试所有类型的存储器中的硬盘背板,测试速度快,定位问题准确,测试覆盖率高。
Description
技术领域
本发明涉及计算机服务器技术领域,具体的说是一种在linux下检测存储器中硬盘背板的自动化方法。
背景技术
随着目前服务器,存储器领域的不断发展与科技迅速进步,市场存储器需求量逐渐增大,公司出货量越来越大,对于研发及生产的测试要求越来越高。测试领域面临着严峻的挑战;能够按时的达成生产排配准时出货,不但关系到公司的信誉也代表一个公司的生产能力,同时也影响着客户的满意度,而产品的测试能够高效的完成是至关重要的一个环节。目前K1产品已经进入量产阶段,需求量很大,同时测试工作也面临严峻的考验,特别是存储端的测试极为重要,目前存储端的测试效率低下,测试覆盖率也不能达到产品质量要求。
发明内容
本发明针对目前技术发展的需求和不足之处,提供一种在linux下检测存储器中硬盘背板的自动化方法。
本发明所述一种在linux下检测存储器中硬盘背板的自动化方法,解决上述技术问题采用的技术方案如下:所述一种在linux下检测存储器中硬盘背板的自动化方法,通过在服务器端安装一测试自动化程式,并在服务器端连接存储器I/O串口和SAS线后;服务器端运行测试自动化程式,通过串口和SAS线读取存储器系统下的信息和背板烧录信息;并通过扫描外部条码抓取数据库信息与其进行对比,判断背板使用和烧录情况,同时与实物状态对比,提示哪个插槽的硬盘有问题;最后,通过调用其他模块读取硬盘背板的信号,判断背板的具体状况。
优选的,所述测试自动化程式为linux 下perl 语言所编写的测试自动化程式。
优选的,在服务器端装好测试自动化程式,连接存储器I/O端的串口及SAS线到服务器端,服务器端直接运行测试程序,发送指令读取存储器系统下烧录的背板信息,然后人工扫描外部条码程序,调用并查看数据库中产品的信息,作对比判断背板使用情况,是否烧录正确或贴错条码。
优选的,服务器端在存储器I/O端的串口下读取到硬盘的详细信息,同时通过SAS线抓取硬盘的信息,若两种路径读取硬盘信息相同,则排除port口或I/O串口问题;然后提取有用信息打印到终端;同时,与实物状态对比,判断并提示哪个插槽的硬盘有问题。
本发明所述一种在linux下检测存储器中硬盘背板的自动化方法与现有技术相比具有的有益效果是:本发明通过此程式能能快速完成背板测试部分,可以测试所有类型的存储器中的硬盘背板,测试速度快,定位问题准确,并能够完成测试log保存,测试覆盖率高;使用方便,操作简单,降低操作复杂度并且减少人工输入命令的时间,为公司节省了人力、时间、成本等资源,也减少了不必要的人机交互过程,不会有人为配置时可能出现的错误、漏失等错误,确保测试质量,对于一些问题分析及定位、生产提速等有很好的作用。
说明书附图
附图1为在linux下检测存储器中硬盘背板的自动化方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,对本发明所述一种在linux下检测存储器中硬盘背板的自动化方法进一步详细说明。
为了能顾提高存储端的测试效率与覆盖率,本发明提出一种在linux下检测存储器中硬盘背板的自动化方法,主要通过一套硬盘背板的测试自动化程式,在服务器端安装该测试自动化程式,并在服务器端连接存储器I/O串口和SAS线等数据传送线,服务器端运行测试自动化程式,通过串口和SAS线读取存储器系统下的信息和背板烧录信息;并通过扫描外部条码抓取数据库信息与其进行对比,判断背板使用和烧录情况,同时与实物状态对比,提示哪个插槽的硬盘有问题;最后,通过调用其他模块读取硬盘背板的信号,判断背板的具体状况。
本发明的整个过程都是由测试自动化程式自动抓取信息,对比信息,判断信息,并将问题生成fail log 打印在终端的同时也保存在服务器上,让测试有绝对的保障。本方法可以测试所有类型的存储器中的硬盘背板,测试速度快,定位问题准确,测试覆盖率高。
实施例:
本实施例所述一种在linux下检测存储器中硬盘背板的自动化方法,在linux下使用perl语言编写的测试自动化程序,在服务器端连接存储器I/O串口及SAS线等数据传送线,程序通过I/O串口及SAS线读取系统下的信息和背板烧录信息,再通过扫描外部条码抓取数据库信息与其进行对比,判断背板使用和烧录情况;同时与实物状态做对比提示哪个插槽的硬盘有问题;最后,通过调用其它模块来读取硬盘背板的信号从而判断背板的具体状况;该自动化程式为linux 下perl 语言所编写,可应用于所有存储器产品,能够提高硬盘背板测试准速度和准确性,同时又有极高的覆盖率又有完成的测试log保存。
本实施例所述在linux下检测存储器中硬盘背板的自动化方法,其具体实施过程如下:1)首先,在服务器端装好测试自动化程式,连接存储器I/O端的串口及SAS线到服务器端,服务器端直接运行测试程序,发送指令读取存储器系统下烧录的背板信息,然后人工扫描外部条码程序,调用并查看数据库中产品的信息,作对比判断背板是否用错、日期、版次,是否烧录正确或贴错条码;如附图1所示。
2)其次,服务器端在存储器I/O端的串口下读取到硬盘的详细信息,同时通过SAS线抓取硬盘的信息,若两种路径读取硬盘信息相同,则排除port口或I/O串口问题;然后提取有用信息打印到终端;同时,与实物状态对比,判断并提示哪个插槽的硬盘有问题;比如硬盘的型号、firmware、硬盘是否在位,硬盘的电压是否正确。
3)最后,通过调用其它模块来读取硬盘背板的信号,从而判断背板状况;例如异常问题:slot不上电,背板上电容或者电阻撞键等。
本实施例所述在linux下检测存储器中硬盘背板的自动化方法,所述测试自动化程序运行的具体过程如下:
my $date_and_time = `date +"%m%d%y_%H%M_"` ;
chomp ($date_and_time) ; $date_and_time =~ s/[\/\:]/-/g;
sub dprint { my ($text) = @_ ; if ($debug == 1) { if ($nolog == 1) {print "DEBUG: ".$text } ; unless ($nolog == 1) { print LOGFILE "DEBUG: ".$text } } }
$chassisRev="20151009";
get_options;
$testStartTime=`date`;
open_log_file;
printout("both", "chassis SA REV: $chassisRev\n");
printout("both", "log file : $debugLogfile\n");
{ # putting the following do-block within a block lets "last" work. Howobscure.
do {
check_mount;
get_user_input;
unless($psu or $dra ) {check_sfc;}
sleep 30;
chassis_test;
} until (1);
}
$testEndTime=`date`;
printout("both","Test started : $testStartTime");
printout("both","Test completed: $testEndTime");
close(DLOG);
system("cp $debugLogfile /NEPTUNE/PATP-III_logs");
exit(0);
###################
## End of Main logic
####################
sub serial {
use Fcntl ':flock';
use IO::File;
use Expect;
my $command = shift ;
my $prompt = shift ;
my $timeout = shift ;
dprint("baudrate $baudrate\n");
if (!defined $timeout) { $timeout = 30 }
dprint("COMPORT:$COMPORT\n");
if ($nolog == 1 && $debug == 1) { print "\nCOMMAND: '$command'\n\n" }
if ($nolog != 1 && $debug == 1) { print LOGFILE "\nCOMMAND: '$command'\n\n" }
if (!defined $prompt) { expect_fail("ERROR: No prompt defined") }
if ($no_enter == 1) { $COMMAND = $command }else{ $COMMAND = $command."\r"}
my $FH = new IO::File "$COMPORT", O_RDWR;
if (!defined $FH) { expect_fail("Failed to open device: '$COMPORT': $!")}
if ( !flock($FH, LOCK_EX | LOCK_NB) ) { expect_fail("Failed to getexclusive lock on '$COMPORT'") }
system "/bin/stty $baudrate raw -echo -crtscts < $COMPORT";
my $expect = Expect->exp_init($FH) or expect_fail("Can not initializedevice ($FH)");
$expect->log_user(0) ; $expect->log_file($debug_logfile);
$expect->send("$COMMAND");
$expect->expect($timeout,
[ timeout => sub {
my $self = shift;
my $expect = $self->[0];
chomp($prompt,$command);
my $data_before = $expect->before;
my @data_before = (split /\r/,$data_before);
my $data_prompt = $expect->match;
my @data_prompt = (split /\r/,$data_prompt);
foreach(@data_before) { push @failure_data, $_ }
foreach(@data_prompt) { push @failure_data, $_ }
multiprint ("TIMEOUT ($timeout) : Did not get prompt '$prompt' aftercommand: '$command'\n\n");
foreach(@failure_data) {
$_ =~ s/^\n//;
$_ =~ s/\s+$//g;
$_ =~ s/^\s+//g;
$_ =~ s/^\n//;
#next if ($_ eq $command);
next if ($_ =~ /^\s+$/);
next if ($_ eq " ");
next if ($_ eq "");
multiprint "FAIL: $_\n";
}
expect_fail;
} ], '-re', $prompt);
my @dirty_data = ();
my @clean_data = ();
my @data_prompt = ();
my @data_after = ();
my $data = $expect->before;
@dirty_data = (split /\r/,$data);
my $data_match = $expect->match;
my @data_match = (split /\r/,$data_match);
chomp(@data_match);
foreach(@data_match) { $_ =~ s/^\n// ; $_ =~ s/^\s+//g ; $_ =~ s/\s+$//g; push @dirty_data, "MATCH : '$_'" }
my $data_after = $expect->after;
my @data_after = (split /\r/,$data_after);
chomp(@data_after);
foreach(@data_after) { next if ($_ eq "") ; $_ =~ s/^\n// ; $_ =~ s/^\s+//g ; $_ =~ s/\s+$//g ; push @dirty_data, "AFTER : '$_'" }
chomp(@dirty_data);
foreach(@dirty_data) {
$_ =~ s/\s+$//g;
$_ =~ s/^\s+//g;
$_ =~ s/^\n//;
next if ($_ eq $command);
next if ($_ =~ /^\s+$/);
next if ($_ =~ /^\r$/);
next if ($_ eq " ");
next if ($_ eq "");
push @clean_data, $_;
}
$expect->hard_close;
if ($nolog == 1 && $debug == 1) {
foreach(@clean_data) { next if ($_ eq $command) ; if ($_ =~ /MATCH/ || $_=~ /AFTER/) { print "$_\n" }else{ print "GOT : $_\n" } } ; print "\n";
}
if ($nolog != 1 && $debug == 1) {
foreach(@clean_data) { next if ($_ eq $command) ; if ($_ =~ /MATCH/ || $_=~ /AFTER/) { print LOGFILE "$_\n" }else{ print LOGFILE "GOT : $_\n" } } ;print LOGFILE "\n";
}
return @clean_data;
}
sub check_hdd_sync_rates {
my @results = ();
multiprint "\nHDD SYNC RATE VERIFICATION ($comX)\n\n";
$COMPORT = "/dev/tty".$comX;
# Here already get midplane type.
# get slot_want/synrate_want from -04 table according to
# read out midplane type.
get_config;
=head
if($sixG){
if( ($midplane_type != $_2U12_6G)
&& ($midplane_type != $_2U24_6G)
&& ($midplane_type != $_2U24_6G_shn)
&& ($midplane_type != $_2U24_6G_sh)
&& ($midplane_type != $_2U12_6G_ge)) {
multiprint "\nChassis is not 6G, FAIL!!!\n\n" ;
unless ($nostop == 1) { fail ; }
}
} else {
if( ($midplane_type != $_2U24_3G)
&& ($midplane_type != $_2U12_3G)) {
multiprint "\nChassis is not 3G, FAIL!!!\n\n" ;
unless ($nostop == 1) { fail ; }
}
}
=cut
if(($iom_type eq "mer") && ($midplane_type == $_2U24_6G)) {
# tlh mercury reads a 2u12 6g as a 2u12 3g, but it reads a
# 2u24 6g as a 2u24 6g. Dunno which is correct, so fake out
# a 2u24 6g as a 2u24 3g after the above check.
$midplane_type = $_2U24_3G;
}
# get the "SSPL Connection Status" registers
my $base = 0xa8110428;
my $port_off = 0x1000;
# this will only become 1 for titanium
my $sliceBsspl1 = 0;
if($iom_type eq "tit") {
# this will cover slice A SSPL0, and then slice B SSPL0, since slice
# B's base is 0xa8142010, which is 0xa8102010 + 8*0x8000.
$base = 0xa8102010;
$port_off = 0x8000;
}
# check the rate at which the drives connected on drive phys
for (my $x = 0 ; $x <= 35 ; $x++) {
if(($iom_type eq "tit") and ($x == 22)) {
# new base for slice B SSPL1
$base = 0xa8146010;
$sliceBsspl1 = 1;
}
if ( ($iom_type eq "nep")
&& ($midplane_type == $_2U12_3G)) {
#no drive phys beyond this point on a 2u12
if ($x > 15) {
last;
}
# these are not drive phys on a 2u12
if(($x >= 6) && ($x <= 9)) {
next;
}
} elsif ( ($iom_type eq "mer")
&& ($midplane_type == $_2U12_3G)) {
# these are not drive phys on a mercury 2u12
if(($x <= 7) || (($x >= 20) && ($x <= 23)) || ($x >= 24)) {
next;
}
} elsif ( ($iom_type eq "mer")
&& ($midplane_type == $_2U24_3G)) {
# these are not drive phys on a mercury 2u24
if(($x <= 7) || (($x >= 20) && ($x <= 23))) {
next;
} elsif ( $slot_want == 24 ) {
if(($x <= 7) || (($x >= 14) && ($x <= 15))
|| (($x >= 28) && ($x <= 29))) {
next;
}
} elsif ( $slot_want == 12 ) {
if(($x <= 7) || (($x >= 14) && ($x <= 21))
|| ($x >= 28) ) {
next;
}
} else {
$msg = "\nThings have gone haywire, " ;
$msg .= "IOM: " . $iom_type ;
$msg .= " CHASSIS: " . $midplane_type ;
$msg .= ", FAIL!!!\n\n" ;
multiprint($msg);
unless ($nostop == 1) { fail ; }
}
# for titanium, when we get to physical phys 22 and above, the offset
# goes back to 0.
if($sliceBsspl1) {
$y = $x-22;
} else {
$y = $x;
}
my $addr=$base + $y*$port_off;
$hex=sprintf("0x%08X",$addr);
my $command = "rd_32 ".$hex." 1";
dprint("COMMAND: $command\n");
my @response = ();
chomp(@response = serial($command,">")).。
上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的权利要求书的且任何所属技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。
Claims (4)
1.一种在linux下检测存储器中硬盘背板的自动化方法,其特征在于, 通过在服务器端安装一测试自动化程式,并在服务器端连接存储器I/O串口和SAS线后;服务器端运行测试自动化程式,通过串口和SAS线读取存储器系统下的信息和背板烧录信息;并通过扫描外部条码抓取数据库信息与其进行对比,判断背板使用和烧录情况,同时与实物状态对比,提示哪个插槽的硬盘有问题;最后,通过调用其他模块读取硬盘背板的信号,判断背板的具体状况。
2.根据权利要求1所述一种在linux下检测存储器中硬盘背板的自动化方法,其特征在于, 所述测试自动化程式为linux 下perl 语言所编写的测试自动化程式。
3.根据权利要求2所述一种在linux下检测存储器中硬盘背板的自动化方法,其特征在于, 在服务器端装好测试自动化程式,连接存储器I/O端的串口及SAS线到服务器端,服务器端直接运行测试程序,发送指令读取存储器系统下烧录的背板信息,然后人工扫描外部条码程序,调用并查看数据库中产品的信息,作对比判断背板使用情况,是否烧录正确或贴错条码。
4.根据权利要求3所述一种在linux下检测存储器中硬盘背板的自动化方法,其特征在于, 服务器端在存储器I/O端的串口下读取到硬盘的详细信息,同时通过SAS线抓取硬盘的信息,若两种路径读取硬盘信息相同,则排除port口或I/O串口问题;然后提取有用信息打印到终端;同时,与实物状态对比,判断并提示哪个插槽的硬盘有问题。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610454474.2A CN106126379B (zh) | 2016-06-22 | 2016-06-22 | 一种在linux下检测存储器中硬盘背板的自动化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610454474.2A CN106126379B (zh) | 2016-06-22 | 2016-06-22 | 一种在linux下检测存储器中硬盘背板的自动化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106126379A true CN106126379A (zh) | 2016-11-16 |
CN106126379B CN106126379B (zh) | 2019-09-06 |
Family
ID=57470478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610454474.2A Active CN106126379B (zh) | 2016-06-22 | 2016-06-22 | 一种在linux下检测存储器中硬盘背板的自动化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106126379B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107480737A (zh) * | 2017-08-10 | 2017-12-15 | 郑州云海信息技术有限公司 | 一种检测pcba条码的生产管理系统及方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508685A (zh) * | 2011-11-21 | 2012-06-20 | 浪潮电子信息产业股份有限公司 | 一种刀片服务器快速烧录Firmware的方法 |
CN104102585A (zh) * | 2013-04-03 | 2014-10-15 | 群联电子股份有限公司 | 映射信息记录方法、存储器控制器与存储器储存装置 |
US20140306799A1 (en) * | 2013-04-15 | 2014-10-16 | Flextronics Ap, Llc | Vehicle Intruder Alert Detection and Indication |
CN104166450A (zh) * | 2014-08-20 | 2014-11-26 | 浪潮电子信息产业股份有限公司 | 一种vr芯片fw版本的区分方法 |
CN104391548A (zh) * | 2014-12-16 | 2015-03-04 | 浪潮电子信息产业股份有限公司 | 一种提高服务器Expander板卡芯片FW烧录效率的方法 |
CN104767096A (zh) * | 2015-03-27 | 2015-07-08 | 华为技术有限公司 | 一种背板的制备方法 |
CN105117251A (zh) * | 2015-08-25 | 2015-12-02 | 浪潮电子信息产业股份有限公司 | 一种外挂芯片式远程刷新电源firmware的设计方法 |
CN105511993A (zh) * | 2015-12-09 | 2016-04-20 | 浪潮电子信息产业股份有限公司 | 一种基于uefi的服务器nvme硬盘背板功能测试方法 |
-
2016
- 2016-06-22 CN CN201610454474.2A patent/CN106126379B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508685A (zh) * | 2011-11-21 | 2012-06-20 | 浪潮电子信息产业股份有限公司 | 一种刀片服务器快速烧录Firmware的方法 |
CN104102585A (zh) * | 2013-04-03 | 2014-10-15 | 群联电子股份有限公司 | 映射信息记录方法、存储器控制器与存储器储存装置 |
US20140306799A1 (en) * | 2013-04-15 | 2014-10-16 | Flextronics Ap, Llc | Vehicle Intruder Alert Detection and Indication |
CN104166450A (zh) * | 2014-08-20 | 2014-11-26 | 浪潮电子信息产业股份有限公司 | 一种vr芯片fw版本的区分方法 |
CN104391548A (zh) * | 2014-12-16 | 2015-03-04 | 浪潮电子信息产业股份有限公司 | 一种提高服务器Expander板卡芯片FW烧录效率的方法 |
CN104767096A (zh) * | 2015-03-27 | 2015-07-08 | 华为技术有限公司 | 一种背板的制备方法 |
CN105117251A (zh) * | 2015-08-25 | 2015-12-02 | 浪潮电子信息产业股份有限公司 | 一种外挂芯片式远程刷新电源firmware的设计方法 |
CN105511993A (zh) * | 2015-12-09 | 2016-04-20 | 浪潮电子信息产业股份有限公司 | 一种基于uefi的服务器nvme硬盘背板功能测试方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107480737A (zh) * | 2017-08-10 | 2017-12-15 | 郑州云海信息技术有限公司 | 一种检测pcba条码的生产管理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106126379B (zh) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102117660B (zh) | 用于测试数据存储装置的测试仪 | |
WO2021169260A1 (zh) | 一种系统板卡电源检测方法、装置、设备及存储介质 | |
CN102157176B (zh) | 数据存储装置测试仪 | |
CN100395717C (zh) | 硬盘装置损坏监测方法及系统 | |
CN110750396B (zh) | 一种服务器操作系统兼容性测试方法、装置及存储介质 | |
CN109976959A (zh) | 一种用于服务器故障检测的便携式设备及方法 | |
CN102375767A (zh) | 计算机重启测试系统及方法 | |
CN106528354B (zh) | 一种烧录存储器电源fru id的自动化方法 | |
BR112013004233B1 (pt) | Circuito integrado incluindo um analisador de lógica programável configurável para análise e depuração | |
US20090287959A1 (en) | System and method for testing computer | |
CN106681878A (zh) | 一种pcie通道带宽的测试方法 | |
CN110704287B (zh) | Linux系统下RAID卡异常日志收集方法、系统及存储介质 | |
WO2019134113A1 (zh) | 自动化测试方法及系统 | |
CN106537351A (zh) | 用于诊断无线通信设备中的电源故障的方法 | |
CN107590017B (zh) | 一种电子设备的检测方法和装置 | |
CN114003417B (zh) | 实现raid卡故障自动转存的方法、装置及存储介质 | |
CN107274933A (zh) | 一种测试固态硬盘的方法及装置 | |
CN103853636A (zh) | 机柜服务器系统及其检测方法 | |
CN106126379A (zh) | 一种在linux下检测存储器中硬盘背板的自动化方法 | |
CN104750600A (zh) | 设备状态记录方法和系统 | |
CN113409878A (zh) | 闪存错误信息检测方法、替换方法、装置、设备及存储介质 | |
CN108600690A (zh) | 基于图像识别的仪表盘抄表方法及系统、存储介质及服务器 | |
CN109710479B (zh) | 一种处理方法及第一设备、第二设备 | |
CN116719656A (zh) | 优化故障诊断日志收集过程的方法、装置、终端及介质 | |
CN105786668A (zh) | 一种基于Redhat系统下内存错误检测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |