亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種快速檢測數(shù)據(jù)存儲鏈路穩(wěn)定性的方法與流程

文檔序號:11949906閱讀:617來源:國知局

本發(fā)明涉及服務(wù)器存儲領(lǐng)域,具體地說是一種快速檢測數(shù)據(jù)存儲鏈路穩(wěn)定性的方法。



背景技術(shù):

通常,隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,數(shù)據(jù)量雪崩式的增加,海量的數(shù)據(jù)需要存儲,存儲子系統(tǒng)作為數(shù)據(jù)存儲的主要鏈路及媒介顯得尤為重要;不僅需要巨大容量的云盤,而且對存儲子系統(tǒng)鏈路的穩(wěn)定性提出來了很高的要求。

服務(wù)器存儲的整個鏈路主要包括以下幾個部分:操作系統(tǒng)、驅(qū)動、中央處理器(CPU:Central Processing Unit)、SATA/SAS控制器。數(shù)據(jù)傳輸?shù)逆溌肥请p向的;考慮到存儲類服務(wù)器對硬盤數(shù)量的要求,有時還需要擴(kuò)展硬盤接口,使得整個存儲子系統(tǒng)鏈路上的元器件增加,伴隨而來的則是整個存儲鏈路的穩(wěn)定性及可靠性的減弱。因此為了排除該方面的隱患,在部署數(shù)據(jù)中心之前首先要做的是檢查存儲鏈路的穩(wěn)定性,而存儲鏈路的不穩(wěn)定性主要表現(xiàn)在硬盤存儲的數(shù)據(jù)被破壞,即數(shù)據(jù)bit位被修改,由“0”變?yōu)椤?”,或者由“1”變?yōu)椤?”;而這種數(shù)據(jù)bit被修改是很難被發(fā)現(xiàn)的。

為克服該問題,本文提出一種快速檢測數(shù)據(jù)存儲鏈路穩(wěn)定性的方法。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的技術(shù)任務(wù)是提供一種快速檢測數(shù)據(jù)存儲鏈路穩(wěn)定性的方法。

本發(fā)明的技術(shù)任務(wù)是按以下方式實(shí)現(xiàn)的,一種快速檢測數(shù)據(jù)存儲鏈路穩(wěn)定性的方法,具體的方法步驟如下:首先,通過數(shù)據(jù)存儲鏈路向硬盤內(nèi)部寫入數(shù)據(jù);其次,通過同一條數(shù)據(jù)存儲鏈路從硬盤內(nèi)部讀取數(shù)據(jù);最后將寫入的數(shù)據(jù)和讀取的數(shù)據(jù)做比較,并將比對結(jié)果輸出至屏幕,即可判斷存儲鏈路有無異常。

優(yōu)選的,所述的數(shù)據(jù)存儲鏈路包括中央處理器、PCIE-SWITCH轉(zhuǎn)換芯片和HDD controller控制芯片以及硬盤;數(shù)據(jù)存儲電路的傳輸過程如下:

中央處理器的一個PCIEX4經(jīng)過一個PCIE-SWITCH轉(zhuǎn)換芯片,轉(zhuǎn)換為4個PCIEX1,每一個PCIEX1信號分別連接到一個控制器芯片上,進(jìn)行協(xié)議轉(zhuǎn)換為硬盤控制器,每一個硬盤控制器下面連接4個硬盤,這樣數(shù)據(jù)就可以通過這條鏈路寫入到硬盤里面,數(shù)據(jù)可被寫入,也可被讀取,整條存儲鏈路是雙向傳輸?shù)摹?/p>

優(yōu)選的,當(dāng)數(shù)據(jù)比特位被修改,由“0”變?yōu)椤?”,或者由“1”變?yōu)椤?”,將寫入的數(shù)據(jù)和讀取的數(shù)據(jù)作比較時,即可發(fā)現(xiàn)屏幕上的輸出的比對結(jié)果顯示兩者不一致,從而判斷出數(shù)據(jù)存儲鏈路存在異常。

本發(fā)明的一種快速檢測數(shù)據(jù)存儲鏈路穩(wěn)定性的方法和現(xiàn)有技術(shù)相比,有益效果如下:

1、通過系統(tǒng)下檢測硬盤存儲的數(shù)據(jù)bit是否發(fā)生翻轉(zhuǎn),可以直觀的檢測數(shù)據(jù)存儲鏈路的穩(wěn)定性;

2、可以快速的檢測整個數(shù)據(jù)存儲鏈路,包含鏈路中的元器件的穩(wěn)定性,可以直觀的看出存儲鏈路是否有異常,方便快捷;

3、通過這種檢測方案,提高了數(shù)據(jù)中心存儲類服務(wù)器的穩(wěn)定性及可靠性,進(jìn)而提高了市場競爭力。

附圖說明

附圖1為數(shù)據(jù)存儲鏈路的結(jié)構(gòu)示意圖。

具體實(shí)施方式

一種快速檢測數(shù)據(jù)存儲鏈路穩(wěn)定性的方法,具體的方法步驟如下:首先,通過數(shù)據(jù)存儲鏈路向硬盤內(nèi)部寫入數(shù)據(jù);其次,通過同一條數(shù)據(jù)存儲鏈路從硬盤內(nèi)部讀取數(shù)據(jù);最后將寫入的數(shù)據(jù)和讀取的數(shù)據(jù)做比較,并將比對結(jié)果輸出至屏幕,即可判斷存儲鏈路有無異常。

優(yōu)選的,所述的數(shù)據(jù)存儲鏈路包括中央處理器、PCIE-SWITCH轉(zhuǎn)換芯片和HDD controller控制芯片以及硬盤;

如圖1所示,為數(shù)據(jù)存儲鏈路示意圖。其中CPU是中央處理器;PCIE-SWITCH和HDD controller是兩個不同功能的集成電路芯片;HDD表示硬盤。CPU的一個PCIEX4經(jīng)過一個PCIE-SWITCH轉(zhuǎn)換芯片,轉(zhuǎn)換為4個PCIEX1;每一個PCIEX1信號分別連接到一個控制器芯片上,進(jìn)行協(xié)議轉(zhuǎn)換為HDD控制器;每一個HDD控制器下面鏈接4個HDD,這樣數(shù)據(jù)就可以通過這條鏈路寫入到硬盤里面;數(shù)據(jù)不只是被寫入,還有被讀取,因此整條存儲鏈路是雙向傳輸?shù)摹?/p>

由于數(shù)據(jù)傳輸鏈路是雙向的,寫入硬盤的數(shù)據(jù)可以通過原來的存儲鏈路讀取出來;如果整個數(shù)據(jù)存儲鏈路以及鏈路上的元器件本身沒有異常,寫入硬盤的數(shù)據(jù)是不會發(fā)生改變的。因此,我們就可以對硬盤寫入固定的數(shù)據(jù),比如全寫“0”,然后讀取硬盤數(shù)據(jù),最后將讀取出來的數(shù)據(jù)與原來的數(shù)據(jù)進(jìn)行對比,并且輸出對比結(jié)果至屏幕,這樣,我們就可以直觀的看出鏈路有無異常,就可以把潛在隱患扼殺在數(shù)據(jù)中心部署之前。

實(shí)施例1:

為清楚的說明本文所提出一種快速檢測數(shù)據(jù)存儲鏈路穩(wěn)定性的方法的實(shí)現(xiàn)情況,結(jié)合圖1來說明實(shí)現(xiàn)步驟。具體如下:

1)在操作系統(tǒng)下,對硬盤寫入固定的數(shù)據(jù);

2)在操作系統(tǒng)下,從硬盤中讀取其中的數(shù)據(jù);

3)最后,自動對比寫入和讀取的數(shù)據(jù),并將對比結(jié)果中數(shù)據(jù)不一致的數(shù)據(jù)位輸出至屏幕上。

4)具體的實(shí)現(xiàn)代碼如下:

#define _GNU_SOURCE

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <unistd.h>

#include <stdio.h>

#include <string.h>

#include <malloc.h>

#include <stdlib.h>

#include <errno.h>

staticmode_t mode = 0655;

static void printf_buf(const void *buf, intbuf_size)

{

int i;

for (i = 0; i <buf_size/4; i++) {

intval = (int)*((int *)buf +i);

if (val) {

printf("@%d", i);

if (val != 0x400)

printf(":%d", val);

printf(" ");

}

}

printf("\n");

}

staticintfill_file_by_buffer(const char *path, const void *wbuf,

intbuf_size, intio_cnt, int direct)

{

int i, fd, ret;

int err = 0;

int flags;

if (direct)

flags = O_DIRECT | O_RDWR | O_CREAT;

else

flags = O_RDWR | O_CREAT;

fd = open(path, flags, mode);

//lseek(fd, 0, SEEK_SET);

for (i = 0; i <io_cnt; i++) {

ret = write(fd, wbuf, buf_size);

if (ret < 0)

err = ret;

}

//fdatasync(fd);

close(fd);

return err;

}

staticintcheck_file_by_buffer(const char *path, const void *wbuf,

void *rbuf, intbuf_size,

intio_cnt, int direct)

{

int i, fd, ret;

int err = 0;

int flags;

if (direct)

flags = O_DIRECT | O_RDWR;

else

flags = O_RDWR;

fd = open(path, flags);

//lseek(fd, 0, SEEK_SET);

for (i = 0; i <io_cnt; i++) {

ret = read(fd, rbuf, buf_size);

if (ret < 0) {

printf("read error %d %d\n", ret, i);

err = ret;

break;

}

if (memcmp(wbuf, rbuf, buf_size) != 0) {

printf("mismatch @ %d\n", i);

//printf_buf(wbuf, buf_size);

printf_buf(rbuf, buf_size);

}

}

close(fd);

return err;

}

staticintcheck_disk_ram(const char* path, const void *wbuf, void *rbuf,

intbuf_size, intio_cnt)

{

int ret1, ret2;

int ret3 = 0, ret4 = 0;

ret1 = fill_file_by_buffer(path, wbuf, buf_size, io_cnt, 0);

ret2 = check_file_by_buffer(path, wbuf, rbuf, buf_size, io_cnt, 1);

if (ret1 || ret2)

printf("check by buffer write error\n");

/*

ret3 = fill_file_by_buffer(path, wbuf, buf_size, io_cnt, 1);

ret4 = check_file_by_buffer(path, wbuf, rbuf, buf_size, io_cnt, 1);

if (ret3 || ret4)

printf("check by direct write error\n");

*/

return ret1 || ret2 || ret3 || ret4;

}

int main(intargc, char *argv[])

{

intcnt;

void *wbuf0, *wbuf1, *rbuf;

int err;

intbuf_size = 4096 * 16; // 64K

intrcnt = atoi(argv[1]);

char *path0 = argv[2];

char *path1 = argv[3];

//char *path0="/home/disk6/test_zero.txt";

//char *path1="/home/disk6/test_one.txt";

intio_cnt = 1024 * 8; // 512M

printf("%d %s %s\n", rcnt, path0, path1);

wbuf0 = malloc(buf_size);

wbuf1 = malloc(buf_size);

rbuf = memalign(buf_size, buf_size);

if (!wbuf0 || !wbuf1 || !rbuf)

return -ENOMEM;

memset(wbuf0, 0, buf_size);

memset(wbuf1, 0xff, buf_size);

for (cnt=0;cnt!=rcnt;cnt++) {

printf("%d:\n", cnt);

err = check_disk_ram(path0, wbuf0, rbuf, buf_size, io_cnt);

if (err) {

printf("check write 0 error %d\n", cnt);

break;

}

sleep(1);

}

}

這樣,本文提出一種快速檢測數(shù)據(jù)存儲鏈路穩(wěn)定性的方法即可得以實(shí)現(xiàn)。本文提出一種快速檢測數(shù)據(jù)存儲鏈路穩(wěn)定性的方法,在服務(wù)器存儲數(shù)據(jù)之前對鏈路穩(wěn)定性進(jìn)行檢測。具體方法為:首先,系統(tǒng)下通過存儲鏈路向硬盤內(nèi)部寫數(shù)據(jù);其次,同樣通過存儲鏈路從硬盤內(nèi)部讀取數(shù)據(jù);最后將寫入的數(shù)據(jù)和讀取的數(shù)據(jù)做比較。這種方法能夠?qū)λ写鎯︽溌飞系钠骷M(jìn)行檢測,一旦有某個子鏈路或者某個元器件有故障,第一時間就可以發(fā)現(xiàn),將潛在的隱患扼殺在數(shù)據(jù)中心部署之前。

通過上面具體實(shí)施方式,所述技術(shù)領(lǐng)域的技術(shù)人員可容易的實(shí)現(xiàn)本發(fā)明。但是應(yīng)當(dāng)理解,本發(fā)明并不限于上述的幾種具體實(shí)施方式。在公開的實(shí)施方式的基礎(chǔ)上,所述技術(shù)領(lǐng)域的技術(shù)人員可任意組合不同的技術(shù)特征,從而實(shí)現(xiàn)不同的技術(shù)方案。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1