国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

我們一起聊聊 Linux 的文件系統(tǒng)(File System)架構(gòu)

系統(tǒng) Linux
數(shù)據(jù)預(yù)讀也是有一定的算法的,預(yù)讀算法通過識別IO模式方式來提前將數(shù)據(jù)從磁盤讀到緩存中。這樣,應(yīng)用讀取數(shù)據(jù)時就可以直接從緩存讀取數(shù)據(jù),從而極大的提高讀數(shù)據(jù)的性能。

本文重點介紹一下虛擬文件系統(tǒng)。Linux整個文件系統(tǒng)的架構(gòu)如下圖所示,其中在具體文件系統(tǒng)(如Ext2、Ext3和XFS等)與應(yīng)用程序之間有一層抽象層,稱為虛擬文件系統(tǒng)(Virtual File System),簡稱VFS。

圖片圖片

由上圖可以看出,該架構(gòu)的核心是虛擬文件系統(tǒng)VFS,VFS提供了一個文件系統(tǒng)框架,本地文件系統(tǒng)可以基于VFS實現(xiàn),其主要做了如下幾方面的工作:

1) VFS作為抽象層為應(yīng)用層提供了統(tǒng)一的接口(read、write和chmod等)。

2) 在VFS中實現(xiàn)了一些公共的功能,如inode緩存和頁緩存等。

3) 規(guī)范了具體文件系統(tǒng)應(yīng)該實現(xiàn)的接口。

基于上述設(shè)定,其他具體的文件系統(tǒng)只需要按照VFS的約定實現(xiàn)相應(yīng)的接口及內(nèi)部邏輯,并注冊在系統(tǒng)之中即可。之后, 當(dāng)用戶格式化并掛載文件系統(tǒng)后就可以基于該文件系統(tǒng)使用硬盤的資源了。

在Linux操作系統(tǒng)中,在格式化磁盤后需要通過mount命令將其掛載到系統(tǒng)目錄樹的某個目錄下面,這個目錄稱為掛載點(mount point)。完成掛載后,我們就可以使用基于該文件系統(tǒng)格式化的硬盤空間了。在Linux操作系統(tǒng)中,掛載點幾乎可以是任意目錄,但為了規(guī)范化,掛載點通常是mnt目錄下的子目錄。    

如下圖所示是一個相對比較復(fù)雜的目錄樹。在該目錄樹中,根文件系統(tǒng)基于硬盤sda格式化,在mnt目錄下又有ext4、xfs和nfs三個子目錄,并且分別掛載了Ext4文件系統(tǒng)(基于sdb構(gòu)建)、XFS文件系統(tǒng)(基于sdc構(gòu)建)和NFS文件系統(tǒng)(通過網(wǎng)絡(luò)掛載)。

圖片圖片

目錄樹中多個文件系統(tǒng)的關(guān)系是內(nèi)核中的一些數(shù)據(jù)結(jié)構(gòu)表示的。在進(jìn)行文件系統(tǒng)掛載的時候會建立文件系統(tǒng)間的關(guān)系,并且注冊具體文件系統(tǒng)的API。當(dāng)用戶態(tài)調(diào)用打開文件的API時,會找到對應(yīng)的文件系統(tǒng)API,并關(guān)聯(lián)到文件相關(guān)的結(jié)構(gòu)體(例如file和inode等)。

上面的描述比較概要,大家可能還是有點云里霧里的感覺。不過大家不要著急,我們接下來會結(jié)合代碼更加詳細(xì)的介紹VFS及如何實現(xiàn)對多種文件系統(tǒng)的支持。

1.從文件系統(tǒng)API到VFS,再到具體文件系統(tǒng)

Linux的VFS并不是一開始就有的,最早發(fā)布的Linux版本并沒有VFS。而且,VFS并非是在Linux發(fā)明的,它最早于1985年由Sun公司在其SunOS2.0中開發(fā)。開發(fā)VFS的主要目的是為了適配其本地文件系統(tǒng)和NFS文件系統(tǒng)。

VFS通過一套公共的API和數(shù)據(jù)結(jié)構(gòu)實現(xiàn)了對具體文件系統(tǒng)的抽象。當(dāng)用戶調(diào)用操作系統(tǒng)提供的文件系統(tǒng)API時會通過軟中斷的方式調(diào)用內(nèi)核VFS實現(xiàn)的函數(shù)。如下表所示是部分文件API與內(nèi)核VFS函數(shù)的對應(yīng)關(guān)系。    

用戶態(tài)API

內(nèi)核函數(shù)

說明

open

do_sys_open

打開文件

close

ksys_close

關(guān)閉文件

read

ksys_read/vfs_read

讀取數(shù)據(jù)

write

ksys_write/vfs_write

寫入數(shù)據(jù)

mount

do_mount

掛載文件系統(tǒng)

由上表可以看出每個用戶態(tài)的API都有一個內(nèi)核態(tài)的函數(shù)與之對應(yīng)。當(dāng)應(yīng)用程序調(diào)用文件系統(tǒng)的API時會觸發(fā)內(nèi)核態(tài)的對應(yīng)函數(shù)。這里列舉的只是文件系統(tǒng)API中的一個比較小的子集,目的是為了說明API與VFS的關(guān)系。如果大家想了解其他API請自行閱讀內(nèi)核源代碼,本文不再贅述。

為了讓大家能夠?qū)FS與具體文件系統(tǒng)的關(guān)系有個感性的認(rèn)識,本節(jié)以Ext2的寫API為例來展示一下從API到VFS函數(shù),再到Ext2文件系統(tǒng)函數(shù)的調(diào)用關(guān)系。如下圖所示,API函數(shù)write通過軟中斷觸發(fā)內(nèi)核的ksys_write函數(shù),該函數(shù)經(jīng)過若干處理后最終會通過函數(shù)指針(file->f_op->wirte_iter)的方式調(diào)用Ext2文件系統(tǒng)的ext2_file_write_iter函數(shù)。    

圖片圖片

在上圖中內(nèi)核流程的入口是ksys_write函數(shù),通過實現(xiàn)代碼可以看出,這里主要是獲取一個fd,然后以fd中的成員file作為參數(shù)調(diào)用vfs_write。其中fd是一個結(jié)構(gòu)體,其格式如下圖所示,file成員是比較核心的數(shù)據(jù)結(jié)構(gòu)。從上圖可以看出,正是通過這個成員中的內(nèi)容才調(diào)到了Ext2文件系統(tǒng)的函數(shù)。    

圖片圖片

看上去很簡單,VFS只要調(diào)用具體文件系統(tǒng)注冊的函數(shù)指針即可。但是這里有個問題沒有解決,VFS中的函數(shù)指針是什么時候被注冊的呢?

Ext2的函數(shù)指針是在打開文件的時候被初始化的(具體細(xì)節(jié)請參考《文件系統(tǒng)技術(shù)內(nèi)幕》3.1.2.2節(jié))。大家都知道,用戶態(tài)的程序在打開一個文件的時候返回的是一個文件描述符,但在內(nèi)核中表示文件的結(jié)構(gòu)體file與之對應(yīng)。這個結(jié)構(gòu)體里面比較重要的幾個成員包括f_inode、f_ops和f_mapping等,具體如下圖所示。

圖片圖片

在上圖中,f_inode是該文件對應(yīng)的inode節(jié)點。f_ops是具體文件系統(tǒng)(例如Ext2)文件操作的函數(shù)指針集合,它是在打開文件的時候被初始化的。VFS正是通過該函數(shù)指針集合來實現(xiàn)對具體文件系統(tǒng)訪問的。

上面又涉及到VFS的另外一個概念inode。在Linux中,inode是index node的縮寫,他表示了文件系統(tǒng)中的一個具體的對象(比如文件或者目錄)。在VFS中有一個名稱為inode的數(shù)據(jù)結(jié)構(gòu),他是對具體文件系統(tǒng)inode的抽象。比如在Ext2文件系統(tǒng)中具體定義為ext2_inode_info,在XFS中則是通過數(shù)據(jù)結(jié)構(gòu)xfs_inode表示的。而且具體文件系統(tǒng)的inode數(shù)據(jù)結(jié)構(gòu)與VFS的inode有個內(nèi)在的關(guān)聯(lián),大家可以自行閱讀代碼。

2.inode緩存與dentry緩存

在架構(gòu)圖中我們看到在VFS中有若干個緩存實現(xiàn),包括頁緩存、inode緩存和dentry緩存等。其中inode緩存和dentry緩存實現(xiàn)方式相同,也比較簡單。所以,本文先介紹一下這兩個緩存。

其實這兩個緩存是通過哈希表實現(xiàn)的,哈希表的概念大家都比較清楚,本文不再贅述。以inode緩存為例,如下圖是其初始化的過程,通過參數(shù)ihash_entries可以看出其大小是動態(tài)的(其大小跟系統(tǒng)內(nèi)存相關(guān),系統(tǒng)內(nèi)存閱讀,inode緩存就越大)。

圖片圖片

由于訪問文件時會經(jīng)常訪問inode和dentry,所以將兩者緩存起來能夠避免從硬盤讀取數(shù)據(jù)導(dǎo)致的性能損失。

3.頁緩存(Page Cache)

VFS頁緩存(Cache)的作用主要用來提升文件系統(tǒng)的性能。緩存技術(shù)是指在內(nèi)存中存儲文件系統(tǒng)的部分?jǐn)?shù)據(jù)和元數(shù)據(jù)而提升文件系統(tǒng)性能的技術(shù)。由于內(nèi)存的訪問延時是機(jī)械硬盤訪問延時的十萬分之一(如下圖所示,以寄存器為基準(zhǔn)單位1s),因此采用緩存技術(shù)可以大幅提升文件系統(tǒng)的性能。

圖片圖片

緩存通過三方面的IO優(yōu)化來提升文件系統(tǒng)的性能,分別是熱點數(shù)據(jù)、預(yù)讀和IO合并。很多應(yīng)用都會有熱點數(shù)據(jù),比如作者在編輯文檔的時候,當(dāng)前這個數(shù)據(jù)塊及附近的數(shù)據(jù)塊就是熱點數(shù)據(jù)。或者當(dāng)出現(xiàn)一個爆款文章時,這篇文章的內(nèi)容就是熱點數(shù)據(jù)。底層存儲設(shè)備對于大塊讀寫的性能往往較好,預(yù)讀就是提前從底層設(shè)備讀取大塊數(shù)據(jù)緩存起來,這樣可以通過緩存來響應(yīng)應(yīng)用的請求。IO合并則是針對寫請求,寫請求不馬上持久化到后端設(shè)備,而是緩存一下,拼成大塊IO再寫入。

由于內(nèi)存的容量要比硬盤的容量小的多,因此頁緩存自然不能緩存所有硬盤的數(shù)據(jù)。這樣緩存中只能存儲文件系統(tǒng)數(shù)據(jù)的一個子集。當(dāng)用戶持續(xù)寫入數(shù)據(jù)的時候就會面臨緩存滿的情況,此時就涉及如何將緩存數(shù)據(jù)刷寫磁盤,然后存儲新數(shù)據(jù)的問題。

這里將緩存刷寫到磁盤,并且存儲新數(shù)據(jù)的過程稱為緩存替換。緩存替換有很多種算法,每種算法用于解決不同的問題。接下來我們介紹幾種常見的緩存替換算法。

LRU算法,LRU的全稱是Least Recently Used,也就是最近最少使用。該算法依據(jù)的是時間局部性原理,也就是如果一個數(shù)據(jù)最近被使用過,那么接下來有很大的概率還會被使用。因此該算法會將最近沒有使用過的緩存釋放掉。

LRU算法通常使用一個鏈表來實現(xiàn),剛被使用過的緩存會被插到表頭的位置,而經(jīng)常沒有被使用過的數(shù)據(jù)則慢慢被擠到鏈表的尾部。為了更加清晰的理解LRU的原理,我們結(jié)合下圖進(jìn)行說明。    

圖片圖片

在該例中,我們以全命中為例進(jìn)行介紹。假設(shè)緩存中有6個數(shù)據(jù)塊,如圖第一行所示,方塊中的數(shù)字代表該數(shù)據(jù)塊的編號。假設(shè)第一次訪問(可以是讀或者寫)的是3號數(shù)據(jù)塊,由于其被訪問過,因此將其移動到鏈表頭。

第二次訪問時訪問的是第4號數(shù)據(jù)塊,按照相同的原則,該數(shù)據(jù)塊也被移動到鏈表頭。具體如上圖第2行所示。

以此類推,當(dāng)經(jīng)過4輪訪問后,被訪問過的數(shù)據(jù)都被前移了,而沒有被訪問過的數(shù)據(jù)塊(例如1和2)則被慢慢擠到了鏈表的后面。這在一定程度上預(yù)示著這兩個數(shù)據(jù)塊在后面被訪問的可能性也比較小。

如果是全命中的話也就不存在緩存被替換的情況了。實際情況是緩存會經(jīng)常不夠用,而需要將其中的數(shù)據(jù)釋放(視情況確定是否需要刷新到磁盤)來存儲新的數(shù)據(jù)。此時,LRU算法就派上用場了,該算法將尾部的數(shù)據(jù)塊拿來存儲新數(shù)據(jù),然后放到鏈表頭,具體下圖如所示。如果這個數(shù)據(jù)塊里面是臟數(shù)據(jù)則需要刷寫到磁盤,否則直接釋放掉就可以。    

圖片圖片

LRU算法原理和實現(xiàn)都比較簡單,用途卻非常廣泛。但是LRU算法有個缺點,就是當(dāng)突然有大量連續(xù)數(shù)據(jù)寫入時會替換掉所有的緩存塊,從而導(dǎo)致之前統(tǒng)計的緩存使用情況全部失效,這種現(xiàn)象稱為緩存污染。為了解決緩存污染問題,有很多改進(jìn)的LRU算法,其中比較常見的有LRU-K、2Q和LIRS等。

LFU算法,LFU的全稱是Least Frequently Used,也就是最近最不經(jīng)常使用。該算法是根據(jù)數(shù)據(jù)被訪問的頻度來決策釋放哪一個緩存塊的。訪問頻度最低的緩存塊會被最先釋放掉。

如下圖所示是LFU算法的示意圖。其中第1行是原始狀態(tài),方塊中的數(shù)字表示該緩存塊被訪問的次數(shù)。新數(shù)據(jù)的加入和緩存塊的淘汰都是從尾部進(jìn)行。假設(shè)某一塊(虛線框)數(shù)據(jù)被訪問了4次,則其訪問次數(shù)從12變成了16,因此需要移動到新的位置,也就是圖中第2行的樣子。

圖片圖片

本書以鏈表為例說明LFU的原理是為了便于理解,但是在工程實現(xiàn)的時候是絕對不會用鏈表來實現(xiàn)的。因為當(dāng)數(shù)據(jù)塊的訪問次數(shù)變化時需要找新的位置,鏈表查找操作是非常耗時的。為了能夠?qū)崿F(xiàn)快速查找,一般采用搜索樹來實現(xiàn)。    

LFU也有其缺點,如果某個數(shù)據(jù)塊在很久之前的某個時間段高頻訪問,而以后不再訪問,那么該數(shù)據(jù)會一直停留在緩存中。但是由于該數(shù)據(jù)不會被訪問了,所以導(dǎo)致緩存的有效容量減少了。也就是說LFU算法沒有考慮最近的情況。

本文主要介紹了LRU和LFU等2種非常基礎(chǔ)的替換算法。除了上述算法外,還有還很多替換算法,大多以LRU和LFU的理論為基礎(chǔ),比如2Q,MQ,LRFU,TinyLFU和ARC等等。限于篇幅,本書不再贅述,大家可以自行閱讀相關(guān)的論文。

數(shù)據(jù)預(yù)讀也是有一定的算法的,預(yù)讀算法通過識別IO模式方式來提前將數(shù)據(jù)從磁盤讀到緩存中。這樣,應(yīng)用讀取數(shù)據(jù)時就可以直接從緩存讀取數(shù)據(jù),從而極大的提高讀數(shù)據(jù)的性能。

預(yù)讀算法里面最為重要的是觸發(fā)條件,也就是在什么情況下出發(fā)預(yù)讀操作。通常有兩種情況會觸發(fā)預(yù)讀:一個是有多個地址連續(xù)的讀請求時會觸發(fā)預(yù)讀操作;另外一個是應(yīng)用訪問到有預(yù)讀標(biāo)記的緩存時。這里,預(yù)讀標(biāo)記的緩存是在預(yù)讀操作完成時在緩存頁做的標(biāo)記,當(dāng)應(yīng)用讀到有該標(biāo)記的緩存時會觸發(fā)下一次的預(yù)讀,從而省略對IO模式的識別。

圖片圖片

為了更加清晰的解釋預(yù)讀的邏輯,我們通過上圖來介紹一下整個流程。當(dāng)文件系統(tǒng)識別IO模式需要預(yù)讀的時候,會多讀出一部分內(nèi)容(稱為同步預(yù)讀),如時間1(第一行)所示。同時,對于同步預(yù)讀的數(shù)據(jù),文件系統(tǒng)會在其中某個塊上打上標(biāo)記。這個標(biāo)記的目的是為了在緩存結(jié)束前能夠盡早的觸發(fā)下一次的預(yù)讀。    

第2個時間點,當(dāng)應(yīng)用繼續(xù)讀取數(shù)據(jù)時,由于讀到了有標(biāo)記的緩存塊,因此會同時觸發(fā)下一次的預(yù)讀。此時數(shù)據(jù)會被從磁盤一步讀取,可以從圖中看出緩存增加。

接下來時間點3,4,應(yīng)用可以直接從緩存讀取數(shù)據(jù)。由于沒有讀到有標(biāo)記的緩存塊,因此也不會觸發(fā)下一次的預(yù)讀。在時間點5,由于有預(yù)讀標(biāo)記,因此又會觸發(fā)預(yù)讀的流程。

通過上述分析可以看出,由于預(yù)讀特性將數(shù)據(jù)提前讀到了緩存當(dāng)中。應(yīng)用可以直接從緩存讀取數(shù)據(jù),而不用再訪問磁盤,因此整個訪問性能將得到大幅的提升。

責(zé)任編輯:武曉燕 來源: 數(shù)據(jù)存儲張
相關(guān)推薦

2024-07-12 08:28:09

聊天系統(tǒng)架構(gòu)

2022-04-07 09:29:04

文件系統(tǒng)硬盤操作系統(tǒng)

2023-08-02 08:35:54

文件操作數(shù)據(jù)源

2022-09-22 08:06:29

計算機(jī)平板微信

2024-02-26 00:00:00

架構(gòu)老化重構(gòu)

2025-06-10 03:00:00

2024-10-29 11:19:23

點贊系統(tǒng)同步

2023-04-26 07:30:00

promptUI非結(jié)構(gòu)化

2021-08-27 07:06:10

IOJava抽象

2024-02-20 21:34:16

循環(huán)GolangGo

2022-10-08 00:00:05

SQL機(jī)制結(jié)構(gòu)

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信

2023-08-04 08:20:56

DockerfileDocker工具

2022-05-24 08:21:16

數(shù)據(jù)安全API

2023-06-30 08:18:51

敏捷開發(fā)模式

2023-09-10 21:42:31

2023-06-09 08:06:14

操作系統(tǒng)調(diào)度器LLM

2023-03-07 07:05:29

生產(chǎn)數(shù)據(jù)庫運維

2021-07-31 11:40:55

Openresty開源

2022-10-28 07:27:17

Netty異步Future
點贊
收藏

51CTO技術(shù)棧公眾號

麻豆影视在线观看_| 欧美高清在线一区二区| 青青草这里只有精品| 黄色精品在线观看| 日本中文字幕电影在线免费观看 | 一本色道久久综合狠狠躁的推荐| 日韩精品极品毛片系列视频| 青青视频免费在线观看| 午夜影院在线| 日韩午夜在线播放| 922tv免费观看在线| 国产精品嫩草99a| aaaaaa亚洲| jvid福利写真一区二区三区| 1024成人网| 青青青在线观看视频| 九九国产精品视频| 日本黄色播放器| 精品一区二区三区在线视频| 水蜜桃一区二区三区| 视频一区视频二区中文字幕| 青娱乐国产91| 免费看欧美美女黄的网站| 免费h精品视频在线播放| 亚洲欧美日韩国产一区二区| 欧美日韩中文国产一区发布| 日韩av一区二区三区四区| 日韩高清专区| 国产福利一区在线观看| 农民人伦一区二区三区| 97超碰欧美中文字幕| 国产精品无码一本二本三本色| 26uuuu精品一区二区| 欧美第一页浮力影院| 亚洲人成伊人成综合网小说| 两个人看的免费完整在线观看| 欧美体内谢she精2性欧美| 91短视频版在线观看www免费| 日韩一二在线观看| 福利一区二区| 日韩美女主播视频| 在线日韩视频| 欧美狂野激情性xxxx在线观| 中文字幕av一区 二区| 校园春色综合| 精品久久五月天| 色噜噜成人av在线| 日本中文字幕成人| 在线视频精品| 精品少妇人欧美激情在线观看| 久久精品视频免费| 婷婷福利视频导航| 日韩欧美一级在线播放| 国产情侣一区二区三区| 视频一区二区国产| 欧美黑人经典片免费观看| 亚洲欧美日韩在线不卡| 粉嫩av在线播放| 亚洲一区二区精品| 成人高清av| 欧美在线激情| 国产精品欧美精品| 免费av网站在线观看| 久久久999国产| 亚洲精品国产偷自在线观看| 水蜜桃一区二区三区| 国产女同性恋一区二区| 女女色综合影院| 欧美成人在线免费| 亚洲黄色av| 高清一区在线观看| 久久伊99综合婷婷久久伊| 成人免费观看cn| 免费成人美女在线观看| 69174成人网| 久久电影网站| 欧美国产一区在线| 欧美高清不卡| 青草青草久热精品视频在线网站| 香蕉综合视频| 91黄色在线看| 亚洲一区二区三区三| 蜜桃av在线免费观看| 久久综合久中文字幕青草| 97精品在线| 欧洲精品一区二区三区久久| 五月综合激情婷婷六月色窝| 日韩大片欧美大片| 亚洲一区二区中文字幕| 91网站在线观看视频| 国产51人人成人人人人爽色哟哟| 蜜臀久久99精品久久久久久宅男 | 91pron在线| 久久久不卡网国产精品二区| 亚洲国产精品精华素| 国产成人+综合亚洲+天堂| 国产风韵犹存在线视精品| 台湾av在线二三区观看| 欧美人与性动交a欧美精品| 久久最新视频| 亚洲精品视频99| 国模gogo一区二区大胆私拍| 蜜芽一区二区三区| 人操人视频在线观看| 欧美激情综合色综合啪啪五月| 麻豆一区二区三区| 二区三区在线| 欧美又大又粗又长| 99久久国产综合精品麻豆| 成人免费一区二区三区牛牛| 亚洲一区二区三区777| 亚洲丝袜自拍清纯另类| 97久久中文字幕| 亚洲精品国产精品国自产观看 | 欧美日韩a区| 成人动漫h在线观看| 精品国内产的精品视频在线观看| 视频一区二区国产| caopo在线| 久久精品女人的天堂av| 欧美日韩免费网站| 欧美在线色图| 超碰在线94| 国产精品夜色7777狼人| 日韩美女视频一区| 麻豆一区二区| 在线免费视频一区| 久久久亚洲影院| 国产三级三级三级精品8ⅰ区| 日韩毛片免费看| 欧美变态另类刺激| www.久久色.com| 成人综合在线观看| av中文字幕在线观看第一页 | 九色福利视频| 日本免费一区二区三区视频观看| 国产日韩欧美一区二区三区综合 | 能在线观看的av| 国产亚洲综合久久| 日韩精品免费视频| 在线欧美日韩精品| 伊人网在线视频| 91丨九色丨尤物| 欧美影院三区| 川上优av中文字幕一区二区| 中文在线免费一区三区| 色8久久影院午夜场| 九九热这里有精品| 五月国产精品| 日日夜夜一区二区| 久久社区一区| 色狠狠久久av综合| 亚洲精品久久| 成人午夜一级| 亚洲影视一区| 精品国产网站| 日韩精品一级二级| 欧美日韩激情小视频| 欧美日韩国产在线播放网站| 日韩欧美一区中文| 99久久99| 免费久久久久久| 最新97超碰在线| 群体交乱之放荡娇妻一区二区| 1区2区3区在线| 亚洲成a人v欧美综合天堂麻豆| 日日夜夜天天综合| 国产免费a∨片在线观看不卡| 夜级特黄日本大片_在线| 国产aaaaa毛片| 国产乱子伦精品无码专区| 青草青青在线视频| 欧美日韩在线观看首页| 欧美freesex黑人又粗又大| 性欧美18xxxhd| 成人免费一区| 夜夜爽av福利精品导航| 国产v综合v| 亚洲欧美伊人| 91麻豆视频网站| 欧美国产一区二区在线观看 | 在线观看日韩欧美| 美女黄色丝袜一区| 浮妇高潮喷白浆视频| 最大av网站| 欧美极品在线| 久久精品色综合| 91www在线| 欧洲视频在线免费观看| 午夜在线不卡| 国产深夜男女无套内射| 亚洲xxxxx电影| 精品一区二区三区日本| 久久综合九色综合久99| 69免费视频| 欧美亚洲黄色| 亚洲一区二区三区高清不卡| 欧美精品久久久久久久自慰| 日韩美女福利视频| 亚洲精品动漫久久久久|