亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > CentOS > 正文

CentOS 7下systemd管理的詳解

2020-07-08 12:43:09
字體:
來源:轉載
供稿:網友

CentOS系統啟動流程:

POST --> Boot Sequence --> Bootloader --> kernel + initramfs(initrd) --> rootfs --> /sbin/init

innit程序:

CentOS 5:SysV init

CetnOS 6:  Upstart

CentOS 7 : Systemd

Systemd新特性:

系統Sys V init和LSB init scripts兼容

系統引導時實現服務并行啟動;采用socket / D-Bus activation等技術啟動服務;為了減少系統啟動時間,systemd的目標是:盡可能啟動更少的進程;盡可能將更多的進程并行啟動;

按需激活進程;Systemd可以提供按需啟動的能力,只有在某個服務被真正請求的時候才啟動它。當該服務結束,systemd可以關閉它,等待下次需要時再次啟動它。

能夠對系統進行快照和恢復;

啟動掛載點和自動掛載點的管理:

Systemd自助管理系統上的掛載點,以便能夠在系統啟動時自動掛載它們。且兼容/etc/fstab文件;

實現事務依賴關系管理:

systemd 維護一個"事務一致性"的概念,保證所有相關的服務都可以正常啟動而不會出現互相依賴,以至于死鎖的情況。

基于內生依賴關系定義服務控制邏輯;

system利用Linux內核的特性即CGroup來完成進程跟蹤的任務。當停止服務時,通過查詢CGroup,systemd可以確保找到所有的相關進程,從而干凈地停止服務;

日志服務:systemd自帶日志服務journald,該日志服務的設計初衷是克服現有的syslog服務的缺點。

System的基本概念

單元的概念:

系統初始化需要做的事情非常多。需要啟動后臺服務,比如啟動 SSHD 服務;需要做配置工作,比如掛載文件系統。這個過程中的每一步都被 systemd 抽象為一個配置單元,即 unit??梢哉J為一個服務是一個配置單元;一個掛載點是一個配置單元;一個交換分區的配置是一個配置單元;等等。systemd 將配置單元歸納為以下一些不同的類型。然而,systemd 正在快速發展,新功能不斷增加。所以配置單元類型可能在不久的將來繼續增加。

service:代表一個后臺服務進程,比如mysqld。這是常用的一類;

socket:此類配置單元封裝系統和互聯網中的一個套接字。當下,systemd支持流式、數據包和連續包的AF_INET、AF_INET6、AF_UNIX socket。每一個套接字配置單元都有一個相應的服務配置單元 。相應的服務在第一個"連接"進入套接字時就會啟動(例如:nscd.socket 在有新連接后便啟動 nscd.service)。

device :此類配置單元封裝一個存在于 Linux 設備樹中的設備。每一個使用 udev 規則標記的設備都將會在 systemd 中作為一個設備配置單元出現。

mount :此類配置單元封裝文件系統結構層次中的一個掛載點。Systemd 將對這個掛載點進行監控和管理。比如可以在啟動時自動將其掛載;可以在某些條件下自動卸載。Systemd 會將/etc/fstab 中的條目都轉換為掛載點,并在開機時處理。

automount :此類配置單元封裝系統結構層次中的一個自掛載點。每一個自掛載配置單元對應一個掛載配置單元 ,當該自動掛載點被訪問時,systemd 執行掛載點中定義的掛載行為。

swap: 和掛載配置單元類似,交換配置單元用來管理交換分區。用戶可以用交換配置單元來定義系統中的交換分區,可以讓這些交換分區在啟動時被激活。

target :此類配置單元為其他配置單元進行邏輯分組。它們本身實際上并不做什么,只是引用其他配置單元而已。這樣便可以對配置單元做一個統一的控制。這樣就可以實現大家都已經非常熟悉的運行級別概念。比如想讓系統進入圖形化模式,需要運行許多服務和配置命令,這些操作都由一個個的配置單元表示,將所有這些配置單元組合為一個目標(target),就表示需要將這些配置單元全部執行一遍以便進入目標所代表的系統運行狀態。 (例如:multi-user.target 相當于在傳統使用 SysV 的系統中運行級別 3)

timer:定時器配置單元用來定時觸發用戶定義的操作,這類配置單元取代了 atd、crond 等傳統的定時服務。

snapshot :與 target 配置單元相似,快照是一組配置單元。它保存了系統當前的運行狀態。

依賴關系:

雖然 systemd 將大量的啟動工作解除了依賴,使得它們可以并發啟動。但還是存在有些任務,它們之間存在天生的依賴,不能用"套接字激活"(socket activation)、D-Bus activation 和 autofs 三大方法來解除依賴(三大方法詳情見后續描述)。比如:掛載必須等待掛載點在文件系統中被創建;掛載也必須等待相應的物理設備就緒。為了解決這類依賴問題,systemd 的配置單元之間可以彼此定義依賴關系。

Systemd 用配置單元定義文件中的關鍵字來描述配置單元之間的依賴關系。比如:unit A 依賴 unit B,可以在 unit B 的定義中用"require A"來表示。這樣 systemd 就會保證先啟動 A 再啟動 B。

Systemd事務:

Systemd 能保證事務完整性。Systemd 的事務概念和數據庫中的有所不同,主要是為了保證多個依賴的配置單元之間沒有環形引用。 存在循環依賴,那么 systemd 將無法啟動任意一個服務。此時systemd 將會嘗試解決這個問題,因為配置單元之間的依賴關系有兩種:required是強依賴;want 則是弱依賴,systemd 將去掉 wants 關鍵字指定的依賴看看是否能打破循環。如果無法修復,systemd會報錯。

Systemd 能夠自動檢測和修復這類配置錯誤,極大地減輕了管理員的排錯負擔。

Target和運行級別:

systemd 用目標(target)替代了運行級別的概念,提供了更大的靈活性,如您可以繼承一個已有的目標,并添加其它服務,來創建自己的目標。下表列舉了 systemd 下的目標和常見 runlevel 的對應關系:

Systemd 的并發啟動原理

如前所述,在 Systemd 中,所有的服務都并發啟動,比如Avahi、D-Bus、livirtd、X11、HAL 可以同時啟動。乍一看,這似乎有點兒問題,比如 Avahi 需要syslog 的服務,Avahi 和syslog 同時啟動,假設 Avahi 的啟動比較快,所以syslog 還沒有準備好,可是 Avahi 又需要記錄日志,這豈不是會出現問題?

Systemd 的開發人員仔細研究了服務之間相互依賴的本質問題,發現所謂依賴可以分為三個具體的類型,而每一個類型實際上都可以通過相應的技術解除依賴關系。

并發啟動原理之一:解決 socket 依賴

絕大多數的服務依賴是套接字依賴。比如服務A 通過一個套接字端口S1 提供自己的服務,其他的服務如果需要服務A,則需要連接S1。因此如果服務A 尚未啟動,S1就不存在,其他的服務就會得到啟動錯誤。所以傳統地,人們需要先啟動服務A,等待它進入就緒狀態,再啟動其他需要它的服務。Systemd認為,只要我們預先把S1 建立好,那么其他所有的服務就可以同時啟動而無需等待服務A 來創建S1 了。如果服務A 尚未啟動,那么其他進程向S1 發送的服務請求實際上會被Linux 操作系統緩存,其他進程會在這個請求的地方等待。一旦服務A 啟動就緒,就可以立即處理緩存的請求,一切都開始正常運行。

那么服務如何使用由 init 進程創建的套接字呢?

Linux 操作系統有一個特性,當進程調用fork 或者exec 創建子進程之后,所有在父進程中被打開的文件句柄(file descriptor) 都被子進程所繼承。套接字也是一種文件句柄,進程A 可以創建一個套接字,此后當進程A 調用 exec啟動一個新的子進程時,只要確保該套接字的close_on_exec 標志位被清空,那么新的子進程就可以繼承這個套接字。子進程看到的套接字和父進程創建的套接字是同一個系統套接字,就仿佛這個套接字是子進程自己創建的一樣,沒有任何區別。

這個特性以前被一個叫做 inetd 的系統服務所利用。Inetd 進程會負責監控一些常用套接字端口,比如Telnet,當該端口有連接請求時,inetd才啟動 telnetd 進程,并把有連接的套接字傳遞給新的telnetd 進程進行處理。這樣,當系統沒有telnet 客戶端連接時,就不需要啟動telnetd 進程。Inetd可以代理很多的網絡服務,這樣就可以節約很多的系統負載和內存資源,只有當有真正的連接請求時才啟動相應服務,并把套接字傳遞給相應的服務進程。

和 inetd 類似,systemd 是所有其他進程的父進程,它可以先建立所有需要的套接字,然后在調用exec 的時候將該套接字傳遞給新的服務進程,而新進程直接使用該套接字進行服務即可。

并發啟動原理之二:解決 D-Bus 依賴

D-Bus 是 desktop-bus 的簡稱,是一個低延遲、低開銷、高可用性的進程間通信機制。它越來越多地用于應用程序之間通信,也用于應用程序和操作系統內核之間的通信。很多現代的服務進程都使用D-Bus取代套接字作為進程間通信機制,對外提供服務。比如簡化Linux 網絡配置的NetworkManager 服務就使用D-Bus 和其他的應用程序或者服務進行交互:郵件客戶端軟件evolution 可以通過D-Bus 從NetworkManager 服務獲取網絡狀態的改變,以便做出相應的處理。

D-Bus 支持所謂"busactivation"功能。如果服務A 需要使用服務 B 的 D-Bus 服務,而服務 B 并沒有運行,則 D-Bus 可以在服務 A 請求服務 B 的 D-Bus 時自動啟動服務 B。而服務 A 發出的請求會被 D-Bus 緩存,服務 A 會等待服務 B 啟動就緒。利用這個特性,依賴D-Bus 的服務就可以實現并行啟動。

并發啟動原理之三:解決文件系統依賴

系統啟動過程中,文件系統相關的活動是最耗時的,比如掛載文件系統,對文件系統進行磁盤檢查(fsck),磁盤配額檢查等都是非常耗時的操作。在等待這些工作完成的同時,系統處于空閑狀態。那些想使用文件系統的服務似乎必須等待文件系統初始化完成才可以啟動。但是systemd 發現這種依賴也是可以避免的。

Systemd 參考了 autofs 的設計思路,使得依賴文件系統的服務和文件系統本身初始化兩者可以并發工作。autofs可以監測到某個文件系統掛載點真正被訪問到的時候才觸發掛載操作,這是通過內核automounter 模塊的支持而實現的。比如一個open()系統調用作用在"/misc/cd/file1"的時候,/misc/cd 尚未執行掛載操作,此時 open()調用被掛起等待,Linux 內核通知 autofs,autofs 執行掛載。這時候,控制權返回給open()系統調用,并正常打開文件。

Systemd 集成了 autofs 的實現,對于系統中的掛載點,比如/home,當系統啟動的時候,systemd 為其創建一個臨時的自動掛載點。在這個時刻/home真正的掛載設備尚未啟動好,真正的掛載操作還沒有執行,文件系統檢測也還沒有完成。可是那些依賴該目錄的進程已經可以并發啟動,他們的open()操作被內建在systemd 中的autofs 捕獲,將該open()調用掛起(可中斷睡眠狀態)。然后等待真正的掛載操作完成,文件系統檢測也完成后,systemd將該自動掛載點替換為真正的掛載點,并讓open()調用返回。由此,實現了那些依賴于文件系統的服務和文件系統本身同時并發啟動。

當然對于"/"根目錄的依賴實際上一定還是要串行執行,因為systemd 自己也存放在/之下,必須等待系統根目錄掛載檢查好。

不過對于類似/home 等掛載點,這種并發可以提高系統的啟動速度,尤其是當/home是遠程的 NFS 節點,或者是加密盤等,需要耗費較長的時間才可以準備就緒的情況下,因為并發啟動,這段時間內,系統并不是完全無事可做,而是可以利用這段空余時間做更多的啟動進程的事情,總的來說就縮短了系統啟動時間。

Systemd 的使用

下面針對技術人員的不同角色來簡單地介紹一下 systemd 的使用。本文只打算給出簡單的描述,讓您對 systemd 的使用有一個大概的理解。具體的細節內容太多,即無法在一篇短文內寫全。還需要讀者自己去進一步查閱 systemd的文檔。

Unit 文件的編寫

開發人員開發了一個新的服務程序,比如httpd,就需要為其編寫一個配置單元文件以便該服務可以被systemd 管理,類似UpStart 的工作配置文件。在該文件中定義服務啟動的命令行語法,以及和其他服務的依賴關系等。

此外我們之前已經了解到,systemd 的功能繁多,不僅用來管理服務,還可以管理掛載點,定義定時任務等。這些工作都是由編輯相應的配置單元文件完成的。我在這里給出幾個配置單元文件的例子。

下面是 SSH 服務的配置單元文件,服務配置單元文件以.service為文件名后綴。

[root@kalaguiyin system]# cat/usr/lib/systemd/system/sshd.service 

[Unit]

Description=OpenSSH server daemon

After=network.target sshd-keygen.service

Wants=sshd-keygen.service

#[unit]部分,描述信息

[Service]

EnvironmentFile=/etc/sysconfig/sshd

ExecStart=/usr/sbin/sshd -D $OPTIONS

ExecReload=/bin/kill -HUP $MAINPID

KillMode=process

Restart=on-failure

RestartSec=42s

#[service]定義,ExecStartPre定義啟動服務之前應該運行的命令;

#ExecStart 定義啟動服務的具體命令行語法。

[Install]

WantedBy=multi-user.target

#[install]部分:WangtedBy表明這個服務是在多用戶模式下所需要的。

那我們就來看下multi-user.target 吧:

[root@kalaguiyin system]# catmulti-user.target

[Unit]

Description=Multi-User System

Documentation=man:systemd.special(7)

Requires=basic.target

Conflicts=rescue.service rescue.target

After=basic.target rescue.servicerescue.target

AllowIsolate=yes

# Requires 定義表明 multi-user.target 啟動的時候 basic.target 也必須被啟動;另外 basic.target 停止的時# 候,multi-user.target 也必須停止。如果您接著查看 basic.target 文件,會發現它又指定了 sysinit.target 

# 其他的單元必須隨之啟動。同樣 sysinit.target 也會包含其他的單元。采用這樣的層層鏈接的結構,最終所# 有需要支持多用戶模式的組件服務都會被初始化啟動好。

[Install]

Alias=default.target

#  Alias 定義,即定義本單元的別名,這樣在運行 systemctl 的時候就可以使用這個別名來引用本單元。

此外在/etc/systemd/system 目錄下還可以看到諸如*.wants 的目錄,放在該目錄下的配置單元文件等同于在[Unit]小節中的 wants 關鍵字,即本單元啟動時,還需要啟動這些單元。比如您可以簡單地把您自己寫的 foo.service 文件放入 multi-user.target.wants 目錄下,這樣每次都會被默認啟動了。

[root@kalaguiyin system]# pwd

/etc/systemd/system

[root@kalaguiyin system]# ls

basic.target.wants                          display-manager.service

bluetooth.target.wants                       getty.target.wants

dbus-org.bluez.service                       graphical.target.wants

printer.target.wants                                             sockets.target.wants

spice-vdagentd.target.wants                                            default.target    sysinit.target.wants                                              default.target.wants

再讓我們來看看sys-kernel-debug.mout文件,這個文件定義了一個文件掛載點:

[root@kalaguiyin system]# cat

sys-kernel-debug.mount

[Unit]

Description=Debug File System

Documentation=https://www.kernel.org/doc/Documentation/filesystems/debugfs.txt

Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems

DefaultDependencies=no

ConditionPathExists=/sys/kernel/debug

Before=sysinit.target

[Mount]

What=debugfs

Where=/sys/kernel/debug

Type=debugfs

這個配置單元文件定義了一個掛載點。掛載配置單元文件有一個[Mount]配置小節,里面配置了 What,Where 和Type 三個數據項。這都是掛載命令所必須的,例子中的配置等同于下面這個掛載命令:

mount –t debugfs /sys/kernel/debug debugfs

Systemd系統管理:

systemd 的主要命令行工具是 systemctl。

多數管理員應該都已經非常熟悉系統服務和 init 系統的管理,比如 service、chkconfig以及 telinit 命令的使用。systemd 也完成同樣的管理任務,只是命令工具systemctl 的語法有所不同而已。

啟動服務

systemctl start httpd.service 如圖1:

停止服務

systemctl stop httpd.service  如圖2:

重啟服務

systemctl restarthttpd.service  如圖3:

重載服務

systemctl reloadhttpd.service

條件式重啟

systemctl condrestarthttpd.service

狀態查看

systemctl statushttpd.service

列出可以啟動或停止的服務列表。

systemctl list-unit-files –type=service

設置服務為開機啟動

chkconfig httpd on

systemctl enablehttpd.service

取消服務開機啟動;

systemctl disablehttpd.service

檢查一個服務在當前環境下被配置為啟用還是禁用。

systemctl is-enabledhttpd.service;echo $?

輸出在各個運行級別下服務的啟用和禁用情況

systemctl list-unit-files –type=service

列出某服務在哪些運行級別下啟用和禁用。

ls /etc/lib/systemd/system/*.wants/httpd.service

改變用戶運行級別:

systemctl isolatemulti-user.target

multi-user.target   ==  第3運行級別

graphical.target    ==  第5運行級別

runlevel3.target 符號鏈接,指向multi-user.target

runlevel5.target 符號鏈接,指向graphical.target

改變默認運行級別:

[root@kalaguiyinsystem]# systemctl set-default multi-user.target 

rm'/etc/systemd/system/default.target'

ln -s'/usr/lib/systemd/system/multi-user.target''/etc/systemd/system/default.target'

上述操作的實質是刪除/usr/lib/systemd/system/default.target,然后將目標級別的target文件鏈接至/etc/systemd/system/default.target文件;

systemd 已經不僅僅是一個初始化系統了:

systemd 還負責系統其他的管理配置,比如配置網絡,Locale 管理,管理系統內核模塊加載等。

Systemd 出色地替代了sysvinit 的所有功能,但它并未就此自滿。因為init 進程是系統所有進程的父進程這樣的特殊性,systemd 非常適合提供曾經由其他服務提供的功能,比如定時任務 (以前由 crond 完成) ;會話管理 (以前由 ConsoleKit/PolKit 等管理) 。僅僅從本文皮毛一樣的介紹來看,Systemd已經管得很多了,可它還在不斷發展。它將逐漸成為一個多功能的系統環境,能夠處理非常多的系統管理任務,有人甚至將它看作一個操作系統。這非常有助于標準化 Linux 的管理!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品99久久久久久久久久久久| 日韩精品亚洲元码| 国产精品久久不能| 亚洲新中文字幕| 亚洲国产中文字幕在线观看| 亚洲成人精品视频| 国产精品欧美日韩| 日韩av电影在线播放| 精品国产乱码久久久久久天美| 久久久爽爽爽美女图片| 欧美精品成人91久久久久久久| 欧美乱大交xxxxx| 亚洲国产精品系列| 亚洲最大福利视频网站| 日韩国产中文字幕| 欧美中文字幕第一页| 精品欧美激情精品一区| 国产精品国产三级国产aⅴ浪潮| 欧美另类暴力丝袜| 全球成人中文在线| 日本一区二三区好的精华液| 日韩精品黄色网| 欧美性感美女h网站在线观看免费| 九九热最新视频//这里只有精品| 成人黄色免费看| 久久亚洲私人国产精品va| 神马久久桃色视频| 日本老师69xxx| 97香蕉久久夜色精品国产| 一本大道久久加勒比香蕉| 亚洲精品乱码久久久久久按摩观| 欧美激情一级二级| 国产亚洲精品一区二555| 亚洲视频在线观看网站| 久久人人爽人人| 尤物yw午夜国产精品视频| 国产一区二区av| 亚洲精品视频久久| 久久久最新网址| 正在播放欧美一区| 欧美亚洲成人精品| 欧美激情欧美狂野欧美精品| 国产精品一区=区| 亚洲一区二区久久久| 欧美成aaa人片在线观看蜜臀| 久久久久久久97| 国产日韩精品在线播放| 亚洲视频专区在线| 国外色69视频在线观看| 91网站在线免费观看| 91精品免费视频| 国精产品一区一区三区有限在线| 欧美日韩中文在线观看| 日本不卡免费高清视频| 日韩大陆欧美高清视频区| 欧美不卡视频一区发布| 视频在线观看一区二区| 97人洗澡人人免费公开视频碰碰碰| 亚洲人午夜精品免费| 91av在线不卡| 国产精品久久久999| 国产v综合v亚洲欧美久久| 亚洲伊人成综合成人网| 欧美激情精品久久久久久变态| 在线观看不卡av| 国产精品吴梦梦| 日韩第一页在线| 青青a在线精品免费观看| 亚洲男子天堂网| 韩国一区二区电影| 午夜精品一区二区三区在线视| xvideos成人免费中文版| 国产精品国产三级国产aⅴ浪潮| 日韩在线www| 亚洲精品电影网| 亚洲精品美女在线观看播放| 97在线视频免费观看| 欧美一级高清免费播放| 国产丝袜一区视频在线观看| 欧美激情一区二区三区高清视频| 亚洲激情视频在线播放| 69久久夜色精品国产69乱青草| 欧美另类在线播放| 欧美最猛性xxxx| 日韩大片免费观看视频播放| 日韩av在线播放资源| 国产成人精品综合| 日韩一区二区在线视频| 亚洲一区亚洲二区亚洲三区| 中文字幕av一区二区三区谷原希美| 午夜精品一区二区三区在线视频| 久久999免费视频| 97成人精品视频在线观看| 国外色69视频在线观看| 久久精品国产99国产精品澳门| 久久天天躁狠狠躁老女人| 亚洲精品成人网| 久久影院模特热| 91精品国产自产在线| 成人动漫网站在线观看| 日本一区二区三区在线播放| 自拍偷拍亚洲区| 亚洲男人天堂网| 欧美日韩美女在线观看| 久久在精品线影院精品国产| 九九热这里只有在线精品视| 国产精品久久久久久久app| 欧洲s码亚洲m码精品一区| 孩xxxx性bbbb欧美| 久久成人国产精品| 亚洲视频视频在线| 538国产精品一区二区在线| 2025国产精品视频| 久久精品视频在线| 国产精品永久在线| 精品国内产的精品视频在线观看| 欧美日韩裸体免费视频| 欧美亚洲在线视频| 日韩欧美国产骚| 亚洲人成网站999久久久综合| 萌白酱国产一区二区| 欧美性猛交xxxx乱大交蜜桃| 欧美大尺度激情区在线播放| 国产精品91在线观看| 日韩国产欧美精品一区二区三区| 亚洲色图综合久久| 91九色综合久久| 国产91精品久久久久久久| 日韩中文字幕久久| 色七七影院综合| 久久精品视频中文字幕| 日韩精品在线影院| 国产日韩欧美夫妻视频在线观看| 日韩在线精品视频| 欧美日韩亚洲高清| 成人在线视频网站| 久久久99久久精品女同性| 91精品国产乱码久久久久久蜜臀| 亚洲色图在线观看| 亚洲 日韩 国产第一| 国产成人欧美在线观看| 日本乱人伦a精品| 国产在线视频2019最新视频| 久久久噜噜噜久久中文字免| 亚洲成人久久久久| 日本精品性网站在线观看| 日韩久久午夜影院| 亚洲高清久久久久久| 777777777亚洲妇女| 国产精品青草久久久久福利99| 欧美成人午夜激情| 欧美劲爆第一页| 日韩精品视频中文在线观看| 国产欧美va欧美va香蕉在线| 亚洲www永久成人夜色| 亚洲精品一区二区久| 日韩黄色在线免费观看| 国产精品亚洲美女av网站| 亚洲乱码国产乱码精品精天堂| 亚洲国产古装精品网站| 国产精品福利在线观看网址| 欧美日韩国产丝袜美女| 欧美日韩一区二区免费视频| 色综合久久中文字幕综合网小说|