在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Linux 網(wǎng)絡(luò)文件系統(tǒng)的數(shù)據(jù)備份及恢復(fù)機(jī)制實(shí)現(xiàn)

            Linux 網(wǎng)絡(luò)文件系統(tǒng)的數(shù)據(jù)備份及恢復(fù)機(jī)制實(shí)現(xiàn)

            作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò) 收藏

            while(!rqstp->rq_copy->done){

            本文引用地址:http://www.biyoush.com/article/201609/304200.htm

            schedule_timeout((HZ+99)/100);

            ……

            }

            }

            該文件是在 nfs 服務(wù)器端執(zhí)行 nfs 客戶機(jī)發(fā)送過(guò)來(lái)的修改文件或者是目錄的原函數(shù)。在這里,我們可以通過(guò)添加自己的代碼,來(lái)將創(chuàng)建的目錄和文件名存入一個(gè)磁盤文件當(dāng)中,以備后面的備份和恢復(fù)操作。

            圖 6 NFS 文件細(xì)粒度恢復(fù)日志產(chǎn)生示意圖

            圖 6 NFS 文件細(xì)粒度恢復(fù)日志產(chǎn)生示意圖

            獲得了操作日志信息,然后就可以進(jìn)行精確恢復(fù)和選擇性恢復(fù)時(shí)。首先由用戶利用數(shù)據(jù)查詢、瀏覽工具確定需要恢復(fù)的文件操作集,然后利用相應(yīng)的日志數(shù)據(jù)按記錄產(chǎn)生順序逐條生成恢復(fù)請(qǐng)求,發(fā)送給文件服務(wù)器端的代理程序,由它通過(guò) proc 文件請(qǐng)求 NFS 文件系統(tǒng)恢復(fù)模塊進(jìn)行恢復(fù),恢復(fù)模塊收到請(qǐng)求后,取出相關(guān)數(shù)據(jù),然后通過(guò)調(diào)用底層 ext3 文件系統(tǒng)基本操作完成該次文件操作的”重放”,最后返回執(zhí)行結(jié)果,通過(guò) proc 文件通知代理程序,代理程序再通知管理端,管理端再發(fā)送下一條恢復(fù)請(qǐng)求,及到所有選中的操作全完成為止。具體實(shí)現(xiàn)模式請(qǐng)參看圖 7:

            圖 7 恢復(fù)流程示意圖

            圖 7 恢復(fù)流程示意圖

            數(shù)據(jù)快速同步技術(shù)

            在系統(tǒng)中,各文件服務(wù)器之間的數(shù)據(jù)需要及時(shí)同步更新,這樣才能保證服務(wù)遷移后到新的環(huán)境后相關(guān)數(shù)據(jù)環(huán)境的一致性,從而保證服務(wù)遷移在語(yǔ)義上的正確性。在本方案中,每個(gè)文件服務(wù)器均采用 NFSv3 協(xié)議向外提供文件服務(wù),當(dāng)系統(tǒng)開(kāi)始工作時(shí),管理員會(huì)指定一臺(tái)主服務(wù)器,由該服務(wù)器負(fù)責(zé)向外提供服務(wù),其他文件服務(wù)器為備份服務(wù)器,接收同步數(shù)據(jù),進(jìn)行數(shù)據(jù)的同步更新,并不對(duì)外提供服務(wù),只有當(dāng)系統(tǒng)決定遷移后,選定的遷移目標(biāo)對(duì)應(yīng)的文件服務(wù)器才成為主文件服務(wù)器。

            由于主文件服務(wù)器負(fù)責(zé)對(duì)外的文件服務(wù),因此,數(shù)據(jù)同步的發(fā)起者應(yīng)該是主文件服務(wù)器,而所有的備份服務(wù)器均為被動(dòng)的同步數(shù)據(jù)接收者。因此,數(shù)據(jù)的快速同步包含兩方面的工作:主文件服務(wù)器產(chǎn)生同步數(shù)據(jù)和備份文件服務(wù)器接收同步數(shù)據(jù)完成同步。具體的數(shù)據(jù)流向如圖 8 所示:

            圖 8 同步數(shù)據(jù)的產(chǎn)生與流動(dòng)示意圖

            圖 8 同步數(shù)據(jù)的產(chǎn)生與流動(dòng)示意圖

            為了達(dá)到數(shù)據(jù)快速同步的目的,我們采用了記錄文件寫操作(包括創(chuàng)建、修改、刪除、改名、屬性修改等所有的改變文件或目錄屬性、內(nèi)容的操作)的具體參數(shù)的方法來(lái)生成同步數(shù)據(jù),這樣每次生成的數(shù)據(jù)量比較少,而且可以滿足及時(shí)更新的目的。同步數(shù)據(jù)的格式及相關(guān)代碼段如下:

            struct Log {

            int length; //整個(gè)數(shù)據(jù)包的長(zhǎng)度

            int ops; //操作的類型

            char* data; //與操作相關(guān)數(shù)據(jù)

            };

            //下面代碼段從內(nèi)核將同步數(shù)據(jù)包發(fā)往其他文件服務(wù)器

            long send(struct socket* sock, void * buff,size_t len)

            {

            int err;

            mm_segment_t oldfs;

            struct msghdr msg;

            struct iovec iov;

            static int total = 0;

            down(log_sem);

            iov.iov_base=buff;

            iov.iov_len=len;

            msg.msg_name=NULL;

            msg.msg_iov=iov;

            msg.msg_iovlen=1;

            msg.msg_control=NULL;

            msg.msg_controllen=0;

            msg.msg_namelen=0;

            total += len;

            msg.msg_flags = MSG_SYN;//DONTWAIT;

            oldfs=get_fs();

            set_fs(KERNEL_DS);

            err = sock_sendmsg(sock, msg, len);

            set_fs(oldfs);

            if(err0){

            dprintk(send err(errNo=%d len = %d)n,err,len);

            netbroken = 1;

            }

            ……

            up(log_sem);

            return(err);

            }

            同步數(shù)據(jù)產(chǎn)生后,先放入一個(gè)緩沖區(qū)中,而不是立即發(fā)送到備份文件服務(wù)器,這樣可以較大程度改善系統(tǒng)的總體性能。緩沖區(qū)中的數(shù)據(jù)由同步管理進(jìn)程管理,當(dāng)達(dá)到一定數(shù)據(jù)量時(shí),同步管理程序負(fù)責(zé)把緩沖區(qū)中的數(shù)據(jù)發(fā)送到備份文件服務(wù)器上,并根據(jù)返回的應(yīng)答結(jié)果決定是否需要把重發(fā)數(shù)據(jù),當(dāng)確認(rèn)某個(gè)服務(wù)器無(wú)法響應(yīng)后,自動(dòng)把同步數(shù)據(jù)定期寫入一個(gè)僅可追加的文件,以便于隨后可能需要的恢復(fù)階段同步的需要,當(dāng)這個(gè)寫入的文件數(shù)據(jù)量超出一定限制時(shí),并且系統(tǒng)確認(rèn)已經(jīng)至少有一個(gè)新的版本生成,可以把該文件清空。

            當(dāng)數(shù)據(jù)到達(dá)備份文件服務(wù)器時(shí),由獨(dú)立的接收進(jìn)程負(fù)責(zé)把數(shù)據(jù)放入接收緩沖區(qū),經(jīng)核對(duì)數(shù)據(jù)無(wú)誤后給主服務(wù)器發(fā)送確認(rèn)信號(hào),另一個(gè)獨(dú)立進(jìn)程即更新管理進(jìn)程把接收緩沖區(qū)作為輸入,從中解析出一個(gè)個(gè)的順序的操作日志,從每個(gè)日志中得到操作類型,然后在剩余的數(shù)據(jù)中按照特定的操作類型提取所需的參數(shù),利用文件系統(tǒng)調(diào)用完成相應(yīng)操作。

            總結(jié)

            系統(tǒng)已經(jīng)為企業(yè)在和共享領(lǐng)域得到了廣泛應(yīng)用。如何保證其多版本備份、實(shí)時(shí)恢復(fù)是一個(gè)非常關(guān)鍵的問(wèn)題,本文將詳細(xì)介紹針對(duì)該系統(tǒng)的、恢復(fù)及同步機(jī)制在內(nèi)核的具體實(shí)現(xiàn),給廣大系統(tǒng)管理員和研發(fā)人員提供技術(shù)參考。


            上一頁(yè) 1 2 3 4 5 6 下一頁(yè)

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉