成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊聊存儲系統的硬件層

存儲 存儲軟件
SSD是近些年才火起來的存儲介質。SSD一般有兩種,一種利用Flash閃存為芯片,另一種直接用內存(DRAM)作為存儲介質,只是在里面加了個電池,在斷電以后還能繼續用電池來維持數據。

[[317465]]

簡介

在工程架構領域里,存儲是一個非常重要的方向,這個方向從底至上,我分成了如下幾個層次來介紹:

硬件層:講解磁盤,SSD,SAS, NAS, RAID等硬件層的基本原理,以及其為操作系統提供的存儲界面;

操作系統層:即文件系統,操作系統如何將各個硬件管理并對上提供更高層次接口;

單機引擎層:常見存儲系統對應單機引擎原理大概介紹,利用文件系統接口提供更高級別的存儲系統接口;

分布式層:如何將多個單機引擎組合成一個分布式存儲系統;

查詢層:用戶典型的查詢語義表達以及解析;

主板結構

在進入對硬件層的分析前,讓我們來看看電腦主板上各個原件之間的關系。

存儲系統講解——硬件層介紹

上圖展示了主板上主要元件的結構圖,以及他們之間的總線連接情況。核心連接點是北橋和南橋兩塊芯片。

其中北橋比較吊,連接的都是些高速設備。一般來說只連接CPU,內存和顯卡幾種設備。不過近些年也出現了PCIE2.0的高速接口接入北橋,使得一些符合標準的設備就可以接入北橋。

而南橋就相對搓了,他負責接入所有低速設備。什么USB,鼠標,磁盤,聲卡等等都是接在南橋上的。而不同的設備用途和協議都有很大不同,所以設計了不同的交互協議。由于歷史原因,不同設備傳輸介質可能都不一樣,導致總線上布線十分復雜。所以到目前為止,主流設備都已經統一成為了PCI總線,大家一起用這條總線。

讀寫過程

我們來模擬一下CPU要從磁盤讀入一份數據的過程:

  • CPU發出一條指令說哥要準備讀數據了
  • 這條指令依次通過系統總線,橋間總線,PCI總線傳遞到了磁盤控制器。控制器收到指令了之后知道這是一次讀請求,且讀完了是否要發中斷的信息。做好一些準備工作,等待讀取數據。
  • CPU再發出一條指令說要讀取的邏輯地址
  • 這條指令還是通過系列總線發給磁盤控制器之后。磁盤控制器就忙活了,查找邏輯快對應的物理塊地址,查找,尋道等工作,就開始讀取數據了。
  • CPU再發出一條指令說讀入內存的地址
  • 當收到這條指令之后,CPU就不管了,他告訴一個叫DMA的總管,說接下來就靠你了。DMA設備會接管總線,負責將磁盤數據通過PCI總線,橋間總線,內存總線同步到內存指定位置。

寫操作的過程是類似的,就不累述了。

上面我們只是講解了在主板上數據流轉的過程,但是還有一個黑盒,就是磁盤控制器。這哥們到底是怎么管理的各個磁盤呢?在下一節我們將為你描述。

存儲介質原理

上面講了計算機讀取數據的過程。這一章我們來大概說一下常見的存儲介質的存儲原理。

磁帶

磁帶就跟小時候聽歌的時候的磁帶類似。一條黑色帶子上面有很多小的磁性粒子,根據粒子的南北級來判定0/1。

軟盤

軟盤比磁帶要先進一點,記錄數據的原理是一樣的,只是可以隨機讀取,而磁帶只能順序讀取。

硬盤

硬件原理

如果說前兩個都是古老的東西,技術含量一般的話。硬盤就是一個很有技術含量的存儲設備了,主要包含三大設備:

  1. 電機
  2. 電機的目的是控制磁臂精準定位到磁道,一個磁道可能很小,要精準定位到哪個地方是高科技。
  3. 盤面
  4. 盤面主要有兩點。一點是基板要足夠光滑平整,不能有任何瑕疵;一點是要將磁粉均勻的鍍到基板上。這里有兩個高科技,一個是磁粉的制造,一個是如何均勻的鍍到基板上。
  5. 磁頭
  6. 磁頭的主要難點是要控制好跟盤面的距離,跟軟盤類似,硬盤也是通過修改磁粉的南北極來記錄數據的。如果隔得太遠,就感知不到磁性數據了,隔得太近呢,又可能把盤面刮到。當然0/1的表示并不是只有一個磁粉,而是一片區域的磁粉。
  7. 現在磁盤都是利用空氣動力學,將磁頭漂浮在盤面上面一點距離來控制磁頭和盤面的距離。但是當硬盤停止工作不轉的時候,磁頭就肯定掉在盤面上了,所以一般盤面靠近圓心的地方一般都有一塊沒有磁粉的地方,用于安全停靠磁頭。當硬盤要開始工作的時候,磁頭在同心圓里面起飛,飛起來了之后再移動到其他地區。
  8. 不過我一直在想,是否可以有這樣的技術,能在磁臂上裝多個磁頭,每個磁道對應一個,停止工作的時候就把磁臂固定在某個高度讓他不挨著盤面,這樣是不是能大大提高硬盤的讀寫效率,因為這樣減少了尋道的時間。

基本概念

硬盤組成原理圖如下:

存儲系統講解——硬件層介紹

如上圖, 硬盤主要有如下幾個概念(概念比較簡單,就不解釋了):

  1. 扇區
  2. 磁道
  3. 柱面

讀寫過程

讀寫過程得分成兩頭來說,一頭說將數據從各個盤面中讀取出來;一頭說如何將數據送給計算機。

  1. 從盤面中讀取數據
  2. 我們知道再磁盤中,順序讀取會比隨機讀取快很多,那么有這么多盤面,磁道,這個順序到底是什么順序呢?
  3. 假設我們現在是再順序遍歷磁盤上的數據,那么讀取順序是這樣的。首先讀完最上面一塊盤面的最外面一個磁道,等盤面旋轉完一圈之后,即這個磁道被讀取完畢,然后立即切換到第二塊盤面,讀第二塊盤面的最外面一個磁道,以此類推,直到讀完最底下一塊盤面。然后磁臂在向內移動一個磁道,重復剛才的過程,直到讀到最里面一個磁道。
  4. 其實再讀取過程中還會更復雜一點,因為盤面是一直勻速高速旋轉的,可能在一個扇區過度到下一個扇區的時候,就那么一點時間,可能存在誤差,導致下一個扇區的數據沒讀到。為了解決這個問題,一般數據是在磁道上是間隔存儲的。假設一個數據有10個扇區,分別為,d1,d2,...,d10;為了說明這個思想,我們假設一個磁道正好也有10個扇區,分別為,s1,s2,...s10。如果是緊挨著存放的話,那么扇區和數據的對應關系為:[(s1,d1), (s2, d2), ... , (s10, d10)]。這樣就存在剛才說的有誤差。那么間隔存儲的話,映射關系為:[(s1,d1), (s3,d2), (s5,d3), ..., (s2, d10)]。
  5. 而且在切換盤面的時候,雖然是電子切換,但是速度還是會有一定延遲,下一個盤面和上一個盤面的起始點位置不能一一對應,也是會有一定錯開的。
  6. 在古老的磁盤里面,這些值可能還需要用戶來設置,不過現在都是廠商給咱們設置好,用戶不需要關心了。
  7. 由于磁臂的移動要比盤面的切換要慢很多(一個是機械切換,一個是電子切換),所以為了減少磁臂的移動,所以如上的順序讀取會是先讀一個柱面,再讀取下一個磁道,而不是先讀完一個盤面,在讀下一個盤面。
  8. 那么既然磁臂的移動如此的慢,剛才講了順序讀取的時候的磁臂移動邏輯。那么在真實情況下,有大量隨機訪問的情況下,磁臂是如何移動的呢?這里就需要考慮常見的磁臂調度算法了:
  9. RSS:隨機調度。這個就是扯蛋,只是拿來給別人做綠葉對比性能用的。
  10. FIFO:先進先出。這個對于隨機讀取來說,性能很不友好。
  11. PRI:交給用戶來管理。這個跟FIFO類似,只不過優先級是由用戶來指定的,不僅增加了用戶使用磁盤的成本,效率也不見得高。
  12. SSTF:最短時間調度。這個是指磁頭總是處理離自己這次請求最近的一次請求處理。這樣最大的問題就是會存在餓死的情況。
  13. SCAN:電梯算法。在磁盤上往復。這個是比較常見的算法,跟電梯類似,磁臂就一個磁道一個磁道的動,移動最外面或者最里面的磁道就轉向。這個算法不會餓死。
  14. C-SCAN:類似電梯算法,只是單向讀取數據。磁臂總是再內圈到外圈的時候讀取數據,當到達外圈過后迅速返回內圈,返回過程中不讀取數據,在重復之前的過程。
  15. LOOK:類似SCAN,只是會快速返回,如果前面沒有讀寫請求就立即返回。
  16. C-LOOK:類似C-SCAN和SCAN之間的關系。
  17. 一般來說,再IO比較少的情況下,SSTF性能會比較好,在IO壓力比較大的情況下,SCAN/LOOK算法會更優秀。
  18. 大家可以到這里來看看硬盤讀取數據的視頻:http://v.ku6.com/show/2gl1CHY7iNa_CVLum3NQHg.html
  19. 將數據送給計算機
  20. 剛才我們從磁盤中讀到了數據,接下來我們講解磁盤通過什么樣的接口跟計算機做交互。這個接口也叫磁盤管理協議。
  21. 磁盤管理協議的定義又分成兩部分:軟件和硬件。其中軟件是指指令級,目前指令級就兩個:ATA和SCSI;硬件代表數據傳輸方式,一般都是主板上的導線傳輸原理,但并不限制,數據甚至可以通過TCP/IP傳輸。定義一個協議需要同時定義了指令級以及硬件傳輸方式。
  22. ATA
  23. 全稱是Advanced Technology Attachment,現在看起來不咋地,不過從名字看來,當時這個東西還是很高級的。
  24. 這個指令是上個世紀80年代提出的。按照硬件接口的不同,又分成了兩類,一類是并行ATA(PATA,一類是串行ATA(SATA)。一開始流行起來的是PATA,也叫IDE。不過由于并行線抗干擾能力太差,排線占空間,不利電腦散熱。而更高級的SATA協議自從2000年被提出之后,很快PATA/IDE接口的磁盤就被歷史淘汰,目前的ATA接口的磁盤只有SATA磁盤了。
  25. SCSI
  26. 全稱是Small Computer System Interface。也是上個世紀80年代提出來的,當時設計他的目的就是為了小型服務器設計的磁盤交互接口。用該接口可以達到更大的轉速,更快的傳輸效率。但是價格也相對較高。
  27. 所以目前基本上在服務器領域SCSI磁盤會比較多,在PC機領域SATA硬盤會比較多。不過隨著SATA盤的進化以及其得天獨厚的價格優勢,在服務器領域SATA也在逐步侵蝕SCSI的市場。
  28. 不過SCSI也不會坐以待斃,他按照PATA進化成SATA的思路,自己也搞串行化,進化出來了SAS(Serial Attach SCSI)接口。這個接口目前很對市場胃口,不僅價格低廉,而且性能也還不錯。所以估計SATA淘汰PATA的一幕在不久的將來也會在SCSI領域里上演。
  29. SCSI指令還可以通過Internet傳輸(iSCSI),通過FC網絡傳輸(FC-SCSI),這些我們會再后文提及。

ssd

硬件原理

ssd是近些年才火起來的存儲介質。ssd一般有兩種,一種利用flash閃存為芯片,另一種直接用內存(DRAM)作為存儲介質,只是在里面加了個電池,在斷電以后還能繼續用電池來維持數據。

我們本文中講的ssd全部是都指代前者,即用flash閃存做存儲介質。先來看一下ssd的存儲原理。

在磁盤中0/1的表示是用的磁粉的南北極的信息,在閃存中則用的是電子信號。他利用的是一種叫浮動門場效應晶體管作為基本存儲介質。在該晶體管里面,主要是由兩個門電路構成:控制門和浮動門。在兩個門之間有一堆電子。當控制門加上一個電勢的時候,電子就往浮動門那邊跑,然后控制門斷開電勢,電子會儲存在浮動門那邊(靠中間的二氧化硅絕緣層),則代表二進制中的0;控制門加一個反向電勢的時候,電子跑回到控制門這邊,浮動門那邊沒電子,代表二進制中的1。這樣就通過檢測浮動門那邊的電勢就能得到0或者1。而且現在有的ssd制造商,根據不同的電勢,將一個晶體管表示的值從0/1拓展到0/1/2/3。這樣就使得存儲容量翻倍。這種類型的晶體管叫MLC(Multi Level Cell),相對,只表示0/1的叫SLC(Single Level Cell)。不過一般而言,MLC的出錯率也高很多,所以目前市面上主流產品還是SLC的。

了解了ssd的基本原理之后,我們來看看ssd是怎么組織這些晶體管的。看如下幾個概念:

  1. Page。一般一個Page為4K。則該Page包含4K*8個晶體管,Page是ssd讀寫的最小單元;
  2. Block。一般128個Page組成一個Block,Block的概念非常重要,讀寫數據的控制都是針對Block的,待會我們再重點講一下Block的概念;
  3. Plane。一般2048個Block組成一個Plane;
  4. 一塊芯片再包含多個Plane,多個Plane之間可以并行操作。

Block的組織,見下圖:

存儲系統講解——硬件層介紹

如圖,可以看到block中的晶體管是按照井字型組織的。一橫排就代表一個Page,所以一個Block一般就有128行,4K*8列。當然,由于還需要針對每個Page加一些糾錯數據,所以一般還會多一些列。

橫排是控制線,負責給電壓,來做充電放電的作用;豎排是讀取線,負責讀浮動門里的電勢之用。

讀寫過程

讀取的過程是這樣的:

假設要讀取第三行數據,那么會給第三行控制線的電勢置位0,其他127行控制線都會給一個電勢,這樣就能保證再豎排的讀取線上只讀到第三行的數據,而讀不到其他數據。可以看到ssd再讀取數據的時候不再需要尋道這些復雜的事情,速度會比傳統的磁盤塊很多。

而ssd寫入就比較麻煩了,因為ssd無法再一個block內對部分cell充電,對部分cell放電,這樣信號會相互干擾從而造成不可預期的情況發生。那ssd怎么處理這個問題呢,那就暴力了,把一個block的數據全部讀到ssd自帶的內存當中,并做好修改,接下來把整個block全部放電,即擦除所有數據,最后再將內存中整個block寫回。可以看到,即使是只修改一個bit的數據,也需要大動干戈,倒騰4K*128這么多數據,所以ssd寫數據的代價是很大的。但是瘦死的駱駝比馬大,比起機械硬盤,還是要快好幾個數量級的。

而且,ssd還有一個很頭疼的問題,就是隨著充放電次數的增加,中間的二氧化硅絕緣層絕緣效果會逐步降低,當降低到一定程度之后浮動門保存不住電子了的話,這個晶體管就算廢了。所以單個晶體管還有擦寫次數壽命,目前主流的晶體管這個上限大概是10萬的數量級。而MLC的更差,只有1萬次左右。

那么針對如上兩個問題,ssd目前一般都有哪些解決方案來應對呢?

  1. 為了優化寫的時候的性能,一般ssd并不在寫的時候做擦除。而是在寫數據的時候,選擇另外一塊干凈的block寫數據。對于老的block數據,會做一個標記,回頭定期做擦除工作;
  2. 對于壞掉的晶體管,可以通過額外的糾錯位來實現。根據不同的糾錯算法,可以容忍同一個Page中壞掉的位的個數也是不一樣的。如果超過上限,只能報告說不可恢復的錯誤。

常見存儲介質性能數字

最后我們來對比一下目前主流的硬盤和ssd的參數,這是筆者在工作中測試得到的數據,測試數據為各種存儲介質在4K大小下的隨機/順序 讀/寫數據,數字做了模糊化處理,保留了數量級信息,大家看個大概,心里有數即可:

  • 測試項\磁盤類型 | SATA | SAS | SSD |
  • 順序讀(MB/s) | 400 | 350 | 500 |
  • 順序寫(MB/s) | 200 | 300 | 400 |
  • 隨機讀(IOPS) | 700 | 1300 | 7w |
  • 隨機寫(IOPS) | 400 | 800 | 3w |

硬盤組合

上面一節中,我們了解了單個磁盤的存儲原理和讀寫過程。在實際生產環境中,單個磁盤能提供的容量和性能還是有限,我們就需要利用一些組合技術將多個磁盤組合起來提供更好的服務。

這一節,我們主要介紹各種磁盤組合技術。首先,我們會看一下最基本的組合技術RAID系列技術;然后,我們在看一下更大規模的集成技術SAN和NAS。

RAID

RAID技術是上個世紀80年代提出來的。

  1. RAID0:條帶化。讀寫效率都很高。但是容錯很差。
  2. RAID1:鏡像存儲。讀效率可達2倍,寫的時候差不多。容錯牛B。
  3. RAID2 & RAID3:多加一塊校驗盤。在RAID0的基礎之上多了容錯性。RAID2和RAID3的區別是使用了不同的校驗算法。而且這兩個的校驗是針對bit的,所以讀寫效率很高。
  4. RAID4 & RAID5 & RAID6:這幾個都是針對block的,所以效率比RAID2&RAID3要更差一些。RAID4是沒有交錯,有一塊盤就是校驗盤;RAID5是有交錯,每塊盤都有數據和校驗信息;RAID6是雙保險,存了兩個校驗值。

目前用得比較多的就是Raid5和Raid1。

Raid的實現方式一般有兩種:軟Raid和硬Raid。軟Raid是指操作系統通過軟件的方式,對下封裝SCSI/SATA接口的硬盤操作,對上提供虛擬硬盤的接口,中間實現Raid對應邏輯;硬Raid就是一個再普通的SCSI/SATA卡上加了一塊芯片,里面執行可以執行Raid對應的邏輯。

現在一般的Raid實現方案都是硬Raid,因為軟Raid有如下兩個確定:

  1. 占用額外的內存和CPU資源;
  2. Raid依賴操作系統,所以操作系統本身無法使用Raid,如果操作系統對應的那塊硬盤壞了,那么整個Raid就無法用了;

現在Raid卡一般都比較高級,可以針對插在上面的多塊磁盤做多重Raid。比如這三塊磁盤做Raid5,另外兩塊做Raid1。然后對操作系統提供兩塊『邏輯盤』。這里的邏輯盤對操作系統而言就是一塊磁盤,但實際底層可能是多塊磁盤。

邏輯盤不一定要占據整塊獨立的磁盤,同樣RAID的幾塊盤也可以做成多塊邏輯盤。假設有三塊磁盤做成了Raid5,假設一共有200G空間,也可以從中在劃分成兩塊,每塊100G,相當于用戶就看到了兩塊100G的磁盤。不過一般邏輯盤不會跨Raid實現。倒不是不能做,而是沒需求,而且對上層造成不一致的印象:這磁盤怎么忽快忽慢的呀。

這個邏輯盤還有一個英語名字:LUN(Logic Unit Number),現在存儲系統一般把硬件虛擬出來的盤叫『LUN』,軟件虛擬出來的盤叫『卷』。LUN這個名詞原本是SCSI協議專屬的,SCSI協議規定一條總線最多只能接16個設備(主機或者磁盤),在大型存儲系統中,可能有成千上萬個設備,肯定是不夠的,所以發明了一個新的地址標注方法,叫LUN,通過SCSI_ID+LUN_ID來尋址磁盤。后來這個概念逐步發展成為所有硬件虛擬磁盤了。

操作系統看到邏輯盤之后,一般還要再做一次封裝。邏輯盤始終都還是硬件層在做的事情,硬件層實現的特點就是效率高,但是不靈活,比如邏輯盤定好了100G就是100G,空間用光了想要調整為150G就只有干瞪眼了,實現成本很高。為了達到靈活性的目的,所以操作系統還要再做一層封裝『卷管理』。這層卷管理就是把邏輯盤在軟件層再拆分合并一下,組成新的操作系統真正看到的"磁盤"。

最后操作系統再在這些卷上面去做一些分區,并在分區上安裝操作系統等工作。

磁盤獨立鬧革命

上面都是講的單臺機器內部的磁盤組織方式,而單臺機器所提供的存儲空間是有限的,畢竟機器大小空間是有限的,只能放得下那么幾塊盤。在一般的2U的機器里面能放得下20塊盤就算是很不錯的了。在實際工業需求中,對于一些大型應用來說,肯定是遠遠不夠的。而工業界采用的方案就是:堆磁盤,單臺機器裝不下這么多磁盤就單獨拿一個大箱子來裝磁盤,再通過專線接到電腦接口上。

當然,在近些年又發展起來了一塊新的技術領域大數據存儲的市場——分布式存儲。分布式存儲價格便宜,但是性能較低,占據了不少不需要太高性能和查詢語義不復雜的市場。分布式存儲我們后面再談,現在先看看堆磁盤這條路。

當磁盤多了之后,人們發現,磁盤容量是上去了,但是傳輸速度還是上不去。默認SCSI的導線傳輸機制有如下幾個限制:

  1. 規定最多只能接16個設備,也就是說一個存儲設備最多只能有15臺機器來訪問;
  2. SCSI導線最長不能超過25米,這對機房布線來說造成了很大的挑戰;

于是SCSI在一些企業級應用市場開始遭到嫌棄,于是人們就尋求別的硬件解決方案,人們找到了:FC網絡。

FC網絡是上個世紀80年代研究網絡的一幫人搞出來的網絡交互方式,跟以太網是同類產品,有自己完整的一套OSI協議體系(從物理鏈路層到傳輸層以及應用層)。他就是以太網的高富帥版本,價格更貴,性能更高。而當時FC網絡也主要是為了高速骨干網設計的,人家都沒想到這東西還在存儲系統領域里面大放異彩。

這里提一下,FC中的F是Fibre,而不是Fiber。前者是網絡的意思,而不是光線。雖然一般FC網絡都采用光纖作為傳輸介質,但是其主要定義并不只是光纖,而是一整套網絡協議。

但是不管怎么樣,FC網絡的引入,完美解決了SCSI導線的問題:

  • FC網絡就跟以太網類似,有自己的交換機,網絡連接方式和路由算法,可以隨便連接多少個設備;
  • 光纖傳輸最大甚至可以有上百公里,也就是說主機在北京,存儲可以在青島;
  • 傳輸帶寬更大;

并且只是替換了硬件層的東西,指令集仍然是SCSI,所以對于上層來說遷移成本很低,所以在企業級應用里得到了廣泛使用。

就目前主流的存儲協議:短距離(機內為主)使用SAS,長距離使用FC。

經過如上的系列技術發展,大規模存儲系統的技術方案也就逐漸成熟了,于是市面上就逐步出現了商業化的產品,其實就是一個帶得有一堆磁盤的盒子,這個盒子我們把它叫做SAN(Storage Area Network)。

說到SAN,就必須要提另外一個概念:NAS(Network Attach Storage)。因為字母都一樣只是換了個順序,所以比較容易混淆。NAS其實就是SAN+文件系統。SAN提供的還是磁盤管理協議級的接口(ATA/SCSI);NAS直接提供一個文件系統接口(ext/NTFS)。但是一般來說,SAN都是以FC網絡(光纖高速網狀網絡)提供給主機的,所以性能高;而NAS一般都是通過以太網接入存儲系統的,所以性能低。

另外,經常跟SAN和NAS一起的還有另外一個概念,DAS(Direct Attached Storage)。這個跟SAN類似,只是DAS只能被一臺機器使用,而SAN提供了多個接口可以供多個用戶使用。

 

責任編輯:武曉燕 來源: 博客園
相關推薦

2024-01-15 16:51:03

Redis數據存儲

2022-03-03 09:51:11

RedisCouchbase數據存儲

2018-09-29 14:08:04

存儲系統分布式

2018-01-31 08:44:20

數據存儲存儲設備存儲系統

2018-01-19 08:35:47

存儲系統SAS

2017-07-04 10:58:57

SAN存儲網絡存儲系統架構

2017-11-08 11:22:46

存儲趨勢系統

2017-07-10 09:02:24

NAS存儲云存儲

2018-05-31 08:39:18

單機存儲系統

2013-10-12 16:38:38

存儲虛擬化

2018-01-19 08:54:18

存儲系統SILT

2021-06-18 06:00:31

存儲系統

2017-04-14 09:48:25

分布式存儲系統

2018-01-22 09:08:14

存儲系統性能帶寬

2012-09-04 13:58:50

存儲海量存儲華為

2011-09-23 09:29:29

Hotmail

2018-07-31 11:02:21

存儲系統算法

2024-07-05 11:05:47

2025-01-17 08:17:55

2017-10-12 09:36:54

分布式存儲系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产情侣一区 | 99精品国产在热久久 | 国产片侵犯亲女视频播放 | av在线一区二区三区 | 成人aaa视频 | 欧美在线国产精品 | 伊人网站视频 | www国产成人免费观看视频,深夜成人网 | 亚洲国产精品久久久久秋霞不卡 | 91精品国产色综合久久不卡98口 | 色偷偷人人澡人人爽人人模 | 久久久精品一区 | 天天干天天插 | 999免费视频 | 日本亚洲精品成人欧美一区 | 成人免费视频在线观看 | 欧美久久一区 | 羞羞色视频| 日韩一区二区三区视频 | 国产精品高潮呻吟久久久久 | 青娱乐一区二区 | 日日干干 | www.国产.com| 久久综合成人精品亚洲另类欧美 | 亚洲国产成人久久综合一区,久久久国产99 | 黄色毛片免费看 | 91精品国产高清一区二区三区 | 欧美日批| 美女一级毛片 | 亚洲综合色站 | 中文字幕精品视频 | 国产精品一二区 | 欧美三级不卡 | 91精品国产91久久综合桃花 | 日韩网站在线 | 成人精品一区二区三区中文字幕 | 亚洲www啪成人一区二区麻豆 | 久久久久99| 亚洲精品国产电影 | 欧美性大战久久久久久久蜜臀 | 五月天婷婷久久 |