一種存儲(chǔ)數(shù)據(jù)的方法和裝置制造方法
【專(zhuān)利摘要】本發(fā)明實(shí)施例公開(kāi)了一種存儲(chǔ)數(shù)據(jù)的方法和裝置,涉及存儲(chǔ)【技術(shù)領(lǐng)域】,用以減少讀取數(shù)據(jù)時(shí)的時(shí)延,從而提高系統(tǒng)性能。本發(fā)明實(shí)施例提供的方法,應(yīng)用于分布式存儲(chǔ)系統(tǒng),所述分布式存儲(chǔ)系統(tǒng)包括第一服務(wù)器和其他服務(wù)器,所述方法包括:確定所述第一服務(wù)器生成的第一數(shù)據(jù);判斷所述第一服務(wù)器的剩余存儲(chǔ)空間與所述第一數(shù)據(jù)所占的存儲(chǔ)空間的大小關(guān)系;如果所述第一服務(wù)器的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,且所述第一服務(wù)器的已使用存儲(chǔ)空間大于所述其他服務(wù)器的最小已使用存儲(chǔ)空間時(shí),將所述第一數(shù)據(jù)存儲(chǔ)在所述第一服務(wù)器的剩余存儲(chǔ)空間中。
【專(zhuān)利說(shuō)明】一種存儲(chǔ)數(shù)據(jù)的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及存儲(chǔ)【技術(shù)領(lǐng)域】,尤其涉及一種存儲(chǔ)數(shù)據(jù)的方法和裝置。
【背景技術(shù)】
[0002]分布式存儲(chǔ)系統(tǒng)以可靠性高、可用性強(qiáng)、易于擴(kuò)展等特點(diǎn)成為研究的熱點(diǎn)。分布式存儲(chǔ)系統(tǒng)由多個(gè)服務(wù)器構(gòu)成,每個(gè)服務(wù)器上可以安裝一個(gè)或者多個(gè)虛擬機(jī),每個(gè)服務(wù)器對(duì)應(yīng) RAID (Redundant Arrays of Independent Disks,磁盤(pán)陣列)上的一部分存儲(chǔ)空間。
[0003]目前,在分布式存儲(chǔ)系統(tǒng)中,一般按照“負(fù)載均衡”的原則為服務(wù)器上安裝的應(yīng)用/虛擬機(jī)生成的數(shù)據(jù)分配物理存儲(chǔ)空間,即,按照“HDFS中的各服務(wù)器的已使用存儲(chǔ)空間均衡”的原則為服務(wù)器上安裝的應(yīng)用/虛擬機(jī)生成的數(shù)據(jù)分配物理存儲(chǔ)空間;其中,物理存儲(chǔ)空間為某一服務(wù)器對(duì)應(yīng)的磁盤(pán)陣列的存儲(chǔ)空間和/或該服務(wù)器本身的存儲(chǔ)空間。具體的,以分布式存儲(chǔ)系統(tǒng)為HDFS (Hadoop Distributed File System,分布式文件系統(tǒng))為例進(jìn)行說(shuō)明:
[0004]在HDFS中,最小存儲(chǔ)單元為塊(block),每個(gè)塊的最大值為64M。當(dāng)服務(wù)器上安裝的應(yīng)用/虛擬機(jī)生成的數(shù)據(jù)所占的存儲(chǔ)空間大于64M時(shí),該服務(wù)器首先對(duì)該數(shù)據(jù)進(jìn)行分塊,一般地,至多有I個(gè)塊所占的存儲(chǔ)空間小于64M,其余塊所占的存儲(chǔ)空間均等于64M ;其次按照“HDFS中的各服務(wù)器的已使用存儲(chǔ)空間均衡”的原則,將各塊映射到HDFS中的一個(gè)或者多個(gè)服務(wù)器的存儲(chǔ)空間上。當(dāng)服務(wù)器上安裝的應(yīng)用/虛擬機(jī)生成的數(shù)據(jù)所占的存儲(chǔ)空間等于或者小于64M時(shí),按照“HDFS中的各服務(wù)器的已使用存儲(chǔ)空間均衡”的原則,將該數(shù)據(jù)映射到HDFS中、已使用存儲(chǔ)空間最小的服務(wù)器的存儲(chǔ)空間上。
[0005]由于上述方案中按照“負(fù)載均衡”的原則為服務(wù)器上安裝的應(yīng)用/虛擬機(jī)生成的數(shù)據(jù)分配物理位置,因此,該數(shù)據(jù)中的部分/全部數(shù)據(jù)可能存儲(chǔ)在分布式存儲(chǔ)系統(tǒng)中的其他服務(wù)器的存儲(chǔ)空間上。這樣,該服務(wù)器往往需要從其他服務(wù)器的存儲(chǔ)空間上讀取該數(shù)據(jù),從而造成讀取數(shù)據(jù)時(shí)延大的問(wèn)題,進(jìn)而導(dǎo)致系統(tǒng)性能較差。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例提供一種存儲(chǔ)數(shù)據(jù)的方法和裝置,用以減少讀取數(shù)據(jù)時(shí)的時(shí)延,從而提聞系統(tǒng)性能。
[0007]為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0008]第一方面,提供一種存儲(chǔ)數(shù)據(jù)的方法,應(yīng)用于分布式存儲(chǔ)系統(tǒng),所述分布式存儲(chǔ)系統(tǒng)包括第一服務(wù)器和其他服務(wù)器,所述方法包括:
[0009]確定所述第一服務(wù)器生成的第一數(shù)據(jù);
[0010]判斷所述第一服務(wù)器的剩余存儲(chǔ)空間與所述第一數(shù)據(jù)所占的存儲(chǔ)空間的大小關(guān)系;
[0011]如果所述第一服務(wù)器的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,且所述第一服務(wù)器的已使用存儲(chǔ)空間大于所述其他服務(wù)器的最小已使用存儲(chǔ)空間時(shí),將所述第一數(shù)據(jù)存儲(chǔ)在所述第一服務(wù)器的剩余存儲(chǔ)空間中。
[0012]結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述第一服務(wù)器包含一虛擬機(jī),所述第一數(shù)據(jù)是所述虛擬機(jī)生成的數(shù)據(jù);所述其他服務(wù)器包括第二服務(wù)器;所述方法還包括:
[0013]如果所述第一服務(wù)器的剩余存儲(chǔ)空間小于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,則向所述第二服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的第一指示消息;所述第一指示消息用于指示所述第二服務(wù)器將所述第一數(shù)據(jù)存儲(chǔ)在所述第二服務(wù)器的剩余存儲(chǔ)空間中;
[0014]在所述虛擬機(jī)對(duì)應(yīng)的除所述第一數(shù)據(jù)之外的其他數(shù)據(jù)所占的存儲(chǔ)空間小于或者等于所述第二服務(wù)器的剩余存儲(chǔ)空間時(shí),將所述虛擬機(jī)和所述其他數(shù)據(jù)遷移到所述第二服務(wù)器上。
[0015]結(jié)合第一方面,在第二種可能的實(shí)現(xiàn)方式中,所述其他服務(wù)器包括第二服務(wù)器;所述方法還包括:
[0016]如果所述第一服務(wù)器的剩余存儲(chǔ)空間小于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,則向所述第二服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的第一指示消息;所述第一指示消息用于指示所述第二服務(wù)器將所述第一數(shù)據(jù)存儲(chǔ)在所述第二服務(wù)器的剩余存儲(chǔ)空間中;
[0017]更新所述第一服務(wù)器的剩余存儲(chǔ)空間;
[0018]當(dāng)所述第一服務(wù)器更新后的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間時(shí),向所述第二服務(wù)器發(fā)送第二指示消息;所述第二指示消息用于指示所述第二服務(wù)器將所述第一數(shù)據(jù)遷移到所述第一服務(wù)器;
[0019]接收所述第二服務(wù)器發(fā)送的所述第一數(shù)據(jù);
[0020]將所述第一數(shù)據(jù)存儲(chǔ)在所述第一服務(wù)器更新后的剩余存儲(chǔ)空間中。
[0021]結(jié)合第一方面、第一方面的第一種可能的實(shí)現(xiàn)方式或者第二種可能的實(shí)現(xiàn)方式任一種,在第三種可能的實(shí)現(xiàn)方式中,所述其他服務(wù)器還包括第三服務(wù)器,所述方法還包括:
[0022]向所述第三服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的副本的第三指示消息,所述第三指示消息用于指示所述第三服務(wù)器將所述第一數(shù)據(jù)的副本存儲(chǔ)在所述第三服務(wù)器的剩余存儲(chǔ)空間中。
[0023]第二方面,提供一種存儲(chǔ)數(shù)據(jù)的方法,應(yīng)用于分布式存儲(chǔ)系統(tǒng),所述分布式存儲(chǔ)系統(tǒng)包括第一服務(wù)器和其他服務(wù)器,所述方法包括:
[0024]確定所述第一服務(wù)器生成的第一數(shù)據(jù);所述第一數(shù)據(jù)所占的存儲(chǔ)空間大于所述分布式存儲(chǔ)系統(tǒng)的最小存儲(chǔ)單元的最大值;
[0025]判斷所述第一服務(wù)器的剩余存儲(chǔ)空間與所述第一數(shù)據(jù)所占的存儲(chǔ)空間的大小關(guān)系;
[0026]如果所述第一服務(wù)器的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,且所述第一服務(wù)器的已使用存儲(chǔ)空間小于或者等于所述其他服務(wù)器的最小已使用存儲(chǔ)空間時(shí),將所述第一數(shù)據(jù)存儲(chǔ)在所述第一服務(wù)器的剩余存儲(chǔ)空間中。
[0027]第三方面,提供一種服務(wù)器,應(yīng)用于分布式存儲(chǔ)系統(tǒng),所述分布式存儲(chǔ)系統(tǒng)還包括其他服務(wù)器,所述服務(wù)器包括:
[0028]確定模塊,用于確定所述服務(wù)器生成的第一數(shù)據(jù);
[0029]判斷模塊,用于判斷所述服務(wù)器的剩余存儲(chǔ)空間與所述第一數(shù)據(jù)所占的存儲(chǔ)空間的大小關(guān)系;
[0030]存儲(chǔ)模塊,用于在所述判斷模塊確定所述服務(wù)器的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,且所述服務(wù)器的已使用存儲(chǔ)空間大于所述其他服務(wù)器的最小已使用存儲(chǔ)空間時(shí),將所述第一數(shù)據(jù)存儲(chǔ)在所述服務(wù)器的剩余存儲(chǔ)空間中。
[0031]結(jié)合第三方面,在第一種可能的實(shí)現(xiàn)方式中,所述服務(wù)器包含一虛擬機(jī),所述第一數(shù)據(jù)是所述虛擬機(jī)生成的數(shù)據(jù);所述其他服務(wù)器包括第二服務(wù)器,所述服務(wù)器還包括:
[0032]發(fā)送模塊,用于在所述判斷模塊確定所述服務(wù)器的剩余存儲(chǔ)空間小于所述第一數(shù)據(jù)所占的存儲(chǔ)空間時(shí),向所述第二服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的第一指示消息;所述第一指示消息用于指示所述第二服務(wù)器將所述第一數(shù)據(jù)存儲(chǔ)在所述第二服務(wù)器的剩余存儲(chǔ)空間中;
[0033]遷移模塊,用于在所述虛擬機(jī)對(duì)應(yīng)的除所述第一數(shù)據(jù)之外的其他數(shù)據(jù)所占的存儲(chǔ)空間小于或者等于所述第二服務(wù)器的剩余存儲(chǔ)空間時(shí),將所述虛擬機(jī)和所述其他數(shù)據(jù)遷移到所述第二服務(wù)器上。
[0034]結(jié)合第三方面,在第二種可能的實(shí)現(xiàn)方式中,所述其他服務(wù)器包括第二服務(wù)器,所述服務(wù)器還包括:
[0035]發(fā)送模塊,用于在所述判斷模塊確定所述服務(wù)器的剩余存儲(chǔ)空間小于所述第一數(shù)據(jù)所占的存儲(chǔ)空間時(shí),向所述第二服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的第一指示消息;所述第一指示消息用于指示所述第二服務(wù)器將所述第一數(shù)據(jù)存儲(chǔ)在所述第二服務(wù)器的剩余存儲(chǔ)空間中;
[0036]更新模塊,用于更新所述服務(wù)器的剩余存儲(chǔ)空間;
[0037]所述發(fā)送模塊還用于,當(dāng)所述服務(wù)器更新后的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間時(shí),向所述第二服務(wù)器發(fā)送第二指示消息;所述第二指示消息用于指示所述第二服務(wù)器將所述第一數(shù)據(jù)遷移到所述服務(wù)器;
[0038]接收模塊,用于接收所述第二服務(wù)器發(fā)送的所述第一數(shù)據(jù);
[0039]所述存儲(chǔ)模塊還用于,將所述第一數(shù)據(jù)存儲(chǔ)在所述服務(wù)器更新后的剩余存儲(chǔ)空間中。
[0040]結(jié)合第三方面、第三方面的第一種可能的實(shí)現(xiàn)方式或者第三方面的第二種可能的實(shí)現(xiàn)方式任一種,在第三種可能的實(shí)現(xiàn)方式中,所述其他服務(wù)器還包括第三服務(wù)器;
[0041]所述發(fā)送模塊還用于,向所述第三服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的副本的第三指示消息,所述第三指示消息用于指示所述第三服務(wù)器將所述第一數(shù)據(jù)的副本存儲(chǔ)在所述第三服務(wù)器的剩余存儲(chǔ)空間中。
[0042]第四方面,提供一種服務(wù)器,應(yīng)用于分布式存儲(chǔ)系統(tǒng),所述分布式存儲(chǔ)系統(tǒng)還包括其他服務(wù)器,所述服務(wù)器包括:
[0043]處理器,用于確定所述服務(wù)器生成的第一數(shù)據(jù);以及判斷所述服務(wù)器的剩余存儲(chǔ)空間與所述第一數(shù)據(jù)所占的存儲(chǔ)空間的大小關(guān)系;
[0044]存儲(chǔ)器,用于在所述處理器確定所述服務(wù)器的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,且所述服務(wù)器的已使用存儲(chǔ)空間大于所述其他服務(wù)器的最小已使用存儲(chǔ)空間時(shí),在所述處理器的控制下將所述第一數(shù)據(jù)存儲(chǔ)在所述服務(wù)器的剩余存儲(chǔ)空間中。
[0045]結(jié)合第四方面,在第一種可能的實(shí)現(xiàn)方式中,所述服務(wù)器包含一虛擬機(jī),所述第一數(shù)據(jù)是所述虛擬機(jī)生成的數(shù)據(jù);所述其他服務(wù)器包括第二服務(wù)器,所述服務(wù)器還包括:
[0046]發(fā)送器,用于在所述處理器確定所述服務(wù)器的剩余存儲(chǔ)空間小于所述第一數(shù)據(jù)所占的存儲(chǔ)空間時(shí),向所述第二服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的第一指示消息;所述第一指示消息用于指示所述第二服務(wù)器將所述第一數(shù)據(jù)存儲(chǔ)在所述第二服務(wù)器的剩余存儲(chǔ)空間中;
[0047]所述處理器還用于,在所述虛擬機(jī)對(duì)應(yīng)的除所述第一數(shù)據(jù)之外的其他數(shù)據(jù)所占的存儲(chǔ)空間小于或者等于所述第二服務(wù)器的剩余存儲(chǔ)空間時(shí),將所述虛擬機(jī)和所述其他數(shù)據(jù)遷移到所述第二服務(wù)器上。
[0048]結(jié)合第四方面,在第二種可能的實(shí)現(xiàn)方式中,所述其他服務(wù)器包括第二服務(wù)器;
[0049]所述處理器還用于,更新所述服務(wù)器的剩余存儲(chǔ)空間;
[0050]所述發(fā)送器還用于,當(dāng)所述服務(wù)器更新后的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間時(shí),向所述第二服務(wù)器發(fā)送第二指示消息;所述第二指示消息用于指示所述第二服務(wù)器將所述第一數(shù)據(jù)遷移到所述服務(wù)器;
[0051]所述服務(wù)器還包括:接收器,用于接收所述第二服務(wù)器發(fā)送的所述第一數(shù)據(jù);
[0052]所述存儲(chǔ)器還用于,在所述處理器的控制下將所述第一數(shù)據(jù)存儲(chǔ)在所述服務(wù)器更新后的剩余存儲(chǔ)空間中。
[0053]結(jié)合第四方面、第四方面的第一種可能的實(shí)現(xiàn)方式或者第四方面的第二種可能的實(shí)現(xiàn)方式任一種,在第三種可能的實(shí)現(xiàn)方式中,所述其他服務(wù)器還包括第三服務(wù)器;
[0054]所述發(fā)送器還用于,向所述第三服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的副本的第三指示消息,所述第三指示消息用于指示所述第三服務(wù)器將所述第一數(shù)據(jù)的副本存儲(chǔ)在所述第三服務(wù)器的剩余存儲(chǔ)空間中。
[0055]第五方面,提供一種服務(wù)器,應(yīng)用于分布式存儲(chǔ)系統(tǒng),所述分布式存儲(chǔ)系統(tǒng)還包括其他服務(wù)器,所述服務(wù)器包括:
[0056]確定模塊,用于確定所述服務(wù)器生成的第一數(shù)據(jù);所述第一數(shù)據(jù)所占的存儲(chǔ)空間大于所述分布式存儲(chǔ)系統(tǒng)的最小存儲(chǔ)單元的最大值;
[0057]判斷模塊,用于判斷所述服務(wù)器的剩余存儲(chǔ)空間與所述第一數(shù)據(jù)所占的存儲(chǔ)空間的大小關(guān)系;
[0058]存儲(chǔ)模塊,用于在所述判斷模塊確定所述服務(wù)器的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,且所述服務(wù)器的已使用存儲(chǔ)空間小于或者等于所述其他服務(wù)器的最小已使用存儲(chǔ)空間時(shí),將所述第一數(shù)據(jù)存儲(chǔ)在所述服務(wù)器的剩余存儲(chǔ)空間中。
[0059]第六方面,提供一種服務(wù)器,應(yīng)用于分布式存儲(chǔ)系統(tǒng),所述分布式存儲(chǔ)系統(tǒng)還包括其他服務(wù)器,所述服務(wù)器包括:
[0060]處理器,用于確定所述服務(wù)器生成的第一數(shù)據(jù);以及判斷所述服務(wù)器的剩余存儲(chǔ)空間與所述第一數(shù)據(jù)所占的存儲(chǔ)空間的大小關(guān)系;所述第一數(shù)據(jù)所占的存儲(chǔ)空間大于所述分布式存儲(chǔ)系統(tǒng)的最小存儲(chǔ)單元的最大值;
[0061]存儲(chǔ)器,用于在所述處理器確定所述服務(wù)器的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,且所述服務(wù)器的已使用存儲(chǔ)空間小于或者等于所述其他服務(wù)器的最小已使用存儲(chǔ)空間時(shí),在所述處理器的控制下將所述第一數(shù)據(jù)存儲(chǔ)在所述服務(wù)器的剩余存儲(chǔ)空間中。
[0062]上述技術(shù)方案,應(yīng)用于分布式存儲(chǔ)系統(tǒng),在一服務(wù)器確定其剩余存儲(chǔ)空間大于或者等于其生成的一數(shù)據(jù)所占的存儲(chǔ)空間時(shí),優(yōu)先將該數(shù)據(jù)存儲(chǔ)在該服務(wù)器的剩余存儲(chǔ)空間中。這樣,該服務(wù)器可以直接從本地讀取該數(shù)據(jù),而不需要從網(wǎng)絡(luò)中的其他服務(wù)器上讀取該數(shù)據(jù),從而達(dá)到縮短時(shí)延、提高系統(tǒng)性能的有益效果。解決了現(xiàn)有技術(shù)中,因通過(guò)在網(wǎng)絡(luò)中的其他服務(wù)器上讀取數(shù)據(jù)導(dǎo)致的時(shí)延長(zhǎng)、系統(tǒng)性能較差的問(wèn)題。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0063]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0064]圖1為本發(fā)明實(shí)施例一提供的一種存儲(chǔ)數(shù)據(jù)的方法的流程圖;
[0065]圖2為本發(fā)明實(shí)施例二提供的一種存儲(chǔ)數(shù)據(jù)的方法的流程圖;
[0066]圖3為本發(fā)明實(shí)施例1提供的一種存儲(chǔ)數(shù)據(jù)的方法的流程圖;
[0067]圖4為本發(fā)明實(shí)施例2提供的一種存儲(chǔ)數(shù)據(jù)的方法的流程圖;
[0068]圖5為本發(fā)明實(shí)施例三提供的一種服務(wù)器的結(jié)構(gòu)示意圖;
[0069]圖6為本發(fā)明實(shí)施例三提供的另一種服務(wù)器的結(jié)構(gòu)示意圖;
[0070]圖7為本發(fā)明實(shí)施例四提供的一種服務(wù)器的結(jié)構(gòu)示意圖;
[0071]圖8為本發(fā)明實(shí)施例四提供的另一種服務(wù)器的結(jié)構(gòu)示意圖;
[0072]圖9為本發(fā)明實(shí)施例五提供的一種服務(wù)器的結(jié)構(gòu)示意圖;
[0073]圖10為本發(fā)明實(shí)施例六提供的一種服務(wù)器的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0074]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0075]本文中術(shù)語(yǔ)“系統(tǒng)”和“網(wǎng)絡(luò)”在本文中常被可互換使用。本文中術(shù)語(yǔ)“和/或”,僅僅是一種描述關(guān)聯(lián)對(duì)象的關(guān)聯(lián)關(guān)系,表不可以存在二種關(guān)系,例如,A和/或B,可以表不:單獨(dú)存在A,同時(shí)存在A和B,單獨(dú)存在B這三種情況。本文中字符“/”,一般表示前后關(guān)聯(lián)對(duì)象是一種“或”的關(guān)系。
[0076]實(shí)施例一
[0077]如圖1所示,為本實(shí)施例提供的一種存儲(chǔ)數(shù)據(jù)的方法,應(yīng)用于分布式存儲(chǔ)系統(tǒng),所述分布式存儲(chǔ)系統(tǒng)包括第一服務(wù)器和其他服務(wù)器,所述方法包括:
[0078]101:確定所述第一服務(wù)器生成的第一數(shù)據(jù)。
[0079]其中,“第一服務(wù)器”可以為分布式存儲(chǔ)系統(tǒng)中的任一服務(wù)器;“其他服務(wù)器”是指該分布式存儲(chǔ)系統(tǒng)中、除第一服務(wù)器之外的所有服務(wù)器?!暗谝粩?shù)據(jù)”可以為第一服務(wù)器生成的任一數(shù)據(jù)。本實(shí)施例的執(zhí)行主體可以為“第一服務(wù)器”。
[0080]分布式存儲(chǔ)系統(tǒng)中的服務(wù)器可以安裝一個(gè)或者多個(gè)虛擬機(jī),也可以不安裝虛擬機(jī)。當(dāng)服務(wù)器上安裝有虛擬機(jī)時(shí),該服務(wù)器與其上安裝的虛擬機(jī)共享該服務(wù)器對(duì)應(yīng)的磁盤(pán)陣列。另外,當(dāng)服務(wù)器上安裝有一個(gè)或者多個(gè)虛擬機(jī)時(shí),該服務(wù)器生成的第一數(shù)據(jù)可以為:該服務(wù)器(物理機(jī))上安裝的一應(yīng)用生成的數(shù)據(jù);也可以為該服務(wù)器上安裝的一虛擬機(jī)生成的數(shù)據(jù)。
[0081]進(jìn)一步地,當(dāng)一數(shù)據(jù)為服務(wù)器上安裝的一應(yīng)用生成的數(shù)據(jù)時(shí),該服務(wù)器會(huì)記錄該數(shù)據(jù)與該服務(wù)器之間的對(duì)應(yīng)關(guān)系;當(dāng)一數(shù)據(jù)為服務(wù)器上安裝的一虛擬機(jī)生成的數(shù)據(jù)時(shí),該服務(wù)器會(huì)記錄該數(shù)據(jù)與該虛擬機(jī)之間的對(duì)應(yīng)關(guān)系。具體可以通過(guò)生成數(shù)據(jù)路由表來(lái)記錄該對(duì)應(yīng)關(guān)系。一般地,分布式存儲(chǔ)系統(tǒng)中的每個(gè)服務(wù)器均可共享該數(shù)據(jù)路由表。在本文中,當(dāng)生成一數(shù)據(jù)的應(yīng)用/虛擬機(jī)所在的服務(wù)器與存儲(chǔ)該數(shù)據(jù)的存儲(chǔ)空間所對(duì)應(yīng)的服務(wù)器為同一服務(wù)器時(shí),認(rèn)為實(shí)現(xiàn)了對(duì)該數(shù)據(jù)的本地化。
[0082]102:判斷所述第一服務(wù)器的剩余存儲(chǔ)空間與所述第一數(shù)據(jù)所占的存儲(chǔ)空間的大小關(guān)系。
[0083]其中,“服務(wù)器的剩余存儲(chǔ)空間”是指該服務(wù)器對(duì)應(yīng)的磁盤(pán)陣列和/或該服務(wù)器本身的存儲(chǔ)空間中未存儲(chǔ)數(shù)據(jù)的、可用存儲(chǔ)空間。剩余存儲(chǔ)空間的大小可以為0,也可以包括一個(gè)或者多個(gè)存儲(chǔ)單元。每個(gè)服務(wù)器的剩余存儲(chǔ)空間可能因刪除已存儲(chǔ)的數(shù)據(jù)、增加待存儲(chǔ)的數(shù)據(jù)、改變?cè)摲?wù)器對(duì)應(yīng)的磁盤(pán)陣列的大小等而更新。服務(wù)器可以包括但不限于按照以下幾種方式獲取其剩余存儲(chǔ)空間:周期性獲取其剩余存儲(chǔ)空間,定期獲取其剩余存儲(chǔ)空間,生成一數(shù)據(jù)時(shí)獲取其剩余存儲(chǔ)空間等。
[0084]本實(shí)施例對(duì)“第一數(shù)據(jù)所占的存儲(chǔ)空間”的大小不進(jìn)行限定。
[0085]在步驟102之前,該方法還可以包括:獲取所述第一數(shù)據(jù)所占的存儲(chǔ)空間,以及所述第一服務(wù)器的剩余存儲(chǔ)空間。
[0086]103:如果所述第一服務(wù)器的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,且所述第一服務(wù)器的已使用存儲(chǔ)空間大于所述其他服務(wù)器的最小已使用存儲(chǔ)空間時(shí),將所述第一數(shù)據(jù)存儲(chǔ)在所述第一服務(wù)器的剩余存儲(chǔ)空間中。
[0087]其中,步驟103具體可以包括:所述第一服務(wù)器在確定其剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,且所述第一服務(wù)器的已使用存儲(chǔ)空間大于所述其他服務(wù)器的最小已使用存儲(chǔ)空間時(shí),為所述第一數(shù)據(jù)分配存儲(chǔ)地址,并將所述第一數(shù)據(jù)存儲(chǔ)在所述存儲(chǔ)地址對(duì)應(yīng)的存儲(chǔ)單元中;所述存儲(chǔ)地址為所述第一服務(wù)器的剩余存儲(chǔ)空間中的一個(gè)或者多個(gè)存儲(chǔ)單元對(duì)應(yīng)的存儲(chǔ)地址。
[0088]示例性的,通過(guò)一個(gè)具體示例對(duì)“其他服務(wù)器的最小已使用存儲(chǔ)空間”進(jìn)行說(shuō)明:假設(shè)其他服務(wù)器由服務(wù)器1、服務(wù)器2、服務(wù)器3構(gòu)成,該3個(gè)服務(wù)器的已使用存儲(chǔ)空間的大小分別為:A、B、C,且A > B > C ;那么,其他服務(wù)器的最小已使用存儲(chǔ)空間為C。
[0089]進(jìn)一步地,為了與現(xiàn)有技術(shù)方案進(jìn)行詳細(xì)對(duì)比,下面從第一數(shù)據(jù)所占的存儲(chǔ)空間與分布式存儲(chǔ)系統(tǒng)的最小存儲(chǔ)單元的最大值的大小關(guān)系的角度對(duì)步驟103進(jìn)行說(shuō)明。具體的,在包含特征“第一服務(wù)器的剩余存儲(chǔ)空間大于或者等于第一數(shù)據(jù)所占的存儲(chǔ)空間”的情況下,步驟103可以包括以下場(chǎng)景I和場(chǎng)景2:
[0090]場(chǎng)景1:第一數(shù)據(jù)所占的存儲(chǔ)空間大于分布式存儲(chǔ)系統(tǒng)的最小存儲(chǔ)單元的最大值,且第一服務(wù)器的已使用存儲(chǔ)空間大于其他服務(wù)器的最小已使用存儲(chǔ)空間。
[0091]場(chǎng)景2:第一數(shù)據(jù)所占的存儲(chǔ)空間小于或者等于分布式存儲(chǔ)系統(tǒng)的最小存儲(chǔ)單元的最大值,且第一服務(wù)器的已使用存儲(chǔ)空間大于其他服務(wù)器的最小已使用存儲(chǔ)空間。
[0092]其中,針對(duì)場(chǎng)景I,在現(xiàn)有技術(shù)方案中,第一服務(wù)器需要對(duì)第一數(shù)據(jù)進(jìn)行分塊,并按照“負(fù)載均衡”的原則,分別將每個(gè)塊存儲(chǔ)在分布式存儲(chǔ)系統(tǒng)的多個(gè)服務(wù)器的剩余存儲(chǔ)空間中。針對(duì)場(chǎng)景2,在現(xiàn)有技術(shù)方案中,第一服務(wù)器需要將第一數(shù)據(jù)存儲(chǔ)在其他服務(wù)器中的最大剩余存儲(chǔ)空間中。
[0093]需要說(shuō)明的是,實(shí)際實(shí)現(xiàn)時(shí),還可能出現(xiàn)以下場(chǎng)景A和場(chǎng)景B:
[0094]場(chǎng)景A:第一數(shù)據(jù)所占的存儲(chǔ)空間大于分布式存儲(chǔ)系統(tǒng)的最小存儲(chǔ)單元的最大值,且第一服務(wù)器的已使用存儲(chǔ)空間小于或者等于其他服務(wù)器的最小已使用存儲(chǔ)空間。
[0095]場(chǎng)景B:第一數(shù)據(jù)所占的存儲(chǔ)空間小于或者等于分布式存儲(chǔ)系統(tǒng)的最小存儲(chǔ)單元的最大值,且第一服務(wù)器的已使用存儲(chǔ)空間小于或者等于其他服務(wù)器的最小已使用存儲(chǔ)空間。
[0096]其中,本文中提供了針對(duì)場(chǎng)景A的實(shí)現(xiàn)方法,在下述實(shí)施例二中有相應(yīng)描述。針對(duì)場(chǎng)景B,與現(xiàn)有技術(shù)方案的實(shí)現(xiàn)方法相同,具體的,第一服務(wù)器將第一數(shù)據(jù)存儲(chǔ)在其剩余存儲(chǔ)空間中。
[0097]綜述,由上述場(chǎng)景1、場(chǎng)景2、場(chǎng)景A和場(chǎng)景B可知,實(shí)際實(shí)現(xiàn)時(shí),本發(fā)明實(shí)施例提供的存儲(chǔ)數(shù)據(jù)的方法不需要限定第一數(shù)據(jù)所占的存儲(chǔ)空間的大小,也不需要限定第一服務(wù)器的已使用存儲(chǔ)空間與其他服務(wù)器的已使用存儲(chǔ)空間的大小關(guān)系。具體實(shí)現(xiàn)方式包括但不限于下述實(shí)施例1和實(shí)施例2所示的方法。
[0098]在本發(fā)明的一個(gè)實(shí)施例中,所述第一服務(wù)器包含一虛擬機(jī),所述第一數(shù)據(jù)是所述虛擬機(jī)生成的數(shù)據(jù);所述其他服務(wù)器包括第二服務(wù)器;所述方法還包括下述步驟A1-A2:
[0099]步驟Al:如果所述第一服務(wù)器的剩余存儲(chǔ)空間小于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,則向所述第二服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的第一指示消息;所述第一指示消息用于指示所述第二服務(wù)器將所述第一數(shù)據(jù)存儲(chǔ)在所述第二服務(wù)器的剩余存儲(chǔ)空間中。
[0100]步驟A2:在所述虛擬機(jī)對(duì)應(yīng)的除所述第一數(shù)據(jù)之外的其他數(shù)據(jù)所占的存儲(chǔ)空間小于或者等于所述第二服務(wù)器的剩余存儲(chǔ)空間時(shí),將所述虛擬機(jī)和所述其他數(shù)據(jù)遷移到所述第二服務(wù)器上。
[0101]其中,“第二服務(wù)器”可以為該分布式存儲(chǔ)系統(tǒng)中的、除第一服務(wù)器之外的、滿(mǎn)足“剩余存儲(chǔ)空間大于或者等于所述虛擬機(jī)對(duì)應(yīng)的除第一數(shù)據(jù)之外的其他數(shù)據(jù)所占的存儲(chǔ)空間”條件的任一服務(wù)器。
[0102]步驟Al可以包括:A11)如果所述第一服務(wù)器在確定其剩余存儲(chǔ)空間小于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,則確定與所述虛擬機(jī)對(duì)應(yīng)的除所述第一數(shù)據(jù)之外的其他數(shù)據(jù)所占的存儲(chǔ)空間的大??;A12)將剩余存儲(chǔ)空間大于或者等于該存儲(chǔ)空間的服務(wù)器作為第二服務(wù)器;A13)向所述第二服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的第一指示消息。
[0103]示例性的,“將所述虛擬機(jī)和所述虛擬機(jī)對(duì)應(yīng)的其他數(shù)據(jù)遷移到所述第二服務(wù)器上”的具體實(shí)現(xiàn)方式如現(xiàn)有技術(shù),此處不再描述。
[0104]需要說(shuō)明的是,實(shí)際實(shí)現(xiàn)時(shí),步驟A2可以在步驟Al之后立即執(zhí)行;也可以在所述虛擬機(jī)需要讀取第一數(shù)據(jù)時(shí)執(zhí)行。其中,前者可以描述為:在將第一數(shù)據(jù)寫(xiě)入第二服務(wù)器時(shí)實(shí)現(xiàn)第一數(shù)據(jù)的本地化;后者可以描述為:在所述虛擬機(jī)需要讀取所述第一數(shù)據(jù)時(shí)實(shí)現(xiàn)第一數(shù)據(jù)的本地化。
[0105]該實(shí)施例中,在“第一服務(wù)器將所述虛擬機(jī)遷移到第二服務(wù)器上”之后,所述虛擬機(jī)成為安裝在第二服務(wù)器上的一虛擬機(jī),第一服務(wù)器上不再存在所述虛擬機(jī)。在“第一服務(wù)器將與所述其他數(shù)據(jù)遷移到第二服務(wù)器上”之后,所述其他數(shù)據(jù)均存儲(chǔ)在第二服務(wù)器的存儲(chǔ)空間中。另外,可以將該可選的實(shí)施例稱(chēng)為通過(guò)虛擬機(jī)遷移的方式實(shí)現(xiàn)第一數(shù)據(jù)的本地化。
[0106]在本發(fā)明的另一個(gè)實(shí)施例中,所述其他服務(wù)器包括第二服務(wù)器;所述方法還包括下述步驟B1-B4:
[0107]步驟B1:如果所述第一服務(wù)器的剩余存儲(chǔ)空間小于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,則向所述第二服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的第一指示消息;所述第一指示消息用于指示所述第二服務(wù)器將所述第一數(shù)據(jù)存儲(chǔ)在所述第二服務(wù)器的剩余存儲(chǔ)空間中。
[0108]步驟B2:更新所述第一服務(wù)器的剩余存儲(chǔ)空間。
[0109]步驟B3:當(dāng)所述第一服務(wù)器更新后的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間時(shí),向所述第二服務(wù)器發(fā)送第二指示消息;所述第二指示消息用于指示所述第二服務(wù)器將所述第一數(shù)據(jù)遷移到所述第一服務(wù)器。
[0110]步驟B4:接收所述第二服務(wù)器發(fā)送的所述第一數(shù)據(jù);將所述第一數(shù)據(jù)存儲(chǔ)在所述第一服務(wù)器更新后的剩余存儲(chǔ)空間中。
[0111]其中,在該實(shí)施例中,第二服務(wù)器在向第一服務(wù)器發(fā)送第一數(shù)據(jù)之后,第二服務(wù)器可以將本地存儲(chǔ)的第一數(shù)據(jù)刪除,也可以不刪除。在前者的實(shí)現(xiàn)方式中,可以將本實(shí)施例稱(chēng)為通過(guò)第一數(shù)據(jù)遷移的方式實(shí)現(xiàn)第一數(shù)據(jù)的本地化;在后者的實(shí)現(xiàn)方式中,可以認(rèn)為分布式存儲(chǔ)系統(tǒng)中存儲(chǔ)的第一數(shù)據(jù)的副本由η副本變成了 η+1副本,其中,存儲(chǔ)第一數(shù)據(jù)的副本的方法可以參見(jiàn)下文相關(guān)的實(shí)施例。需要說(shuō)明的是,為了與上述可選的實(shí)施例對(duì)應(yīng),下文中將該可選的實(shí)施例稱(chēng)為通過(guò)第一數(shù)據(jù)遷移的方式實(shí)現(xiàn)第一數(shù)據(jù)的本地化。
[0112]在本發(fā)明的又一實(shí)施例中:所述第一服務(wù)器包含一虛擬機(jī),所述第一數(shù)據(jù)是所述虛擬機(jī)生成的數(shù)據(jù),所述其他服務(wù)器還包括第三服務(wù)器,所述方法還包括以下步驟C:
[0113]步驟C:所述第一服務(wù)器向所述第三服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的副本的第三指示消息,所述第三指示消息用于指示所述第三服務(wù)器將所述第一數(shù)據(jù)的副本存儲(chǔ)在所述第三服務(wù)器的剩余存儲(chǔ)空間中。
[0114]其中,“第三服務(wù)器”可以用于存儲(chǔ)第一數(shù)據(jù)的副本,分布式存儲(chǔ)系統(tǒng)中可以包含一個(gè)或者多個(gè)第三服務(wù)器。實(shí)際實(shí)現(xiàn)時(shí),分布式存儲(chǔ)系統(tǒng)中的每個(gè)服務(wù)器均可獲知該分布式存儲(chǔ)系統(tǒng)中所有服務(wù)器的剩余存儲(chǔ)空間。該實(shí)施例中,第一服務(wù)器可以按照“負(fù)載均衡”的原則,選擇分布式存儲(chǔ)系統(tǒng)中的一個(gè)或者多個(gè)服務(wù)器作為第三服務(wù)器。
[0115]該實(shí)施例通過(guò)存儲(chǔ)第一數(shù)據(jù)的副本,可以達(dá)到增強(qiáng)分布式存儲(chǔ)系統(tǒng)的性能的有益效果。具體的:當(dāng)?shù)谝粩?shù)據(jù)損壞或者丟失時(shí),可以通過(guò)調(diào)用第一數(shù)據(jù)的副本使分布式存儲(chǔ)系統(tǒng)正常運(yùn)行,從而增強(qiáng)系統(tǒng)的穩(wěn)定性。
[0116]本發(fā)明實(shí)施例提供的存儲(chǔ)數(shù)據(jù)的方法,應(yīng)用于包含第一服務(wù)器和其他服務(wù)器的分布式存儲(chǔ)系統(tǒng)中,在第一服務(wù)器確定其剩余存儲(chǔ)空間大于或者等于其生成的一數(shù)據(jù)所占的存儲(chǔ)空間,且第一服務(wù)器的已使用存儲(chǔ)空間大于其他服務(wù)器的最小已使用存儲(chǔ)空間時(shí),優(yōu)先將該數(shù)據(jù)存儲(chǔ)在該服務(wù)器的剩余存儲(chǔ)空間中。這樣,第一服務(wù)器可以直接從本地讀取該數(shù)據(jù),而不需要從網(wǎng)絡(luò)中的其他服務(wù)器上讀取該數(shù)據(jù),從而達(dá)到縮短時(shí)延、提高系統(tǒng)性能的有益效果。解決了現(xiàn)有技術(shù)中,因在網(wǎng)絡(luò)中的其他服務(wù)器上讀取數(shù)據(jù)導(dǎo)致的時(shí)延長(zhǎng)、系統(tǒng)性能較差的問(wèn)題。
[0117]實(shí)施例二
[0118]本實(shí)施例提供的存儲(chǔ)數(shù)據(jù)的方法,應(yīng)用于分布式存儲(chǔ)系統(tǒng),所述分布式存儲(chǔ)系統(tǒng)包括第一服務(wù)器和其他服務(wù)器。本實(shí)施例描述的是上述實(shí)施例一中的場(chǎng)景A下存儲(chǔ)數(shù)據(jù)的方法。
[0119]如圖2所示,包括:
[0120]201:確定所述第一服務(wù)器生成的第一數(shù)據(jù);所述第一數(shù)據(jù)所占的存儲(chǔ)空間大于所述分布式存儲(chǔ)系統(tǒng)的最小存儲(chǔ)單元的最大值。
[0121]202:判斷所述第一服務(wù)器的剩余存儲(chǔ)空間與所述第一數(shù)據(jù)所占的存儲(chǔ)空間的大小關(guān)系。
[0122]203:如果所述第一服務(wù)器的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,且所述第一服務(wù)器的已使用存儲(chǔ)空間小于或者等于所述其他服務(wù)器的最小已使用存儲(chǔ)空間時(shí),將所述第一數(shù)據(jù)存儲(chǔ)在所述第一服務(wù)器的剩余存儲(chǔ)空間中。
[0123]進(jìn)一步地,針對(duì)本實(shí)施例的場(chǎng)景(即場(chǎng)景A),在現(xiàn)有技術(shù)方案中,第一服務(wù)器需要對(duì)第一數(shù)據(jù)進(jìn)行分塊,并按照“負(fù)載均衡”的原則,分別將每個(gè)塊存儲(chǔ)在分布式存儲(chǔ)系統(tǒng)的多個(gè)服務(wù)器的剩余存儲(chǔ)空間中。
[0124]可選的,在本發(fā)明的一個(gè)實(shí)施例中,所述方法還可以包括:上述實(shí)施例一中的步驟A1-A2,或者上述實(shí)施例一中的步驟B1-B4 ;另外,還可以包括上述實(shí)施例一中的步驟C。
[0125]需要說(shuō)明的是,本實(shí)施例中的相關(guān)解釋可以參考上述實(shí)施例一的相關(guān)部分。
[0126]本發(fā)明實(shí)施例提供的存儲(chǔ)數(shù)據(jù)的方法,應(yīng)用于包含第一服務(wù)器和其他服務(wù)器的分布式存儲(chǔ)系統(tǒng)中,在第一服務(wù)器確定其剩余存儲(chǔ)空間大于或者等于其生成的一數(shù)據(jù)所占的存儲(chǔ)空間,且第一服務(wù)器的已使用存儲(chǔ)空間小于或者等于其他服務(wù)器的最小已使用存儲(chǔ)空間時(shí),優(yōu)先將該數(shù)據(jù)存儲(chǔ)在該服務(wù)器的剩余存儲(chǔ)空間中;其中,該數(shù)據(jù)所占的存儲(chǔ)空間大于分布式存儲(chǔ)系統(tǒng)的最小存儲(chǔ)單元的最大值。這樣,第一服務(wù)器可以直接從本地讀取該數(shù)據(jù),而不需要從網(wǎng)絡(luò)中的其他服務(wù)器上讀取該數(shù)據(jù),從而達(dá)到縮短時(shí)延、提高系統(tǒng)性能的有益效果。解決了現(xiàn)有技術(shù)中,因在網(wǎng)絡(luò)中的其他服務(wù)器上讀取數(shù)據(jù)導(dǎo)致的時(shí)延長(zhǎng)、系統(tǒng)性能較差的問(wèn)題。
[0127]下面通過(guò)幾個(gè)具體的實(shí)施例對(duì)上述實(shí)施例一和實(shí)施例二提供的存儲(chǔ)數(shù)據(jù)的方法進(jìn)行示例性說(shuō)明:
[0128]實(shí)施例1
[0129]本實(shí)施例中第一服務(wù)器上不包含虛擬機(jī)。本實(shí)施例中的“本地”是指生成數(shù)據(jù)的應(yīng)用所在的服務(wù)器。
[0130]如圖3所示,為本實(shí)施例提供的一種存儲(chǔ)數(shù)據(jù)的方法,包括:
[0131]301:第一服務(wù)器(物理機(jī))上安裝的一應(yīng)用生成一數(shù)據(jù)。
[0132]示例性的,這里的“應(yīng)用”可以為現(xiàn)有技術(shù)中的任何一種應(yīng)用,例如,文字處理應(yīng)用、音頻處理應(yīng)用、視頻圖片處理應(yīng)用、計(jì)算機(jī)控制應(yīng)用、計(jì)算機(jī)輔助設(shè)計(jì)應(yīng)用、科學(xué)仿真應(yīng)用等。
[0133]假設(shè)4次執(zhí)行該步驟301,第一服務(wù)器(物理機(jī))上安裝的一應(yīng)用共生成4個(gè)數(shù)據(jù),分別為 D1、D2、D3、D4。
[0134]302:第一服務(wù)器獲取第一服務(wù)器的剩余存儲(chǔ)空間和該數(shù)據(jù)所占存儲(chǔ)空間。
[0135]具體地,步驟302可以實(shí)現(xiàn)為:第一服務(wù)器上的分布式存儲(chǔ)程序獲取第一服務(wù)器的剩余存儲(chǔ)空間和該數(shù)據(jù)所占存儲(chǔ)空間
[0136]示例性的,按照步驟301中的示例,4次執(zhí)行步驟302,獲取的第一服務(wù)器的剩余存儲(chǔ)空間分別為:X1、X2、X3、X4 ;數(shù)據(jù)D1、D2、D3、D4所占的空間的大小分別為:M1、M2、M3、M4。
[0137]303:第一服務(wù)器判斷其剩余存儲(chǔ)空間是否大于或者等于該數(shù)據(jù)所占存儲(chǔ)空間。
[0138]若是,則執(zhí)行步驟304 ;若否,則執(zhí)行步驟305。
[0139]具體地,步驟303可以實(shí)現(xiàn)為:第一服務(wù)器上的分布式存儲(chǔ)程序判斷第一服務(wù)器的剩余存儲(chǔ)空間是否大于或者等于該數(shù)據(jù)所占存儲(chǔ)空間。
[0140]示例性的,按照步驟302中的示例,假設(shè):X1 > M1、X2 > M2、X3 = M3、X4 < M4。
[0141]304:第一服務(wù)器將該數(shù)據(jù)存儲(chǔ)在第一服務(wù)器的剩余存儲(chǔ)空間中。具體包括:第一服務(wù)器上的分布式存儲(chǔ)程序?yàn)樵摂?shù)據(jù)分配存儲(chǔ)地址,并將該數(shù)據(jù)存儲(chǔ)在該存儲(chǔ)地址對(duì)應(yīng)的存儲(chǔ)模塊中;該存儲(chǔ)地址為第一服務(wù)器的剩余存儲(chǔ)空間中的一個(gè)或者多個(gè)存儲(chǔ)模塊對(duì)應(yīng)的存儲(chǔ)地址。
[0142]在執(zhí)行步驟304之后,則結(jié)束。
[0143]示例性的,按照步驟303中的示例,D1、D2、D3分別存儲(chǔ)第一服務(wù)器的(剩余)存儲(chǔ)空間中。假設(shè)第一服務(wù)器為Dl、D2、D3分配的存儲(chǔ)地址分別為:Sl/Dl/offSetl、S1/D2/offset2、Sl/D2/offset3。其中,SI表示第一服務(wù)器,Sl/Dl/offsetl表示:數(shù)據(jù)Dl的存儲(chǔ)地址位于第一服務(wù)器SI的存儲(chǔ)空間的OfTsetl處,其他的存儲(chǔ)地址不再一一解釋。
[0144]第3次執(zhí)行步驟301-306之后,分布式存儲(chǔ)系統(tǒng)中記錄的數(shù)據(jù)路由表如表I所示:
[0145]表I
[0146]
數(shù)據(jù)I本地I剩余存儲(chǔ)空間I數(shù)據(jù)存儲(chǔ)地址~
Dl SI ?Sl/Dl/offsetl~
[0147]
D2 [SI [X2|Sl/D2/offset2~
D3 SI X3Sl/D3/offset3~
[0148]305:第一服務(wù)器向第二服務(wù)器發(fā)送包含該數(shù)據(jù)的第一指示消息;第一指示消息用于指示第二服務(wù)器將該數(shù)據(jù)存儲(chǔ)在第二服務(wù)器的剩余存儲(chǔ)空間中。
[0149]在執(zhí)行步驟305之后,執(zhí)行步驟306。
[0150]306:第二服務(wù)器根據(jù)第一指示消息將該數(shù)據(jù)存儲(chǔ)在第二服務(wù)器的剩余存儲(chǔ)空間中。具體包括:第二服務(wù)器上的分布式存儲(chǔ)程序?yàn)樵摂?shù)據(jù)分配存儲(chǔ)地址,并將該數(shù)據(jù)存儲(chǔ)在該存儲(chǔ)地址對(duì)應(yīng)的存儲(chǔ)模塊中;該存儲(chǔ)地址為第二服務(wù)器的剩余存儲(chǔ)空間中的一個(gè)或者多個(gè)存儲(chǔ)模塊對(duì)應(yīng)的存儲(chǔ)地址。
[0151]示例性的,按照步驟303中的示例,D4存儲(chǔ)在第二服務(wù)器的(剩余)存儲(chǔ)空間中。假設(shè)第二服務(wù)器為D4分配的存儲(chǔ)地址分別為:S2/D4/offSet4。其中,S2表示第二服務(wù)器,S2/D4/offset4表示數(shù)據(jù)D4的存儲(chǔ)地址位于第二服務(wù)器S2的存儲(chǔ)空間的offset4處。
[0152]第4次執(zhí)行步驟301-306之后,分布式存儲(chǔ)系統(tǒng)中記錄的數(shù)據(jù)路由表如表2所示:
[0153]表2
[0154]
【權(quán)利要求】
1.一種存儲(chǔ)數(shù)據(jù)的方法,其特征在于,應(yīng)用于分布式存儲(chǔ)系統(tǒng),所述分布式存儲(chǔ)系統(tǒng)包括第一服務(wù)器和其他服務(wù)器,所述方法包括: 確定所述第一服務(wù)器生成的第一數(shù)據(jù); 判斷所述第一服務(wù)器的剩余存儲(chǔ)空間與所述第一數(shù)據(jù)所占的存儲(chǔ)空間的大小關(guān)系;如果所述第一服務(wù)器的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,且所述第一服務(wù)器的已使用存儲(chǔ)空間大于所述其他服務(wù)器的最小已使用存儲(chǔ)空間時(shí),將所述第一數(shù)據(jù)存儲(chǔ)在所述第一服務(wù)器的剩余存儲(chǔ)空間中。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一服務(wù)器包含一虛擬機(jī),所述第一數(shù)據(jù)是所述虛擬機(jī)生成的數(shù)據(jù);所述其他服務(wù)器包括第二服務(wù)器;所述方法還包括: 如果所述第一服務(wù)器的剩余存儲(chǔ)空間小于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,則向所述第二服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的第一指示消息;所述第一指示消息用于指示所述第二服務(wù)器將所述第一數(shù)據(jù)存儲(chǔ)在所述第二服務(wù)器的剩余存儲(chǔ)空間中; 在所述虛擬機(jī)對(duì)應(yīng)的除所述第一數(shù)據(jù)之外的其他數(shù)據(jù)所占的存儲(chǔ)空間小于或者等于所述第二服務(wù)器的剩余存儲(chǔ)空間時(shí),將所述虛擬機(jī)和所述其他數(shù)據(jù)遷移到所述第二服務(wù)器上。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述其他服務(wù)器包括第二服務(wù)器;所述方法還包括: 如果所述第一服務(wù)器的剩余存儲(chǔ)空間小于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,則向所述第二服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的第一指示消息;所述第一指示消息用于指示所述第二服務(wù)器將所述第一數(shù)據(jù)存儲(chǔ)在所述第二服務(wù)器的剩余存儲(chǔ)空間中; 更新所述第一服務(wù)器的剩余存儲(chǔ)空間; 當(dāng)所述第一服務(wù)器更新后的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間時(shí),向所述第二服務(wù)器發(fā)送第二指示消息;所述第二指示消息用于指示所述第二服務(wù)器將所述第一數(shù)據(jù)遷移到所述第一服務(wù)器; 接收所述第二服務(wù)器發(fā)送的所述第一數(shù)據(jù); 將所述第一數(shù)據(jù)存儲(chǔ)在所述第一服務(wù)器更新后的剩余存儲(chǔ)空間中。
4.根據(jù)權(quán)利要求1-3任一項(xiàng)所述的方法,其特征在于,所述其他服務(wù)器還包括第三服務(wù)器,所述方法還包括: 向所述第三服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的副本的第三指示消息,所述第三指示消息用于指示所述第三服務(wù)器將所述第一數(shù)據(jù)的副本存儲(chǔ)在所述第三服務(wù)器的剩余存儲(chǔ)空間中。
5.一種存儲(chǔ)數(shù)據(jù)的方法,其特征在于,應(yīng)用于分布式存儲(chǔ)系統(tǒng),所述分布式存儲(chǔ)系統(tǒng)包括第一服務(wù)器和其他服務(wù)器,所述方法包括: 確定所述第一服務(wù)器生成的第一數(shù)據(jù);所述第一數(shù)據(jù)所占的存儲(chǔ)空間大于所述分布式存儲(chǔ)系統(tǒng)的最小存儲(chǔ)單元的最大值; 判斷所述第一服務(wù)器的剩余存儲(chǔ)空間與所述第一數(shù)據(jù)所占的存儲(chǔ)空間的大小關(guān)系;如果所述第一服務(wù)器的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,且所述第一服務(wù)器的已使用存儲(chǔ)空間小于或者等于所述其他服務(wù)器的最小已使用存儲(chǔ)空間時(shí),將所述第一數(shù)據(jù)存儲(chǔ)在所述第一服務(wù)器的剩余存儲(chǔ)空間中。
6.一種服務(wù)器,其特征在于,應(yīng)用于分布式存儲(chǔ)系統(tǒng),所述分布式存儲(chǔ)系統(tǒng)還包括其他服務(wù)器,所述服務(wù)器包括: 確定模塊,用于確定所述服務(wù)器生成的第一數(shù)據(jù); 判斷模塊,用于判斷所述服務(wù)器的剩余存儲(chǔ)空間與所述第一數(shù)據(jù)所占的存儲(chǔ)空間的大小關(guān)系; 存儲(chǔ)模塊,用于在所述判斷模塊確定所述服務(wù)器的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,且所述服務(wù)器的已使用存儲(chǔ)空間大于所述其他服務(wù)器的最小已使用存儲(chǔ)空間時(shí),將所述第一數(shù)據(jù)存儲(chǔ)在所述服務(wù)器的剩余存儲(chǔ)空間中。
7.根據(jù)權(quán)利要求6所述的服務(wù)器,其特征在于,所述服務(wù)器包含一虛擬機(jī),所述第一數(shù)據(jù)是所述虛擬機(jī)生成的數(shù)據(jù);所述其他服務(wù)器包括第二服務(wù)器,所述服務(wù)器還包括: 發(fā)送模塊,用于在所述判斷模塊確定所述服務(wù)器的剩余存儲(chǔ)空間小于所述第一數(shù)據(jù)所占的存儲(chǔ)空間時(shí),向所述第二服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的第一指示消息;所述第一指示消息用于指示所述第二服務(wù)器將所述第一數(shù)據(jù)存儲(chǔ)在所述第二服務(wù)器的剩余存儲(chǔ)空間中; 遷移模塊,用于在所述虛擬機(jī)對(duì)應(yīng)的除所述第一數(shù)據(jù)之外的其他數(shù)據(jù)所占的存儲(chǔ)空間小于或者等于所述第二服務(wù)器的剩余存儲(chǔ)空間時(shí),將所述虛擬機(jī)和所述其他數(shù)據(jù)遷移到所述第二服務(wù)器上。
8.根據(jù)權(quán)利要求6所述的服務(wù)器,其特征在于,所述其他服務(wù)器包括第二服務(wù)器,所述服務(wù)器還包括: 發(fā)送模塊,用于在所述判斷模塊確定所述服務(wù)器的剩余存儲(chǔ)空間小于所述第一數(shù)據(jù)所占的存儲(chǔ)空間時(shí),向所述第二服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的第一指示消息;所述第一指示消息用于指示所述第二服務(wù)器將所述第一數(shù)據(jù)存儲(chǔ)在所述第二服務(wù)器的剩余存儲(chǔ)空間中; 更新模塊,用于更新所述服務(wù)器的剩余存儲(chǔ)空間; 所述發(fā)送模塊還用于,當(dāng)所述服務(wù)器更新后的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間時(shí),向所述第二服務(wù)器發(fā)送第二指示消息;所述第二指示消息用于指示所述第二服務(wù)器將所述第一數(shù)據(jù)遷移到所述服務(wù)器; 接收模塊,用于接收所述第二服務(wù)器發(fā)送的所述第一數(shù)據(jù); 所述存儲(chǔ)模塊還用于,將所述第一數(shù)據(jù)存儲(chǔ)在所述服務(wù)器更新后的剩余存儲(chǔ)空間中。
9.根據(jù)權(quán)利要求6-8任一項(xiàng)所述的服務(wù)器,其特征在于,所述其他服務(wù)器還包括第三服務(wù)器; 所述發(fā)送模塊還用于,向所述第三服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的副本的第三指示消息,所述第三指示消息用于指示所述第三服務(wù)器將所述第一數(shù)據(jù)的副本存儲(chǔ)在所述第三服務(wù)器的剩余存儲(chǔ)空間中。
10.一種服務(wù)器,其特征在于,應(yīng)用于分布式存儲(chǔ)系統(tǒng),所述分布式存儲(chǔ)系統(tǒng)還包括其他服務(wù)器,所述服務(wù)器包括: 處理器,用于確定所述服務(wù)器生成的第一數(shù)據(jù);以及判斷所述服務(wù)器的剩余存儲(chǔ)空間與所述第一數(shù)據(jù)所占的存儲(chǔ)空間的大小關(guān)系; 存儲(chǔ)器,用于在所述處理器確定所述服務(wù)器的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,且所述服務(wù)器的已使用存儲(chǔ)空間大于所述其他服務(wù)器的最小已使用存儲(chǔ)空間時(shí),在所述處理器的控制下將所述第一數(shù)據(jù)存儲(chǔ)在所述服務(wù)器的剩余存儲(chǔ)空間中。
11.根據(jù)權(quán)利要求10所述的服務(wù)器,其特征在于,所述服務(wù)器包含一虛擬機(jī),所述第一數(shù)據(jù)是所述虛擬機(jī)生成的數(shù)據(jù);所述其他服務(wù)器包括第二服務(wù)器,所述服務(wù)器還包括: 發(fā)送器,用于在所述處理器確定所述服務(wù)器的剩余存儲(chǔ)空間小于所述第一數(shù)據(jù)所占的存儲(chǔ)空間時(shí),向所述第二服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的第一指示消息;所述第一指示消息用于指示所述第二服務(wù)器將所述第一數(shù)據(jù)存儲(chǔ)在所述第二服務(wù)器的剩余存儲(chǔ)空間中; 所述處理器還用于,在所述虛擬機(jī)對(duì)應(yīng)的除所述第一數(shù)據(jù)之外的其他數(shù)據(jù)所占的存儲(chǔ)空間小于或者等于所述第二服務(wù)器的剩余存儲(chǔ)空間時(shí),將所述虛擬機(jī)和所述其他數(shù)據(jù)遷移到所述第二服務(wù)器上。
12.根據(jù)權(quán)利要求10所述的服務(wù)器,其特征在于,所述其他服務(wù)器包括第二服務(wù)器; 所述處理器還用于,更新所述服務(wù)器的剩余存儲(chǔ)空間; 所述發(fā)送器還用于,當(dāng)所述服務(wù)器更新后的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間時(shí),向所述第二服務(wù)器發(fā)送第二指示消息;所述第二指示消息用于指示所述第二服務(wù)器將所述第一數(shù)據(jù)遷移到所述服務(wù)器; 所述服務(wù)器還包括:接收器,用于接收所述第二服務(wù)器發(fā)送的所述第一數(shù)據(jù); 所述存儲(chǔ)器還用于,在所述處理器的控制下將所述第一數(shù)據(jù)存儲(chǔ)在所述服務(wù)器更新后的剩余存儲(chǔ)空間中。
13.根據(jù)權(quán)利要求10-12任一項(xiàng)所述的服務(wù)器,其特征在于,所述其他服務(wù)器還包括第三服務(wù)器; 所述發(fā)送器還用于,向所述第三服務(wù)器發(fā)送包含所述第一數(shù)據(jù)的副本的第三指示消息,所述第三指示消息用于指示所述第三服務(wù)器將所述第一數(shù)據(jù)的副本存儲(chǔ)在所述第三服務(wù)器的剩余存儲(chǔ)空間中。
14.一種服務(wù)器,其特征在于,應(yīng)用于分布式存儲(chǔ)系統(tǒng),所述分布式存儲(chǔ)系統(tǒng)還包括其他服務(wù)器,所述服務(wù)器包括: 確定模塊,用于確定所述服務(wù)器生成的第一數(shù)據(jù);所述第一數(shù)據(jù)所占的存儲(chǔ)空間大于所述分布式存儲(chǔ)系統(tǒng)的最小存儲(chǔ)單元的最大值; 判斷模塊,用于判斷所述服務(wù)器的剩余存儲(chǔ)空間與所述第一數(shù)據(jù)所占的存儲(chǔ)空間的大小關(guān)系; 存儲(chǔ)模塊,用于在所述判斷模塊確定所述服務(wù)器的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,且所述服務(wù)器的已使用存儲(chǔ)空間小于或者等于所述其他服務(wù)器的最小已使用存儲(chǔ)空間時(shí),將所述第一數(shù)據(jù)存儲(chǔ)在所述服務(wù)器的剩余存儲(chǔ)空間中。
15.一種服務(wù)器,其特征在于,應(yīng)用于分布式存儲(chǔ)系統(tǒng),所述分布式存儲(chǔ)系統(tǒng)還包括其他服務(wù)器,所述服務(wù)器包括: 處理器,用于確定所述服務(wù)器生成的第一數(shù)據(jù);以及判斷所述服務(wù)器的剩余存儲(chǔ)空間與所述第一數(shù)據(jù)所占的存儲(chǔ)空間的大小關(guān)系;所述第一數(shù)據(jù)所占的存儲(chǔ)空間大于所述分布式存儲(chǔ)系統(tǒng)的最小存儲(chǔ)單元的最大值;存儲(chǔ)器,用于在所述處理器確定所述服務(wù)器的剩余存儲(chǔ)空間大于或者等于所述第一數(shù)據(jù)所占的存儲(chǔ)空間,且所述服務(wù)器的已使用存儲(chǔ)空間小于或者等于所述其他服務(wù)器的最小已使用存儲(chǔ)空間時(shí),在所述處理器的控制下將所述第一數(shù)據(jù)存儲(chǔ)在所述服務(wù)器的剩余存儲(chǔ)空間中。
【文檔編號(hào)】H04L29/08GK104205780SQ201480000338
【公開(kāi)日】2014年12月10日 申請(qǐng)日期:2014年1月23日 優(yōu)先權(quán)日:2014年1月23日
【發(fā)明者】琚列丹 申請(qǐng)人:華為技術(shù)有限公司