精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Linux 網絡文件系統的數據備份及恢復機制實現

運維 系統運維
Linux 網絡文件系統已經為企業在數據備份和共享領域得到了廣泛應用。如何保證其多版本備份、實時恢復是一個非常關鍵的問題,本文將詳細介紹針對該網絡文件系統的數據備份、恢復及同步機制在內核的具體實現,給廣大系統管理員和研發人員提供技術參考。

Linux 網絡文件系統簡介

網絡文件系統(NFS)協議是由 Sun MicroSystem 公司在 20 世紀 80 年代為了提供對共享文件的遠程訪問而設計和實現的,它采用了經典的客戶機/服務器模式提供服務。為了達到如同 NFS 協議通過使用 Sun 公司開發的遠在本機上使用本地文件系統一樣便捷的效果,NFS 通過使用遠程過程調用協議(RPC Protocol)來實現運行在一臺計算機上的程序來調用在另一臺遠程機器上運行的子程序。同時,為了解決不同平臺上的數據交互問題,它提供了外部數據表示(XDR)來解決這個問題。為了靈活地提供文件共享服務,該協議可以在 TCP 協議或者是 UDP 協議上運行,典型的情況是在 UDP 協議上運行。在此基礎上,NFS 在數據的傳送過程中需要 RPC 命令得到確認,而且在需要的時候會要重傳,這樣既可以通過 UDP 協議獲得較高的通信效率,也能通過 RPC 來獲得較高的通信可靠性。

由于 NFS 基于 C/S 模式提供服務,所以它的核心組件主要包括客戶機和服務器兩部分。圖 1 詳細說明了 NFS 的主要組件以及主要的配置文件。在服務器端,portmap、mountd、nfsd 三個監控程序將在后臺運行。portmap 監控程序用來注冊基于 RPC 的服務。當一個 RPC 的監控程序啟動的時候,它告訴 portmap 監控程序它在哪一個端口進行偵聽,并且它在進行什么樣的 RPC 服務。當一個客戶機向服務器提出一個 RPC 請求,那么它就會和 portmap 監控程序取得聯系以確定 RPC 消息應該發往的端口號。而 Mountd 監控程序的功能是來讀取服務器端的/etc/exportfs 文件并且創建一個將服務器的本地文件系統導出的主機和網絡列表,因而客戶機的掛接(mount)請求都被定位到 mountd 監控程序(daemon)。當驗證了服務器確實具有掛接所請求的文件系統的權限以后,mountd 為請求的掛接點返回一個文件句柄。而 nfsd 監控程序則被服務器用來處理客戶機端發送過來的請求。由于服務器需要同時處理多個客戶機的請求,所以在缺省情況下,操作系統將會自動啟動八個 nfsd 線程。當然,如果 NFS 服務器特別忙的時候,系統有可能根據實際情況啟動更多的線程。

圖 1 網絡文件系統簡圖

圖 1 網絡文件系統簡圖

NFS 的客戶機與服務器之間通過 RPC 進行通信,通信過程如下所示:

  1. 用戶將 NFS 服務器的共享目錄掛載到本地文件系統中。
  2. 客戶訪問 NFS 目錄中的文件時,NFS 客戶端向 NFS 服務器端發送 RPC 請求。
  3. NFS 服務端接收客戶端發來的 RPC 請求,并將這個請求傳遞給本地文件訪問程序,然后訪問服務器主機上的一個本地的磁盤文件。NFS 服務器可以同時接收多個 NFS 客戶端的請求,并對其進行并發控制。
  4. NFS 客戶端向服務器主機發出一個 RPC 調用,然后等待服務器的應答。NFS 客戶端收到服務器的應答后,把結果信息展現給用戶或應用程序。

NFS 下的數據備份、恢復的主要功能

對數據進行備份與恢復是保證數據安全和業務連續性的非常成熟的做法。在 Linux 下的本地文件系統(例如 Ext2、Ext3 等)中,數據備份和恢復一般采用常規的辦法來進行操作,例如使用 Tar、Archive 等。而對于 NFS 來說,其數據備份需要采用量身定制的方法來進行。

為了保證數據在災難環境中的可用性和業務連續性,針對它的數據備份、恢復方案應具備如下重要功能:

  • 通過對系統重要數據的快速備份,切實保證系統數據的安全;
  • 可以根據指令完成備份系統的實時切入,保證服務不被中斷,保持系統持續運行的能力;
  • 通過實時記錄所有文件的操作日志,系統管理員能夠在發生災難的情況下對日志進行分析和取證,從而發現入侵者的蛛絲馬跡。

NFS 多版本備份技術

為了保證服務器出現故障后能迅速恢復,要求系統數據能快速恢復到一個最近的正確狀態,所有這些都需要多版本技術的支持,通過同步記錄文件的在某些時刻的狀態,在整個系統范圍內建立起類似于數據庫系統的”檢查點”,以保證上述目標的實現。

對于多版本系統而言,需要較好地解決兩個方面的問題:性能和空間利用率。對于前者,最主要的是保證在生成版本的時候能夠快速完成,同時恢復時也具有較好的性能。此外,系統引入多版本造成的整體開銷也應該比較理想。對于第二點,主要考慮是節約磁盤空間,雖然隨著硬件技術的不斷發展,磁盤空間越來越大,性價比也越來越高,但是當版本較多而且文件數量較多、較大時,引入多版本增加的開銷也可能相當可觀,同時,較大的空間也意味著版本生成時可能需要更多的寫操作,這樣也必將影響總體性能。

為了保證引入多版本特性后文件系統仍具有較好的性能,以及保證較高的空間利用率,我們開發了一種高效的惰性版本生成算法。主要思想是:生成版本時不進行文件的復制,僅復制目錄結構,在新版本生成后到下一版本生成前,如果有文件需要修改,則第一次修改時對該文件進行復制,從而保證該文件狀態與對應的版本保持一致。

在一般情況下,目錄結構的數據量遠遠小于文件的數據量,因而這種方法可以大大降低版本生成時需要復制的數據量,因而具有較高的性能。同時,這種把單個文件版本生成的實際操作推后到非做不可的時候,并且任意文件在兩次版本之間最多生成一次版本,因此這種惰性策略可以使需要實際生成版本的文件數量達到最少,同時還可以把多個文件版本生成操作分散到具體的文件操作中,從而避免了集中的一次性版本生成方法可能造成的服務暫時停頓的問題。

版本生成后的結構如圖 2 所示。

圖 2 多版本生成示意圖

圖 2 多版本生成示意圖

具體算法包括兩個部分,即版本生成算法和文件第一次修改處理算法,版本生成算法主要完成版本生成工作,主要過程如下:

  1. 找到需要形成版本的最高層目錄作為原目錄;
  2. 利用文件系統提供的函數,生成新的目錄節點,稱為新目錄;
  3. 把原目錄中的結構復制到新目錄;
  4. 在原目錄中找到所有的子目錄,重復 2、3 步;
  5. 把新的子目錄對應的 inode 號替換上一層目錄中的老 inode 號;
  6. 重復上述過程,及到目錄樹中的所有目錄得到復制為止。

在上述策略中,新版本并沒有復制所有的文件,只是在復制的目錄結構中記錄下了該文件的 inode 號(即復制了目錄的結構,而不是把文件都進行復制,從而節省了存儲和計算資源),因此,當有 NFS 請求需要對文件進行版本生成后的第一次修改時,需要復制該文件,生成新的版本。該實現過程參見如下流程圖:

圖 3 寫時復制算法示意圖

圖 3 寫時復制算法示意圖

這種文件復制策略其實是一種惰性算法,也即我們常說的寫時復制的方法,這個方法在 Linux 操作系統的子進程對父進程資源的繼承中有所體現。這個策略一方面可以最大限度減少復制文件的數量,另一方面則可以避免瞬間過大的文件復制工作量,影響文件服務的性能。該算法的過程如下:當文件操作為寫操作時,判斷該文件是否版本生成后的第一次寫操作;若是則利用文件系統提供的底層函數生成一個新的文件,復制源文件的數據到新生成的文件,同時把該文件當前版本的 inode 節點中的版本號置為當前版本號,這樣新文件就成為該文件的最新版本。

雖然我們采用的算法可以有較好的性能,存儲開銷也是最優,但是,每次版本生成肯定會造成服務性能的下降和空間的占用,而這些代價在一個比較安全可靠的環境中是可以適當降低的,即當系統比較安全的時候,可以選擇讓系統以更低的頻率進行版本生成,相反,當系統安全狀況比較糟糕的時候,可以通過提高版本生成頻率適當降低服務性能來獲得更高的數據安全性能,當系統處于緊急狀態時,甚至可以要求立即進行版本生成。

基于這些考慮,我們采用了自適應的備份策略,災情評估系統可以動態評估系統的災情程度,然后可以立即修改版本生成策略,以適應當時的安全要求。

NFS 數據恢復技術

企業應用 NFS 的一個重要目標就是要保證系統的高可用性,即使在出現嚴重災難、故障、攻擊等情況下能具有較好的生存能力。因此,當一個系統出現故障時,如何快速地恢復系統,迅速投入到服務備份中去是相當重要的,所以,對于文件系統數據的恢復而言,也需要專門的考慮和設計。

本方案被配置成多個站點互為備份的情況,即平時只有一個主站點在服務,其他站點處于同步備份狀態,當某個站點出現故障或災難時,或者是被非法入侵者攻破時,系統可以立即分配新的主站點把被破壞的站點替換下來,進入恢復狀態,其他正常的站點仍可提供正常的服務。

當然,也存在所有站點均出現故障的情況,但是由于我們采用了多種措施,如動態隨機遷移、災情評估與響應策略等,再配合傳統的防火墻、IDS 等安全系統,可以極大限度地減少這種幾率。因此,我們的數據恢復問題主要考慮上述這種情形,即個別服務器出現故障退出服務而其他系統依然正常的情況。

首先,我們來分析一下系統退出后數據的情形,主要涉及到退出的服務器和正常的主服務器與備份服務器,如圖 4 所示:

圖 4 一個系統退出后數據狀態示意圖

圖 4 一個系統退出后數據狀態示意圖

在上圖中,退出服務器最后生成的版本號為 i,系統退出后,一方面主文件服務器會察覺到同步數據無法從退出服務器返回結果,這樣的話它就會重發同步請求,經過 3 次重發后,如果依然沒有返回信息,則認為該服務器退出服務,因此會把同步數據備份到磁盤文件中,并記錄下該服務器在同步數據文件中的起始位置,這當由多個文件服務器退出時可以分別識別出來。由于退出系統無法繼續保持同步,因此其狀態會與工作的文件服務器不一致,具體表現在以下幾個方面:

  1. 當退出時間很短時,數據不一致僅存在于緩沖區中,這時如果退出服務器能立即重新投入使用,則不需要進行額外的數據恢復,數據同步可以通過主服務器同步請求的重試來達到。
  2. 當主服務器確認退出服務器退出后,會把未同步的數據寫入特定的同步數據文件中,這時的不一致性包括了緩沖區中的數據和同步數據文件中的數據,這時的數據恢復需要做兩方面的工作:
    • 把同步數據文件中的正確數據一次性發送給退出服務器,退出服務器把它寫入本地的同步數據文件;
    • 建立本地的緩沖區,建立起同步機制,接收同步數據,同時啟動數據同步進程,先同步數據文件中的數據,當緩沖區數據因沒有處理而達到一定程度時,會自動把部分數據追加到同步數據文件的后面,這時,退出服務器已經恢復了正常工作,實際上也不需要過多的數據恢復工作。

    由于主文件服務器一般需要處理文件的讀寫請求,寫請求僅占一部分,需要同步而執行的操作造成的負載要小于主服務器,因此可能在較短的時間內完成同步。當需要退出服務器(此時已經進入同步階段)成為主服務器時,則必須等所有同步數據同步完成后才能開始服務。

  3. 如果退出服務器是因為較嚴重的故障或災難而退出的,則可能需要較長時間的處理,如更換硬件、系統重啟、甚至重裝系統等,這時就可能出現一些困難的情況,一種是如上圖所示的,工作正常的系統已經生成了新的版本,如服務器退出時的最新版本是 i,經過一段時間后,正常系統生成了新的版本,這時主系統會清空同步數據文件,重新從版本生成后進行記錄。對于這種情況,可以有兩種處理辦法:
    • 基于本地版本的快速恢復:當退出文件服務器本地至少存在一個版本與其他正常機器上的版本相同時,可以采用這種恢復策略。具體而言,先確定一個最新的正確版本,用本地版本恢復,這一過程非常簡單快捷,僅涉及到兩次 inode 的修改;然后選擇一臺正常服務器,請求它生成一個正常系統上最新版本與恢復版本的增量升級數據,這樣的數據量不會很大,而且不需要象基于操作的同步那樣逐步進行,同步效率非常高,因此可以大大提高恢復速度。同步到正常系統的最新版本后,然后就按照上述第 2 條的情況進行同步數據文件的同步。
    • 基于分布版本的快速恢復:當停頓時間太長而不存在一個相同的版本,或文件服務器數據出現損壞(如磁盤故障造成數據損毀)時,需要采用此種方法。具體辦法如下:直接把正常服務器上的最新版本傳送到退出服務器,然后按照上述的第 2 種情況進行同步數據文件的同步。

正如上面所述,全部服務器均出現問題的概率是很小的,但是,不能簡單的排除這種情況的出現,特別是本方案采用數據同步機制,即多個站點的數據是保持快速同步的,這雖然能保證動態遷移的順利完成,但是也帶來較大的風險,就是會出現數據”污染”的自動傳播,當主文件服務器中的文件數據因為某些原因(主要是對文件的非法訪問)造成數據非法修改時,會立即傳播到其他備份節點,這樣的話,不管服務遷移到哪臺機器均會出現錯誤。

針對這種情況,我們采取了以下措施:當發現非法修改造成數據污染時,系統可以自動命令各站點恢復到指定的版本,如前一版本(可以由管理員配置成前一、二、三個版本);管理員也可以干預這一過程,強制各站點恢復到同一指定的版本,從而保證全局文件系統使用同一正確版本。

NFS 文件細粒度恢復技術

在傳統恢復技術中,一方面由于數據備份不是實時進行的,當出現事故需要恢復時,最新的備份數據與最新數據之間存在一個時間差,這樣就造成了該時間段內數據的丟失(見圖 5);同時,傳統的數據備份是一定時間段后數據的增量備份,是一段時間內所有文件操作疊加后的結果,因而無法精確知道在這段時間內實際數據的變化過程,因而也無法從所有這些操作中定位非法操作,并進行選擇性的恢復,以保證數據的正確性。

圖 5 因非實時備份造成恢復時的數據丟失示意圖

圖 5 因非實時備份造成恢復時的數據丟失示意圖

基于上述考慮,我們不但采用了增量方式的多版本備份恢復技術,同時還對文件的修改日志進行了實時的備份,這樣就可以在事故發生后進行基于文件操作的精確恢復,并支持允許剔除非法操作的選擇性恢復,這樣既能盡量避免因事故造成的數據丟失問題,又能通過選擇性恢復較好保證數據的正確性,同時,還可以通過對日志的分析,結合數據的精確恢復,達到發現犯罪線索、獲得有效證據的目的,為打擊網絡犯罪提供有力的技術手段。在這里,精確性恢復指的是恢復某一時段的所有操作,一般是在某一版本后的所有操作,不由用戶進行選擇,而選擇性恢復則指的是某一時間段內的所有操作構成的集合的子集,需要恢復的操作由用戶通過查詢、瀏覽等工具來進行選擇。在我們的定義中,實際上可以認為精確恢復為選擇性恢復的一個特例。

我們首先需要有相關的解決方法來記錄下具體的操作信息,形成操作日志文件,從而作為分析的證據(參見圖 6)。我們使用的策略是通過修改服務器操作系統內核調用 nfsd_write()、nfsd_create()……。從中取到調用處理對象的文件、目錄的全路徑名,寫進文件,在內核中截獲相應的文件操作請求。下面以 nfsd_rename()系統調用為例,進行擴充、修改而實現記錄操作日志的功能。

  1. int nfsd_rename(struct svc_rqst *rqstp, struct svc_fh *ffhp, char *fname, 
  2.     int flen,struct svc_fh *tfhp, char *tname, int tlen) 
  3.     struct dentry   *fdentry, *tdentry, *odentry, *ndentry; 
  4.     struct inode    *fdir, *tdir; 
  5.     int     err; 
  6.     char *name; 
  7.     mem_segment_t oldfs; 
  8.     int fd; 
  9.     err = fh_verify(rqstp, ffhp, S_IFDIR, MAY_REMOVE); 
  10.     if (err) 
  11.         goto out; 
  12.     rqstp->rq_path1 = rqstp->rq_path2; 
  13.     err = fh_verify(rqstp, tfhp, S_IFDIR, MAY_CREATE); 
  14.     if (err) 
  15.         goto out; 
  16.     fdentry = ffhp->fh_dentry; 
  17.     fdir = fdentry->d_inode; 
  18.     tdentry = tfhp->fh_dentry; 
  19.     tdir = tdentry->d_inode; 
  20.     …… 
  21.     //加入的代碼進行處理工作 
  22.     if((!rqstp->rq_recover)&&(!S_ISDIR(odentry->d_inode->i_mode)) 
  23.         &&(odentry->d_inode->i_nlink>1)){ 
  24.         rqstp->rq_copy->wait = 1
  25.         rqstp->rq_copy->done = 0
  26.         name = get_total_name(dentry,NULL); 
  27.         oldfs = get_fs(); 
  28.         set_fs(KERNEL_DS);  //進入內核模式 
  29.         fd = sys_open("/backupserv/changfilename.c",0,31681); 
  30.         sys_write(fd,name,strlen(name)); 
  31.         sys_close(fd); 
  32.         set_fs(oldfs);   //從內核模式返回 
  33.         while(!rqstp->rq_copy->done){ 
  34.             schedule_timeout((HZ+99)/100); 
  35. …… 
  36.         } 
  37.     } 

該文件是在 nfs 服務器端執行 nfs 客戶機發送過來的修改文件或者是目錄的原函數。在這里,我們可以通過添加自己的代碼,來將創建的目錄和文件名存入一個磁盤文件當中,以備后面的備份和恢復操作。

圖 6 NFS 文件細粒度恢復日志產生示意圖

圖 6 NFS 文件細粒度恢復日志產生示意圖

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

圖 7 恢復流程示意圖

圖 7 恢復流程示意圖

數據快速同步技術

在系統中,各文件服務器之間的數據需要及時同步更新,這樣才能保證服務遷移后到新的環境后相關數據環境的一致性,從而保證服務遷移在語義上的正確性。在本方案中,每個文件服務器均采用 NFSv3 協議向外提供文件服務,當系統開始工作時,管理員會指定一臺主服務器,由該服務器負責向外提供服務,其他文件服務器為備份服務器,接收同步數據,進行數據的同步更新,并不對外提供服務,只有當系統決定遷移后,選定的遷移目標對應的文件服務器才成為主文件服務器。

由于主文件服務器負責對外的文件服務,因此,數據同步的發起者應該是主文件服務器,而所有的備份服務器均為被動的同步數據接收者。因此,數據的快速同步包含兩方面的工作:主文件服務器產生同步數據和備份文件服務器接收同步數據完成同步。具體的數據流向如圖 8 所示:

圖 8 同步數據的產生與流動示意圖

圖 8 同步數據的產生與流動示意圖

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

  1. struct Log { 
  2.     int length; //整個數據包的長度 
  3.     int ops;        //操作的類型 
  4.     char* data; //與操作相關數據 
  5. }; 
  6. //下面代碼段從內核將同步數據包發往其他文件服務器 
  7. long send(struct socket* sock, void * buff,size_t len) 
  8.     int err; 
  9.     mm_segment_t oldfs; 
  10.     struct msghdr msg; 
  11.     struct iovec iov; 
  12.     static int total = 0
  13.     down(&log_sem); 
  14.     iov.iov_base=buff
  15.     iov.iov_len=len; 
  16.     msg.msg_name=NULL
  17.     msg.msg_iov=&iov; 
  18.     msg.msg_iovlen=1
  19.     msg.msg_control=NULL
  20.     msg.msg_controllen=0
  21.     msg.msg_namelen=0
  22.     total += len; 
  23.     msg.msg_flags = MSG_SYN;//DONTWAIT; 
  24.     oldfs=get_fs(); 
  25.     set_fs(KERNEL_DS); 
  26.     err = sock_sendmsg(sock, &msg, len); 
  27.     set_fs(oldfs); 
  28.     if(err<0){ 
  29.         dprintk("send err(errNo=%d len = %d)\n",err,len);   
  30.         netbroken = 1
  31.     } 
  32. …… 
  33.     up(&log_sem); 
  34.     return(err); 

同步數據產生后,先放入一個緩沖區中,而不是立即發送到備份文件服務器,這樣可以較大程度改善系統的總體性能。緩沖區中的數據由同步管理進程管理,當達到一定數據量時,同步管理程序負責把緩沖區中的數據發送到備份文件服務器上,并根據返回的應答結果決定是否需要把重發數據,當確認某個服務器無法響應后,自動把同步數據定期寫入一個僅可追加的文件,以便于隨后可能需要的恢復階段同步的需要,當這個寫入的文件數據量超出一定限制時,并且系統確認已經至少有一個新的版本生成,可以把該文件清空。

當數據到達備份文件服務器時,由獨立的接收進程負責把數據放入接收緩沖區,經核對數據無誤后給主服務器發送確認信號,另一個獨立進程即更新管理進程把接收緩沖區作為輸入,從中解析出一個個的順序的操作日志,從每個日志中得到操作類型,然后在剩余的數據中按照特定的操作類型提取所需的參數,利用文件系統調用完成相應操作。

總結

Linux 網絡文件系統已經為企業在數據備份和共享領域得到了廣泛應用。如何保證其多版本備份、實時恢復是一個非常關鍵的問題,本文將詳細介紹針對該網絡文件系統的數據備份、恢復及同步機制在內核的具體實現,給廣大系統管理員和研發人員提供技術參考。

責任編輯:黃丹 來源: developerworks
相關推薦

2010-05-21 18:15:41

MySQL 備份

2010-05-11 14:37:56

MySQL 備份

2010-11-04 09:43:15

虛擬備份

2009-07-02 19:07:25

Linux

2009-06-30 10:40:28

Linux

2010-07-13 09:39:58

SolarisZFS文件系統

2020-12-16 20:30:24

Linux系統備份系統恢復

2009-11-26 11:31:34

NFS網絡文件系統設定

2020-08-28 07:49:19

Linux文件系統

2011-01-13 13:18:38

Linux網絡文件

2019-09-11 11:38:30

MySQLInnoDB數據庫

2010-04-26 18:11:55

Unix文件系統

2011-01-13 14:10:30

Linux文件系統

2017-07-10 14:26:03

Mysql數據備份數據恢復

2023-08-07 06:39:03

網絡傳輸

2009-12-17 14:49:47

Linux文件系統

2020-07-22 14:53:06

Linux系統虛擬文件

2012-05-15 13:55:18

Linux備份

2009-11-20 09:29:53

2019-09-11 09:37:17

數據庫MySQL系統
點贊
收藏

51CTO技術棧公眾號

91成人免费视频| 日韩在线观看免费全| 久在线观看视频| 你懂的视频在线| 蜜桃视频一区二区三区| 欧美成人小视频| 日本xxx在线播放| 成人豆花视频| 日韩欧美国产骚| 国产美女视频免费| 欧美女v视频| 国产精品亚洲一区二区三区在线| 欧美中文字幕第一页| 制服丨自拍丨欧美丨动漫丨| 国产精品男女| 欧美三级电影在线看| 久久久久久久久久久99| 在线免费观看黄色网址| av在线这里只有精品| 国产三级精品网站| 婷婷激情五月网| 欧美va亚洲va日韩∨a综合色| 亚洲人成人99网站| 久久精品aⅴ无码中文字字幕重口| 香蕉视频亚洲一级| 亚洲国产一二三| 欧美日韩在线免费观看视频| 人操人视频在线观看| 国产99久久久国产精品免费看 | 1区2区在线观看| 国产性天天综合网| 精品日本一区二区三区| 国产女无套免费视频| 日韩av中文字幕一区二区三区| 久久久久久成人| 美国黄色小视频| 99久久精品费精品国产风间由美| 亚洲欧洲美洲在线综合| 国产草草浮力影院| 国内精品国产成人国产三级粉色 | 色婷婷综合视频| 国产在线看一区| 国产美女91呻吟求| 成年人晚上看的视频| 亚洲欧美日韩国产一区二区| 97精品在线视频| 日韩黄色在线视频| 9色精品在线| 91精品国产91久久久| 国产一级做a爰片在线看免费| 欧美激情第8页| 免费不卡在线观看av| 国产wwwwxxxx| 天天影视天天精品| 欧美成年人视频网站欧美| 男人晚上看的视频| 一本一道久久a久久精品蜜桃| 日韩亚洲成人av在线| 91香蕉视频污在线观看| 香蕉国产精品| 九九视频直播综合网| 欧美国产日韩综合| 影院欧美亚洲| 欧美一区二区三区艳史| 天堂网中文字幕| 日韩av一区二| 成人动漫网站在线观看| 国产伦精品一区二区三区四区 | 神马久久高清| av日韩在线网站| 久久av一区二区三区亚洲| 青青草手机在线| 欧美激情一区二区三区不卡| 亚洲精品国产精品国自产| 最新真实国产在线视频| 亚洲欧洲中文日韩久久av乱码| 日本一区二区三区四区五区六区| 尤物在线网址| 红桃av永久久久| 8x8x最新地址| 欧美电影院免费观看| 亚洲国产精品人人爽夜夜爽| 国产熟妇久久777777| 日韩国产一区二区| 欧美激情一级欧美精品| 国语对白永久免费| 激情综合亚洲精品| 99久久久精品免费观看国产| 日本福利片高清在线观看| 日本一区二区在线不卡| 精品久久久无码人妻字幂| 51精品视频| 精品视频1区2区| 免费啪视频在线观看| 久操精品在线| 九九热在线精品视频| 中文字幕在线观看视频免费| 精品在线播放免费| 久久国产精品亚洲va麻豆| 在线激情网站| 午夜久久久久久久久久一区二区| 99视频在线视频| 亚洲午夜精品| 最新中文字幕亚洲| 日本五十路女优| 激情欧美一区二区三区在线观看| 国产综合精品一区二区三区| 嫩草在线视频| 精品日韩中文字幕| 午夜视频在线观| 怕怕欧美视频免费大全| 欧美激情亚洲综合一区| 91无套直看片红桃| 久久午夜电影网| 久久亚洲国产成人精品无码区| 国产成人免费9x9x人网站视频| 精品国产污网站| 青青青视频在线免费观看| 99视频在线精品国自产拍免费观看| 国产精品久久久久久久9999| 日韩在线视频免费| 亚洲欧美欧美一区二区三区| 狠狠热免费视频| 欧美激情影院| 久久久久久久久久亚洲| 国产高清在线观看视频| 国产精品久久久久四虎| 日本wwww视频| 久久91在线| 欧美黄色成人网| 99久久一区二区| 国产精品初高中害羞小美女文| 777米奇影视第四色| 精品欠久久久中文字幕加勒比| 欧美大奶子在线| 在线免费观看高清视频| 国产女主播视频一区二区| 欧美性久久久久| 婷婷激情久久| 51色欧美片视频在线观看| 肥臀熟女一区二区三区| 一区二区三区欧美激情| 搡的我好爽在线观看免费视频| 色呦哟—国产精品| 国产欧美日韩精品丝袜高跟鞋| 国产午夜在线视频| 色成年激情久久综合| 蜜臀av一区二区三区有限公司| 国产欧美另类| 欧美日韩日本网| 国产精品伦理| 一区二区中文字幕| 亚洲天堂777| 中文字幕在线不卡| 涩多多在线观看| 欧美精品三级| 国产亚洲欧美一区二区三区| 韩国成人二区| 国产午夜精品全部视频播放| 波多野结衣视频在线观看| 国产日产亚洲精品系列| 邪恶网站在线观看| 五月婷婷六月综合| 999热视频在线观看| 国产羞羞视频在线播放| 亚洲精品大尺度| 成人毛片在线播放| 国产精品久久久久久久久搜平片| 亚洲自拍第三页| 欧美日韩午夜| 欧美二区三区在线| 国产极品一区| 欧美丰满少妇xxxx| 久久精品国产亚洲a∨麻豆| 欧美色成人综合| 国产精品国产三级国产传播| 国产成人精品免费视频网站| 黄色免费观看视频网站| 久久综合电影| 国产欧美综合精品一区二区| 浪潮色综合久久天堂| 操91在线视频| 亚洲 另类 春色 国产| 欧美色中文字幕| 精品少妇theporn| 久久日韩粉嫩一区二区三区| 久久久久久久久久一区| 韩日在线一区| 亚洲 日韩 国产第一区| 欧美不卡在线观看| 国产成人精品视频在线| 黄色av电影在线播放| 亚洲精品短视频| 一级黄色大毛片| 亚洲成人精品一区二区| 欧美乱大交做爰xxxⅹ小说| 波多野结衣亚洲一区| 91制片厂毛片| 亚洲毛片av| 波多野结衣激情| 国产一区二区三区探花| 高清不卡日本v二区在线| 精品欧美一区二区三区在线观看| 精品中文字幕在线观看| 成年人在线观看| 欧美精品一区二区三区蜜桃| 91精品国自产| 色综合久久中文字幕| 校园春色 亚洲| 国产精品污www在线观看| 中文字幕人妻一区二区三区| 精品一区在线看| 久久人妻精品白浆国产| 尤物网精品视频| 欧美精品一区二区性色a+v| 亚洲另类春色校园小说| 超碰97在线播放| 亚洲伊人精品酒店| 国产精品成人av在线| av成人 com a| 欧美肥婆姓交大片| 亚洲制服国产| www.国产精品一二区| 国产精品免费观看| 日韩精品视频三区| 天天干,夜夜爽| 亚洲精品一线二线三线无人区| 国产乱码精品一区二区三区精东 | aaaa一级片| 欧美人与z0zoxxxx视频| 无码人妻熟妇av又粗又大| 亚洲国产aⅴ天堂久久| 91porn在线视频| 亚洲视频 欧洲视频| 亚洲精品国产精品国自| 国产亚洲欧美色| 女~淫辱の触手3d动漫| 99精品热视频| 亚洲熟女乱综合一区二区三区| 成人久久18免费网站麻豆 | 日韩成人视屏| 亚洲自拍偷拍色图| 91麻豆精品国产91久久久更新资源速度超快| 国产成人在线亚洲欧美| 午夜精品久久久久久久久久蜜桃| 日韩美女在线观看| 久久91导航| 国产精品色婷婷视频| 欧美日韩破处视频| 成人黄色av播放免费| www.久久热| 99在线视频首页| 中文字幕一区图| 国产伦精品一区二区三区照片| 澳门成人av| 精品一区二区国产| 亚洲黄色录像| 日本免费一区二区三区| 成人高清电影网站| 一本久久a久久精品vr综合| 婷婷丁香综合| 亚洲乱码日产精品bd在线观看| 伊人久久大香线蕉综合四虎小说| 黄色网在线视频| 在线亚洲精品| 成年人在线观看视频免费| 免费欧美在线视频| 一级黄色高清视频| 成人性色生活片| 亚洲激情视频小说| 中文字幕视频一区| 日本妇女毛茸茸| 岛国视频午夜一区免费在线观看| 中文字幕一区二区人妻视频| 欧美日本在线观看| 免费观看毛片网站| 国产亚洲精品一区二555| 久久99精品久久| 97精品久久久| 日本美女久久| 成人三级在线| 精品国产日韩欧美| 黑人巨茎大战欧美白妇| 99这里有精品| 伊人国产精品视频| 91在线码无精品| 最新黄色av网址| 精品色蜜蜜精品视频在线观看| 亚洲性猛交富婆| 精品国产乱码久久久久久久| 国产精品ⅴa有声小说| 色综合久综合久久综合久鬼88 | 91精品久久久久久久久中文字幕| 日韩精品一区二区三区中文在线| 久久久7777| 小小影院久久| 国产精彩免费视频| 高清不卡一二三区| 国产aaaaaaaaa| 激情懂色av一区av二区av| 亚洲一区精品在线观看| 日韩不卡在线观看| 2024最新电影免费在线观看| 国产成人精品亚洲精品| 亚洲日本视频在线| 午夜精品视频在线观看一区二区| 伊人成人在线| 天天看片天天操| 国产亚洲欧美在线| 日本中文字幕免费| 日韩欧美国产一区二区在线播放 | 日韩少妇内射免费播放| 国内久久精品视频| 亚洲一区二区自偷自拍 | 51精品国产| 亚洲天堂电影网| 久久国产日韩| 91视频在线免费| 亚洲欧美日韩国产综合在线| japanese国产在线观看| 日韩不卡在线观看| www.综合网.com| 99国产在线视频| 亚洲精品99| 色呦色呦色精品| 国产欧美日本一区视频| 国产精品男女视频| 亚洲大尺度美女在线| 在线中文字幕-区二区三区四区| 国产精品永久免费观看| 精品在线播放| 久热免费在线观看| 94色蜜桃网一区二区三区| 国产在线欧美在线| 日韩欧美国产三级电影视频| 国产传媒在线播放| 国产在线高清精品| 国产精品88久久久久久| 孩娇小videos精品| 国产精品无圣光一区二区| 中国一级片黄色一级片黄| 亚洲一区第一页| 台湾成人免费视频| 天堂资源在线亚洲资源| 欧美a级理论片| 亚洲一区 欧美| 欧美浪妇xxxx高跟鞋交| 男人天堂久久久| 亚洲aⅴ日韩av电影在线观看| 91精品电影| 国产调教打屁股xxxx网站| 一区二区不卡在线播放| 亚洲va天堂va欧美ⅴa在线| 欧美国产视频一区二区| 高潮久久久久久久久久久久久久| 欧美一级中文字幕| 成人免费观看男女羞羞视频| 日本少妇毛茸茸高潮| 国产视频综合在线| 99热播精品免费| 色香蕉在线观看| 国产91精品免费| 国产91精品一区| 中文在线不卡视频| 国产精久久一区二区| 精品国偷自产一区二区三区| www.在线成人| 中文字幕乱伦视频| 蜜臀久久99精品久久久久久宅男| 超碰97久久国产精品牛牛| 黄色一级片播放| 欧美国产视频在线| 国产情侣激情自拍| 午夜精品蜜臀一区二区三区免费| 色狼人综合干| av免费一区二区| 亚洲午夜久久久久久久久久久| 天天操天天干天天插| 国产极品精品在线观看| 天天揉久久久久亚洲精品| 在线看黄色的网站| 欧美自拍偷拍一区| 里番在线播放| 日韩国产精品一区二区| 国产中文字幕精品| 国产污污视频在线观看| 亚洲最大在线视频| 亚洲福利合集| 欧美性猛交久久久乱大交小说| 18欧美乱大交hd1984| 神马久久精品| 3d动漫精品啪啪一区二区三区免费| 国产视频一区免费看| 成人欧美一区二区三区黑人一| 精品欧美一区二区三区精品久久 | 91在线观看免费高清| 国产视频一区免费看| 亚洲色图综合区| 在线看欧美日韩| 欧美亚洲大陆|