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

Docker基礎技術:做DeviceMappee做分層鏡像

云計算
DeviceMapper自Linux 2.6被引入成為了Linux最重要的一個技術。它在內(nèi)核中支持邏輯卷管理的通用設備映射機制,它為實現(xiàn)用于存儲資源管理的塊設備驅動提供了一個高度模塊化的內(nèi)核架構。

因為Docker***的AUFS并不在Linux的內(nèi)核主干里,所以,對于非Ubuntu的Linux分發(fā)包,比如CentOS,就無法使用AUFS作為Docker的文件系統(tǒng)了。于是作為第二優(yōu)先級的 DeviceMapper就被拿出來做分層鏡像的一個實現(xiàn)。

Device Mapper 簡介

DeviceMapper自Linux 2.6被引入成為了Linux最重要的一個技術。它在內(nèi)核中支持邏輯卷管理的通用設備映射機制,它為實現(xiàn)用于存儲資源管理的塊設備驅動提供了一個高度模塊化的內(nèi)核架構,它包含三個重要的對象概念,Mapped Device、Mapping Table、Target device。

Mapped Device 是一個邏輯抽象,可以理解成為內(nèi)核向外提供的邏輯設備,它通過Mapping Table描述的映射關系和 Target Device 建立映射。Target device 表示的是 Mapped Device 所映射的物理空間段,對 Mapped Device 所表示的邏輯設備來說,就是該邏輯設備映射到的一個物理設備。

Mapping Table里有 Mapped Device 邏輯的起始地址、范圍、和表示在 Target Device 所在物理設備的地址偏移量以及Target 類型等信息(注:這些地址和偏移量都是以磁盤的扇區(qū)為單位的,即 512 個字節(jié)大小,所以,當你看到128的時候,其實表示的是128*512=64K)。

DeviceMapper 中的邏輯設備Mapped Device不但可以映射一個或多個物理設備Target Device,還可以映射另一個Mapped Device,于是,就是構成了一個迭代或遞歸的情況,就像文件系統(tǒng)中的目錄里除了文件還可以有目錄,理論上可以***嵌套下去。

DeviceMapper在內(nèi)核中通過一個一個模塊化的 Target Driver 插件實現(xiàn)對 IO 請求的過濾或者重新定向等工作,當前已經(jīng)實現(xiàn)的插件包括軟 Raid、加密、多路徑、鏡像、快照等,這體現(xiàn)了在 Linux 內(nèi)核設計中策略和機制分離的原則。如下圖所示。從圖中,我們可以看到DeviceMapper只是一個框架,在這個框架上,我們可以插入各種各樣的策略(讓我不自然地想到了面向對象中的策略模式),在這諸多“插件”中,有一個東西叫Thin Provisioning Snapshot,這是Docker使用DeviceMapper中最重要的模塊。

圖片來源:http://people.redhat.com/agk/talks/FOSDEM_2005/

(圖片來源:http://people.redhat.com/agk/talks/FOSDEM_2005/)

Thin Provisioning 簡介

Thin Provisioning要怎么翻譯成中文,真是一件令人頭痛的事,我就不翻譯了。這個技術是虛擬化技術中的一種。它是什么意思呢?你可以聯(lián)想一下我們計算機中的內(nèi)存管理中用到的——“虛擬內(nèi)存技術”——操作系統(tǒng)給每個進程N多N多用不完的內(nèi)址地址(32位下,每個進程可以有最多2GB的內(nèi)存空間),但是呢,我們知道,物理內(nèi)存是沒有那么多的,如果按照進程內(nèi)存和物理內(nèi)存一一映射來玩的話,那么,我們得要多少的物理內(nèi)存啊。所以,操作系統(tǒng)引入了虛擬內(nèi)存的設計,意思是,我邏輯上給你***多的內(nèi)存,但是實際上是實報實銷,因為我知道你一定用不了那么多,于是,達到了內(nèi)存使用率提高的效果。(今天云計算中很多所謂的虛擬化其實完全都是在用和“虛擬內(nèi)存”相似的Thin Provisioning的技術,所謂的超配,或是超賣)

好了,話題拉回來,我們這里說的是存儲。看下面兩個圖(圖片來源),***個是Fat Provisioning,第二個是Thin Provisioning,其很好的說明了是個怎么一回事(和虛擬內(nèi)存是一個概念)

thin-provisioning-1
thin-provisioning-2

那么,Docker是怎么使用Thin Provisioning這個技術做到像UnionFS那樣的分層鏡像的呢?答案是,Docker使用了Thin Provisioning的Snapshot的技術。下面我們來介紹一下Thin Provisioning的Snapshot。

#p#

Thin Provisioning Snapshot 演示

下面,我們用一系列的命令來演示一下Device Mapper的Thin Provisioning Snapshot是怎么玩的。

首先,我們需要先建兩個文件,一個是data.img,一個是meta.data.img:

  1. ~hchen$ sudo dd if=/dev/zero of=/tmp/data.img bs=1K count=1 seek=10M 
  2. 1+0 records in 
  3. 1+0 records out 
  4. 1024 bytes (1.0 kB) copied, 0.000621428 s, 1.6 MB/s 
  5.   
  6. ~hchen$ sudo dd if=/dev/zero of=/tmp/meta.data.img bs=1K count=1 seek=1G 
  7. 1+0 records in 
  8. 1+0 records out 
  9. 1024 bytes (1.0 kB) copied, 0.000140858 s, 7.3 MB/s

注意命令中seek選項,其表示為略過of選項指定的輸出文件的前10G個output的 bloksize的空間后再寫入內(nèi)容。因為bs是1個字節(jié),所以也就是10G的尺寸,但其實在硬盤上是沒有占有空間的,占有空間只有1k的內(nèi)容。當向其寫入內(nèi)容時,才會在硬盤上為其分配空間。我們可以用ls命令看一下,實際分配了12K和4K。

  1. ~hchen$ sudo ls -lsh /tmp/data.img 
  2. 12K -rw-r--r--. 1 root root 11G Aug 25 23:01 /tmp/data.img 
  3.   
  4. ~hchen$ sudo ls -slh /tmp/meta.data.img 
  5. 4.0K -rw-r--r--. 1 root root 101M Aug 25 23:17 /tmp/meta.data.img

然后,我們?yōu)檫@個文件創(chuàng)建一個loopback設備。

  1. ~hchen$ sudo losetup /dev/loop2015 /tmp/data.img 
  2. ~hchen$ sudo losetup /dev/loop2015 /tmp/meta.data.img 
  3.   
  4. ~hchen$ sudo losetup -a 
  5. /dev/loop2015: [64768]:103991768 (/tmp/data.img) 
  6. /dev/loop2016: [64768]:103991765 (/tmp/meta.data.img) 

現(xiàn)在,我們?yōu)檫@個設備建一個Thin Provisioning的Pool,用dmsetup命令:

  1.  ~hchen$ sudo dmsetup create hchen-thin-pool \ 
  2.                   --table "0 20971522 thin-pool /dev/loop2016 /dev/loop2015 \ 
  3.                            128 65536 1 skip_block_zeroing" 

其中的參數(shù)解釋如下(更多信息可參看Thin Provisioning的man page):

dmsetup create是用來創(chuàng)建thin pool的命令

hchen-thin-pool 是自定義的一個pool名,不沖突就好。

–table是這個pool的參數(shù)設置

  • 0代表起的sector位置
  • 20971522代碼結句的sector號,前面說過,一個sector是512字節(jié),所以,20971522個正好是10GB
  • /dev/loop2016是meta文件的設備(前面我們建好了)
  • /dev/loop2015是data文件的設備(前面我們建好了)
  • 128是最小的可分配的sector數(shù)
  • 65536是最少可用sector的water mark,也就是一個threshold
  • 1 代表有一個附加參數(shù)
  • skip_block_zeroing是個附加參數(shù),表示略過用0填充的塊

然后,我們就可以看到一個Device Mapper的設備了:

  1. ~hchen$ sudo ll /dev/mapper/hchen-thin-pool 
  2. lrwxrwxrwx. 1 root root 7 Aug 25 23:24 /dev/mapper/hchen-thin-pool -> ../dm-4 

接下來,我們的初始還沒有完成,還要創(chuàng)建一個Thin Provisioning 的 Volume:

  1. ~hchen$ sudo dmsetup message /dev/mapper/hchen-thin-pool 0 "create_thin 0" 
  2. ~hchen$ sudo dmsetup create hchen-thin-volumn-001 \ 
  3.             --table "0 2097152 thin /dev/mapper/hchen-thin-pool 0" 

其中:

  • ***個命令中的create_thin是關鍵字,后面的0表示這個Volume的device 的 id
  • 第二個命令,是真正的為這個Volumn創(chuàng)建一個可以mount的設備,名字叫hchen-thin-volumn-001。2097152只有1GB

好了,在mount前,我們還要格式化一下:

 

  1. ~hchen$ sudo mkfs.ext4 /dev/mapper/hchen-thin-volumn-001 
  2. mke2fs 1.42.9 (28-Dec-2013) 
  3. Discarding device blocks: done 
  4. Filesystem label= 
  5. OS type: Linux 
  6. Block size=4096 (log=2) 
  7. Fragment size=4096 (log=2) 
  8. Stride=16 blocks, Stripe width=16 blocks 
  9. 65536 inodes, 262144 blocks 
  10. 13107 blocks (5.00%) reserved for the super user 
  11. First data block=0 
  12. Maximum filesystem blocks=268435456 
  13. 8 block groups 
  14. 32768 blocks per group, 32768 fragments per group 
  15. 8192 inodes per group 
  16. Superblock backups stored on blocks: 
  17. 32768, 98304, 163840, 229376 
  18.   
  19. Allocating group tables: done 
  20. Writing inode tables: done 
  21. Creating journal (8192 blocks): done 
  22. Writing superblocks and filesystem accounting information: done 

 

好了,我們可以mount了(下面的命令中,我還創(chuàng)建了一個文件)

  1. ~hchen$ sudo mkdir -p /mnt/base 
  2. ~hchen$ sudo mount /dev/mapper/hchen-thin-volumn-001 /mnt/base 
  3. ~hchen$ sudo echo "hello world, I am a base" > /mnt/base/id.txt 
  4. ~hchen$ sudo cat /mnt/base/id.txt 
  5. hello world, I am a base 

好了,接下來,我們來看看snapshot怎么搞:

  1. ~hchen$ sudo dmsetup message /dev/mapper/hchen-thin-pool 0 "create_snap 1 0" 
  2. ~hchen$ sudo dmsetup create mysnap1 \ 
  3.                    --table "0 2097152 thin /dev/mapper/hchen-thin-pool 1" 
  4.   
  5. ~hchen$ sudo ll /dev/mapper/mysnap1 
  6. lrwxrwxrwx. 1 root root 7 Aug 25 23:49 /dev/mapper/mysnap1 -> ../dm-5 

上面的命令中:

  • ***條命令是向hchen-thin-pool發(fā)一個create_snap的消息,后面跟兩個id,***個是新的dev id,第二個是要從哪個已有的dev id上做snapshot(0這個dev id是我們前面就創(chuàng)建了了)
  • 第二條命令是創(chuàng)建一個mysnap1的device,并可以被mount。

下面我們來看看:

  1. ~hchen$ sudo mkdir -p /mnt/mysnap1 
  2. ~hchen$ sudo mount /dev/mapper/mysnap1 /mnt/mysnap1 
  3.   
  4. ~hchen$ sudo ll /mnt/mysnap1/ 
  5. total 20 
  6. -rw-r--r--. 1 root root 25 Aug 25 23:46 id.txt 
  7. drwx------. 2 root root 16384 Aug 25 23:43 lost+found 
  8.   
  9. ~hchen$ sudo cat /mnt/mysnap1/id.txt 
  10. hello world, I am a base 

我們來修改一下/mnt/mysnap1/id.txt,并加上一個snap1.txt的文件:

  1. ~hchen$ sudo echo "I am snap1" >> /mnt/mysnap1/id.txt 
  2. ~hchen$ sudo echo "I am snap1" > /mnt/mysnap1/snap1.txt 
  3.   
  4. ~hchen$ sudo cat /mnt/mysnap1/id.txt 
  5. hello world, I am a base 
  6. I am snap1 
  7.   
  8. ~hchen$ sudo cat /mnt/mysnap1/snap1.txt 
  9. I am snap1 

我們再看一下/mnt/base,你會發(fā)現(xiàn)沒有什么變化:

  1. ~hchen$ sudo ls /mnt/base 
  2. id.txt      lost+found 
  3. ~hchen$ sudo cat /mnt/base/id.txt 
  4. hello world, I am a base 

你是不是已經(jīng)看到了分層鏡像的樣子了?

你還要吧繼續(xù)在剛才的snapshot上再建一個snapshot

  1. ~hchen$ sudo dmsetup message /dev/mapper/hchen-thin-pool 0 "create_snap 2 1" 
  2. ~hchen$ sudo dmsetup create mysnap2 \ 
  3.                    --table "0 2097152 thin /dev/mapper/hchen-thin-pool 2" 
  4.   
  5. ~hchen$ sudo ll /dev/mapper/mysnap2 
  6. lrwxrwxrwx. 1 root root 7 Aug 25 23:52 /dev/mapper/mysnap1 -> ../dm-7 
  7.   
  8. ~hchen$ sudo mkdir -p /mnt/mysnap2 
  9. ~hchen$ sudo mount /dev/mapper/mysnap2 /mnt/mysnap2 
  10. ~hchen$ sudo  ls /mnt/mysnap2 
  11. id.txt  lost+found  snap1.txt 

好了,我相信你看到了分層鏡像的樣子了。

看完演示,我們再來補點理論知識吧:

  • Snapshot來自LVM(Logic Volumn Manager),它可以在不中斷服務的情況下為某個device打一個快照。
  • Snapshot是Copy-On-Write的,也就是說,只有發(fā)生了修改,才會對對應的內(nèi)存進行拷貝。

另外,這里有篇文章Storage thin provisioning benefits and challenges可以前往一讀。

#p#

Docker的DeviceMapper

上面基本上就是Docker的玩法了,我們可以看一下docker的loopback設備:

  1. ~hchen $ sudo losetup -a 
  2. /dev/loop0: [64768]:38050288 (/var/lib/docker/devicemapper/devicemapper/data) 
  3. /dev/loop1: [64768]:38050289 (/var/lib/docker/devicemapper/devicemapper/metadata) 

其中data 100GB,metadata 2.0GB

  1. ~hchen $ sudo ls -alhs /var/lib/docker/devicemapper/devicemapper 
  2. 506M -rw-------. 1 root root 100G Sep 10 20:15 data 
  3. 1.1M -rw-------. 1 root root 2.0G Sep 10 20:15 metadata 

下面是相關的thin-pool。其中,有個當一大串hash串的device是正在啟動的容器:

  1. ~hchen $ sudo ll /dev/mapper/dock* 
  2. lrwxrwxrwx. 1 root root 7 Aug 25 07:57 /dev/mapper/docker-253:0-104108535-pool -> ../dm-2 
  3. lrwxrwxrwx. 1 root root 7 Aug 25 11:13 /dev/mapper/docker-253:0-104108535-deefcd630a60aa5ad3e69249f58a68e717324be4258296653406ff062f605edf -> ../dm-3 

我們可以看一下它的device id(Docker都把它們記下來了):

  1. ~hchen $ sudo cat /var/lib/docker/devicemapper/metadata/deefcd630a60aa5ad3e69249f58a68e717324be4258296653406ff062f605edf 
  2. {"device_id":24,"size":10737418240,"transaction_id":26,"initialized":false

device_id是24,size是10737418240,除以512,就是20971520 個 sector,我們用這些信息來做個snapshot看看(注:我用了一個比較大的dev id – 1024):

  1. ~hchen$ sudo dmsetup message "/dev/mapper/docker-253:0-104108535-pool" 0 \ 
  2.                                     "create_snap 1024 24" 
  3. ~hchen$ sudo dmsetup create dockersnap --table \ 
  4.                     "0 20971520 thin /dev/mapper/docker-253:0-104108535-pool 1024" 
  5. ~hchen$ sudo mkdir /mnt/docker 
  6. ~hchen$ sudo mount /dev/mapper/dockersnap /mnt/docker/ 
  7. ~hchen$ sudo ls /mnt/docker/ 
  8. id lost+found rootfs 
  9. ~hchen$ sudo ls /mnt/docker/rootfs/ 
  10. bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var 

我們在docker的容器里用findmnt命令也可以看到相關的mount的情況(因為太長,下面只是摘要):

  1. # findmnt 
  2. TARGET                SOURCE                
  3. /                 /dev/mapper/docker-253:0-104108535-deefcd630a60[/rootfs] 
  4. /etc/resolv.conf  /dev/mapper/centos-root[/var/lib/docker/containers/deefcd630a60/resolv.conf] 
  5. /etc/hostname     /dev/mapper/centos-root[/var/lib/docker/containers/deefcd630a60/hostname] 
  6. /etc/hosts        /dev/mapper/centos-root[/var/lib/docker/containers/deefcd630a60/hosts] 

Device Mapper 行不行?

Thin Provisioning的文檔中說,這還處理實驗階段,不要上Production.

"These targets are very much still in the EXPERIMENTAL state. Please do not yet rely on them in production."

另外,Jeff Atwood在Twitter上發(fā)過這樣的一推

 

Jeff.Atwood.DeviceMapper

這個推指向的這個討論中,其中指向了這個code diff,基本上就是說,DeviceMapper這種東西問題太多了,我們應該把其加入黑名單。Doker的Founder也這樣回復到:

 

所以,如果你在使用loopback的devicemapper的話,當你的存儲出現(xiàn)了問題后,正確的解決方案是:

rm -rf /var/lib/docker

原文鏈接:http://coolshell.cn/articles/17200.html

責任編輯:Ophira 來源: coolshell
相關推薦

2017-03-21 10:02:12

Docker鏡像分層

2022-05-05 09:14:41

AlpineDocker鏡像開發(fā)

2022-09-26 11:32:14

用戶分層服務業(yè)務

2021-03-18 12:16:44

用戶分層業(yè)務

2018-01-12 16:41:50

技術人轉行管理

2015-07-30 11:21:16

代碼審查

2022-05-09 09:07:47

JavaScript框架開發(fā)

2013-12-02 11:11:04

騰訊微信

2017-11-02 08:54:13

數(shù)據(jù)存儲架構

2014-04-15 13:16:00

Code Review

2013-11-29 10:15:48

國產(chǎn)虛擬化

2023-06-25 12:42:00

2022-08-30 19:11:12

Docker虛擬化技術

2021-03-11 17:36:51

架構分模塊分層

2021-03-06 16:16:15

分模塊分層

2013-07-30 17:16:00

產(chǎn)品經(jīng)理

2020-04-01 11:01:57

工程師技術裁員

2023-11-03 09:05:53

2013-01-17 16:30:33

褚霸技術
點贊
收藏

51CTO技術棧公眾號

国产精品欧美激情在线播放| 欧美日韩精品一区二区三区 | 在线丨暗呦小u女国产精品| 国产xxxxx视频| 欧美偷拍视频| 精品一区二区三区的国产在线播放| 久久中国妇女中文字幕| 影音先锋黄色资源| 精品国产美女a久久9999| 一区二区欧美在线观看| 欧美日韩一区二| 999久久久久| 欧美一级专区| 欧美噜噜久久久xxx| 亚洲精品乱码久久久久久久久久久久| 亚洲精品一区二区在线播放∴| 午夜在线成人av| 中文字幕日韩一区二区三区| 手机看片福利永久| 国产揄拍国内精品对白| 日本久久亚洲电影| 久久久国产成人| 欧美色就是色| 亚洲精品大尺度| 午夜影院免费版| 成人在线中文| 欧美特级www| 欧美老肥妇做.爰bbww| 亚洲一区二区久久久久久久| 日本一区二区免费电影| 午夜久久福利| 日韩性xxxx爱| av在线网站观看| 6080亚洲理论片在线观看| 欧洲激情一区二区| 蜜臀久久99精品久久久酒店新书| 欧美xxx黑人xxx水蜜桃| 亚洲欧洲国产专区| 日韩欧美电影一区二区| 亚洲色图21p| 国产69精品一区二区亚洲孕妇| 国产区精品视频| 国产成人无码专区| 麻豆精品网站| 日产日韩在线亚洲欧美| 国产系列精品av| 欧美精品首页| 欧美成人午夜激情在线| 亚洲天堂网av在线| 91精品国产福利在线观看麻豆| 一区二区在线免费视频| 丰腴饱满的极品熟妇| 欧美亚洲大陆| 亚洲精品白浆高清久久久久久| 国产精品偷伦视频免费观看了| 日韩精品第二页| 欧美人与性动xxxx| 亚洲一二三不卡| 国产不卡精品在线| 日韩免费性生活视频播放| 男人女人拔萝卜视频| 欧洲一区在线| 亚洲第一免费网站| japanese在线观看| 亚洲成a人片77777在线播放| 日韩av在线网站| 精品无码在线视频| 国产日产精品一区二区三区四区的观看方式 | 91视视频在线观看入口直接观看www| 99热在线国产| 俄罗斯嫩小性bbwbbw| 成人在线视频一区二区| 高清免费日韩| 午夜黄色小视频| 久久精品夜夜夜夜久久| 亚洲第一在线综合在线| 黄色在线播放网站| 亚洲一区在线观看免费观看电影高清| 久久av综合网| 中文字幕高清在线播放| 欧美中文字幕一区二区三区亚洲| 日韩一区二区三区久久| 国产专区精品| 亚洲国产精品va在线看黑人| 最近中文字幕无免费| 欧美一级精品| 久久av.com| 亚洲黄色一区二区| 日韩精品1区2区3区| 91久久久久久久久久久| 国产成人三级在线观看视频| 成人av动漫在线观看| 成人午夜碰碰视频| 激情伦成人综合小说| 搞黄视频在线观看| 亚洲欧洲综合另类在线| 日韩免费视频播放| 日本国产一区| 亚洲精品一区在线观看| 久久中文字幕精品| 欧美日韩视频| 国产精品扒开腿做| 二区三区在线视频| 国产精品女同互慰在线看 | 亚洲小说欧美另类婷婷| 国产91在线视频| aaaa一级片| 久久久亚洲综合| 成人毛片100部免费看| 日本久久免费| 精品福利一区二区三区免费视频| 日本少妇xxxxx| 亚洲无线一线二线三线区别av| 国产精品高清免费在线观看| 国模人体一区二区| 中文字幕一区免费在线观看| 亚洲 高清 成人 动漫| 9999在线精品视频| 中国成人一区| 日韩精品欧美激情| 91视频综合网| 免费亚洲电影在线| 欧美动漫一区二区| 丁香花电影在线观看完整版| 欧美久久久久中文字幕| 成年人免费观看视频网站| 国产精品vip| 成人网在线观看| 国产一级网站视频在线| 婷婷六月综合亚洲| 男人操女人下面视频| 日韩欧美国产精品综合嫩v| 欧美一区二三区| 国产综合视频在线| 一区二区三区日韩精品| 亚洲va在线va天堂va偷拍| 国产精品视频一区二区三区四蜜臂| 久久久久久亚洲精品中文字幕 | 日韩专区中文字幕一区二区| 国产精品国产精品国产专区蜜臀ah| 自拍视频在线播放| 欧美亚洲免费在线一区| 波多野结衣一本| 99精品久久| 国产精品乱码视频| 看片网址国产福利av中文字幕| 超碰激情在线| 欧美男男青年gay1069videost| 99久久久无码国产精品衣服| 日韩和欧美一区二区| 欧美福利一区二区三区| 综合日韩av| 日韩久久精品电影| 国产小视频在线免费观看| 成人97人人超碰人人99| av免费观看大全| 欧美人妖视频| 欧美亚洲视频在线观看| 欧美拍拍视频| 在线免费亚洲电影| 一本在线免费视频| 精品一区二区三区在线视频| 二级片在线观看| 国产一区二区三区| 色综合久久88色综合天天看泰| www久久久久久| 亚洲成人久久影院| 一区二区视频观看| 日韩1区2区日韩1区2区| 一本二本三本亚洲码| 欧洲精品99毛片免费高清观看| 欧美激情三级免费| 日本护士...精品国| 在线观看网站黄不卡| 18精品爽国产三级网站| 国产在线精品一区二区不卡了| 国产日产欧美一区二区| 成午夜精品一区二区三区软件| 久久久久久中文字幕| 你懂的视频在线| 精品视频1区2区| 欧美三级日本三级| 91看片淫黄大片一级在线观看| 激情综合网俺也去| 日韩精品电影| 动漫一区二区在线| 成人免费看视频网站| 日韩午夜在线视频| 欧美自拍偷拍一区二区| 色菇凉天天综合网| www.99re7| 久久久久久一二三区| 久久久精品高清| 日韩亚洲在线| 天堂精品视频| 国产精品久av福利在线观看| 国产精品精品久久久| 99热国产在线中文| 亚洲石原莉奈一区二区在线观看| a天堂中文在线观看| 欧美日韩在线视频观看| 欧美性x x x| 国产va在线视频| 欧美一区二区三区人| 黄网在线观看视频| 亚洲色图清纯唯美| brazzers精品成人一区| 国产麻豆一精品一av一免费| 色欲av无码一区二区人妻| 亚洲色图国产| 五月婷婷综合色| 欧美电影在线观看免费| 91日韩在线播放| 成人天堂yy6080亚洲高清| 欧美精品在线播放| 午夜视频在线免费观看| 亚洲激情视频在线播放| 99久久一区二区| 欧美羞羞免费网站| 一级黄色免费网站| 亚洲一区二区三区爽爽爽爽爽| av资源在线免费观看| 久久综合九色欧美综合狠狠| 娇妻高潮浓精白浆xxⅹ| 国产伦精品一区二区三区视频青涩| 欧美黑人又粗又大又爽免费| 亚洲精选一区| av无码久久久久久不卡网站| 99视频精品全部免费在线视频| 欧美午夜精品久久久久免费视| 动漫av一区| 3d动漫啪啪精品一区二区免费 | 亚洲一区二区中文| jvid一区二区三区| 国产精品av网站| 竹内纱里奈兽皇系列在线观看| 久久久亚洲精选| 色爱综合区网| 九九热这里只有在线精品视| 黄色片网站在线观看| 在线国产精品播放| 最近中文字幕无免费| 精品日韩在线| 日本精品一区二区三区不卡无字幕| 久久久久影视| 国产视色精品亚洲一区二区| 91综合精品国产丝袜长腿久久| 91大片在线观看| 日本免费精品| 91免费在线视频网站| 2020国产精品小视频| 国产专区欧美专区| 亚洲色图图片| 亚洲自拍小视频| 久久在线观看| av一区二区三区四区电影| 日韩精品久久久久久久软件91| 亚洲qvod图片区电影| 蜜桃精品一区二区三区| 99理论电影网| 超碰一区二区三区| 久久久久无码国产精品一区| 蜜桃tv一区二区三区| 日韩.欧美.亚洲| 日韩精品91| 三级在线免费观看| 免费污污视频在线观看| 色狠狠一区二区| 亚洲系列在线观看| 欧美一区二区三级| 五月婷婷六月丁香| 亚洲视频一区二区| 免费av在线网站| 欧美国产日韩二区| 无码小电影在线观看网站免费| 日本不卡免费高清视频| 欧美黄色网络| 99视频免费观看| 亚洲国产合集| 一区二区免费在线观看| 欧美精品97| 99色精品视频| 精品影院一区二区久久久| 国产男女无遮挡猛进猛出| av电影在线观看一区| 少妇视频在线播放| 依依成人精品视频| av一级在线观看| 6080国产精品一区二区| 免费国产精品视频| 中文字幕日韩av电影| 日本动漫同人动漫在线观看| 欧美一级淫片aaaaaaa视频| 国产成人亚洲一区二区三区| 99九九电视剧免费观看| 免费久久精品| 久久久久福利视频| 日精品一区二区| 日本三级日本三级日本三级极| 国产欧美日韩三区| 国产在线视频99| 欧美日韩视频专区在线播放| 日韩永久免费视频| 久久精品男人天堂| 91精品论坛| 成人综合色站| 国产精品久久久久久久久久10秀 | 国产91在线播放九色| 五月综合激情婷婷六月色窝| 在线免费看毛片| 亚洲女人被黑人巨大进入| av黄在线观看| 国产精品视频导航| 亚洲免费成人av在线| 人人妻人人澡人人爽欧美一区双 | 日本女人性视频| 欧美国产精品久久| 台湾佬中文在线| 欧美tk丨vk视频| 成a人片在线观看| 国产精品久久精品| 亚洲最大在线| 蜜桃传媒一区二区三区| 国产**成人网毛片九色| 三级在线观看免费大全| 欧美三区免费完整视频在线观看| 五月天激情婷婷| 久久久久久久久久久免费| 外国成人毛片| 亚洲日本欧美在线| 日韩专区一卡二卡| 亚洲人成人无码网www国产| 午夜伦理一区二区| 欧美一级在线免费观看| 欧美国产日韩一区| 秋霞影院一区| 欧美一级特黄aaaaaa在线看片| 青草av.久久免费一区| 国产三级av在线播放| 色婷婷综合五月| 三级在线电影| 欧美在线一级视频| 中文字幕精品影院| 成人在线观看黄| 久久久久久一级片| 国产女主播喷水视频在线观看| 国产丝袜一区视频在线观看| 午夜欧美激情| 欧美人xxxxx| 丝袜诱惑制服诱惑色一区在线观看 | 亚洲国产一区二区久久| 中文字幕乱码一区二区三区| 美女免费视频一区| 久久久精品少妇| 欧美一区二区三区日韩视频| 97caopor国产在线视频| 91在线看网站| 精品1区2区3区4区| 青青草视频网站| 色天天综合久久久久综合片| 韩国中文免费在线视频| 国产精品人人做人人爽| japanese国产精品| 黄色小视频免费网站| 亚洲免费观看高清完整版在线| 精品久久久久成人码免费动漫| 欧美另类交人妖| 林ゆな中文字幕一区二区| 91九色在线观看视频| 国产欧美一区二区在线| 91亚洲精品国偷拍自产在线观看| 久久视频在线免费观看| 在线精品视频一区| 黄色一级片播放| 国产女人18水真多18精品一级做| 亚洲国产欧美日韩| 乱亲女h秽乱长久久久| 国产91在线视频观看| 亚洲国产激情av| 国产熟女一区二区三区四区| 久久乐国产精品| 国产剧情在线观看一区| 伊人成人222| 亚洲国产va精品久久久不卡综合| 天堂在线免费av| 国产精品一区专区欧美日韩| 亚洲区综合中文字幕日日| 免费的av网站| 欧美日韩免费一区二区三区视频| h视频在线免费观看| 久久99精品久久久久久青青日本 | 日韩精品一卡| 极品白嫩的小少妇| 色欧美88888久久久久久影院| 麻豆网站在线免费观看| 九九九九九精品| 国内欧美视频一区二区| www欧美在线| 久久国产精品久久久久久| 日韩在线影视|