本發(fā)明涉及硬盤數(shù)據(jù)測(cè)試技術(shù),尤其涉及一種測(cè)試硬盤數(shù)據(jù)一致性的方法。
背景技術(shù):
隨著浪潮服務(wù)器產(chǎn)業(yè)的不斷發(fā)展和壯大,作為國(guó)內(nèi)最大的服務(wù)器供應(yīng)商,服務(wù)器市場(chǎng)已經(jīng)囊括各個(gè)領(lǐng)域,尤其是金融、互聯(lián)網(wǎng)等主流領(lǐng)域,互聯(lián)網(wǎng)的高速發(fā)展,信息的高安全性和系統(tǒng)的高可靠性越來越成為公司、企業(yè)、政府最為關(guān)注的事情,而硬盤作為數(shù)據(jù)存儲(chǔ)的主要載體,其穩(wěn)定性和可靠性也越來越受到重視,因此對(duì)于硬盤在我們服務(wù)器上使用時(shí)經(jīng)常會(huì)有備份和硬盤數(shù)據(jù)的轉(zhuǎn)儲(chǔ)出現(xiàn),在硬盤數(shù)據(jù)轉(zhuǎn)移的過程中,硬盤之間的數(shù)據(jù)一致性很重要?;谝陨弦螅跍y(cè)試過程中需要一種方法在系統(tǒng)下測(cè)試硬盤數(shù)據(jù)一致性。
技術(shù)實(shí)現(xiàn)要素:
為了解決以上問題,本發(fā)明提出了一種測(cè)試硬盤數(shù)據(jù)一致性的方法。可以應(yīng)用于各種配置下的硬盤數(shù)據(jù)一致性的測(cè)試,實(shí)現(xiàn)快速、高效、準(zhǔn)確、自動(dòng)化的進(jìn)行差異的對(duì)比,而且對(duì)比的結(jié)果簡(jiǎn)單明了,對(duì)提高服務(wù)器產(chǎn)品的質(zhì)量提供了可靠的保障。
本發(fā)明便于發(fā)現(xiàn)硬盤復(fù)制和轉(zhuǎn)儲(chǔ)的過程中出現(xiàn)的錯(cuò)誤。在硬盤分區(qū)上復(fù)制數(shù)據(jù),通過對(duì)數(shù)據(jù)的復(fù)制和對(duì)比等操作,之后與原始數(shù)據(jù)對(duì)比,來完成壓力測(cè)試發(fā)現(xiàn)是否具有數(shù)據(jù)一致性。
本發(fā)明的技術(shù)方案是:
一種測(cè)試硬盤數(shù)據(jù)一致性的方法,
通過將硬盤分區(qū)再將分區(qū)格式化后,把硬盤的分區(qū)掛載到文件系統(tǒng)中,通過對(duì)數(shù)據(jù)(文件)在硬盤所掛載的文件系統(tǒng)中復(fù)制并且比較,查看是否數(shù)據(jù)一致如果不一致就記錄差異;在多個(gè)硬盤之間循環(huán)一次以上復(fù)制和比較,模擬客戶業(yè)務(wù)長(zhǎng)時(shí)間的運(yùn)行過程,記錄差異查看數(shù)據(jù)的差異性。然后查看結(jié)果,看是否在復(fù)制的過程中產(chǎn)生了數(shù)據(jù)不一致的情況。
具體流程為:
1)安裝linux系統(tǒng)取得root權(quán)限,
2)為硬盤或邏輯磁盤分區(qū)并格式化;
3)將格式化的硬盤分區(qū)掛載到文件系統(tǒng)下;
4)將文件從一個(gè)文件夾復(fù)制到另一個(gè)文件夾;
5)比較兩個(gè)文件夾內(nèi)容的差異,查看是否一致;
6)如果一致,繼續(xù)復(fù)制,再查看差異;
如果不一致,記錄差異并繼續(xù)復(fù)制,再查看差異。
準(zhǔn)備工作
需要將待測(cè)硬盤接入到系統(tǒng)中,安裝linux系統(tǒng),在/root下創(chuàng)建Src文件夾,將非二進(jìn)制文件copy到Src文件夾中。
具體測(cè)試步驟為:
1)對(duì)服務(wù)器系統(tǒng)中的硬盤進(jìn)行分區(qū);
2)將硬盤分區(qū)格式化成EXT4的格式;
3)在/opt下建立與硬盤數(shù)量相等,并且名稱對(duì)應(yīng)的文件夾;
4)將硬盤分區(qū)掛載到相應(yīng)的文件夾下;
5)將Src文件夾中的所有文件在硬盤的分區(qū)中循環(huán)復(fù)制和刪除;
6)比較每次復(fù)制的差異;
7)將差異記錄,回傳測(cè)試結(jié)果。
本發(fā)明的有益效果是
通過自動(dòng)運(yùn)行的方法減少了以往測(cè)試的時(shí)候手動(dòng)測(cè)試的復(fù)雜性,可以減少簡(jiǎn)化操作,節(jié)省了人力和時(shí)間。
附圖說明
圖1是測(cè)試流程示意圖。
具體實(shí)施方式
下面對(duì)本發(fā)明的內(nèi)容進(jìn)行更加詳細(xì)的闡述:
本發(fā)明的驗(yàn)證步驟為:
將待測(cè)硬盤接入到系統(tǒng)中,安裝linux系統(tǒng),在/root下創(chuàng)建Src文件夾,將非二進(jìn)制文件copy到Src文件夾中。
1、運(yùn)行copy and compare時(shí),顯示copy次數(shù);
2、當(dāng)運(yùn)行完成時(shí),出現(xiàn)“Test finished1000times!”
3、查看test.log,可以查看成功復(fù)制的次數(shù)和是否通過。
附腳本和說明
腳本deal_disk是給硬盤分區(qū)及格式化的腳本,其中給硬盤分配的大小為40G,格式化模式為ext4的格式。
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
for i in {b..d};
do
fdisk /dev/sd$i <<ESXU
n
p
1
+40G
w
ESXU
sleep 3s
mkfs.ext4 /dev/sd"$i"1
done
腳本mount_disk是在/root下創(chuàng)建文件夾并將硬盤分區(qū)掛載到相應(yīng)文件夾的腳本
#/bin/bash
for i in {b..d};
do
umount /root/test/$i
done
rm -rf /root/test
mkdir /root/test
for i in {b..d};
do
mkdir /root/test/$i
done
for i in {b..d};
do
mount /dev/sd"$i"1 /root/test/$i
done
腳本copy_and_compare是將Src中的非二進(jìn)制文件copy到/opt下的文件中,并在各個(gè)文件夾中不斷進(jìn)行多次copy和compare的腳本,腳本中使用cp命令進(jìn)行復(fù)制使用diff命令進(jìn)行對(duì)比校驗(yàn)并將對(duì)比結(jié)果記錄到diffsrc.txt和diff.txt中,同時(shí)也會(huì)將出現(xiàn)差異的地方也記錄下來,方便測(cè)試完成后進(jìn)行查看,將copy次數(shù)和結(jié)果放到test.log和Success.log中。
#!/bin/bash
TestCount=1000
rm diff.txt
rm diffsrc.txt
rm SuccessCount.log
rm test.log
for i in {b..d};
do
rm -rvf /root/test/$i/*
done
cp -a /root/Src/* /root/test/b
diff /root/Src /root/test/b |tee -a diffsrc.txt
diffsrc=$(cat diffsrc.txt | wc -l)
if [ "$diffsrc" != "0" ]; then
echo "Compare with the source files fail !!!"
exit 1
fi
count=0
###copy from disk to disk###
while (true);do
######copy from b to c
cp -a /root/test/b/* /root/test/c
count=$(($count + 1))
diff /root/test/b /root/test/c |tee -a diff.txt
diffnum=$(cat diff.txt |wc -l)
if [ "$diffnum" != "0" ];then
echo "failed at "$count "times test" | tee -a diff.txt
echo "failed at when copy from sdb to sdc"|tee -a diff.txt
cat SuccessCount.log >>test.log
break
fi
echo "Successfully copy files "$count"times !" |tee -a SuccessCount.log
rm -rvf /root/test/b/*
if [ -n "${TestCount}" ];then
if [ "$count" == "$TestCount" ];then
echo "Test finished"$count"times!"
cat SuccessCount.log>> test.log
echo "PASS !!!">> test.log
exit
fi
fi
######copy from c to d
cp -a /root/test/c/* /root/test/d
count=$(($count + 1))
diff /root/test/c /root/test/d |tee -a diff.txt
diffnum=$(cat diff.txt |wc -l)
if [ "$diffnum" != "0" ];then
echo "failed at "$count "times test" | tee -a diff.txt
echo "failed at when copy from sdc to sdd"|tee -a diff.txt
cat SuccessCount.log >>test.log
break
fi
echo "Successfully copy files "$count"times !" |tee -a SuccessCount.log
rm -rvf /root/test/c/*
if [ -n "${TestCount}" ];then
if [ "$count" == "$TestCount" ];then
echo "Test finished"$count"times!"
cat SuccessCount.log>> test.log
echo "PASS !!!">> test.log
exit
fi
fi
######copy from d to b
cp -a /root/test/d/* /root/test/b
count=$(($count + 1))
diff /root/test/d /root/test/b |tee -a diff.txt
diffnum=$(cat diff.txt |wc -l)
if [ "$diffnum" != "0" ];then
echo "failed at "$count "times test" | tee -a diff.txt
echo "failed at when copy from sdd to sdb"|tee -a diff.txt
cat SuccessCount.log >>test.log
break
fi
echo "Successfully copy files "$count"times !" |tee -a SuccessCount.log
rm -rvf /root/test/d/*
if [ -n "${TestCount}" ];then
if [ "$count" == "$TestCount" ];then
echo "Test finished"$count"times!"
cat SuccessCount.log>> test.log
echo "PASS !!!">> test.log
exit
fi
fi
done。
本方法可以應(yīng)用于各種配置下的硬盤數(shù)據(jù)一致性的測(cè)試,實(shí)現(xiàn)快速、高效、準(zhǔn)確、自動(dòng)化的進(jìn)行差異的對(duì)比,而且對(duì)比的結(jié)果簡(jiǎn)單明了,對(duì)提高服務(wù)器產(chǎn)品的質(zhì)量提供了可靠的保障。