日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

浅析 Linux 初始化 init 系统,第 3 部分: Systemd

發布時間:2025/3/15 linux 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅析 Linux 初始化 init 系统,第 3 部分: Systemd 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

近年來,Linux 系統的 init 進程經歷了兩次重大的演進,傳統的 sysvinit 已經逐漸淡出歷史舞臺,新的 UpStart 和 systemd 各有特點,越來越多的 Linux 發行版采納了 systemd。本文簡要介紹了這三種 init 系統的使用和原理,每個 Linux 系統管理員和系統軟件開發者都應該了解它們,以便更好地管理系統和開發應用。本文是系列的第 3 部分,主要講述 systemd 的特點和使用。

Systemd 的簡介和特點

Systemd 是 Linux 系統中最新的初始化系統(init),它主要的設計目標是克服 sysvinit 固有的缺點,提高系統的啟動速度。systemd 和 ubuntu 的 upstart 是競爭對手,預計會取代 UpStart,實際上在作者寫作本文時,已經有消息稱 Ubuntu 也將采用 systemd 作為其標準的系統初始化系統。

Systemd 的很多概念來源于蘋果 Mac OS 操作系統上的 launchd,不過 launchd 專用于蘋果系統,因此長期未能獲得應有的廣泛關注。Systemd 借鑒了很多 launchd 的思想,它的重要特性如下:

同 SysVinit 和 LSB init scripts 兼容

Systemd 是一個"新來的",Linux 上的很多應用程序并沒有來得及為它做相應的改變。和 UpStart 一樣,systemd 引入了新的配置方式,對應用程序的開發也有一些新的要求。如果 systemd 想替代目前正在運行的初始化系統,就必須和現有程序兼容。任何一個 Linux 發行版都很難為了采用 systemd 而在短時間內將所有的服務代碼都修改一遍。

Systemd 提供了和 Sysvinit 以及 LSB initscripts 兼容的特性。系統中已經存在的服務和進程無需修改。這降低了系統向 systemd 遷移的成本,使得 systemd 替換現有初始化系統成為可能。

更快的啟動速度

Systemd 提供了比 UpStart 更激進的并行啟動能力,采用了 socket / D-Bus activation 等技術啟動服務。一個顯而易見的結果就是:更快的啟動速度。

為了減少系統啟動時間,systemd 的目標是:

  • 盡可能啟動更少的進程
  • 盡可能將更多進程并行啟動

同樣地,UpStart 也試圖實現這兩個目標。UpStart 采用事件驅動機制,服務可以暫不啟動,當需要的時候才通過事件觸發其啟動,這符合第一個設計目標;此外,不相干的服務可以并行啟動,這也實現了第二個目標。

下面的圖形演示了 UpStart 相對于 SysVInit 在并發啟動這個方面的改進:

圖 1. UpStart 對 SysVinit 的改進

假設有 7 個不同的啟動項目, 比如 JobA、Job B 等等。在 SysVInit 中,每一個啟動項目都由一個獨立的腳本負責,它們由 sysVinit 順序地,串行地調用。因此總的啟動時間為 T1+T2+T3+T4+T5+T6+T7。其中一些任務有依賴關系,比如 A,B,C,D。

而 Job E 和 F 卻和 A,B,C,D 無關。這種情況下,UpStart 能夠并發地運行任務{E,F,(A,B,C,D)},使得總的啟動時間減少為 T1+T2+T3。

這無疑增加了系統啟動的并行性,從而提高了系統啟動速度。但是在 UpStart 中,有依賴關系的服務還是必須先后啟動。比如任務 A,B,(C,D)因為存在依賴關系,所以在這個局部,還是串行執行。

讓我們例舉一些例子, Avahi 服務需要 D-Bus 提供的功能,因此 Avahi 的啟動依賴于 D-Bus,UpStart 中,Avahi 必須等到 D-Bus 啟動就緒之后才開始啟動。類似的,livirtd 和 X11 都需要 HAL 服務先啟動,而所有這些服務都需要 syslog 服務記錄日志,因此它們都必須等待 syslog 服務先啟動起來。然而 httpd 和他們都沒有關系,因此 httpd 可以和 Avahi 等服務并發啟動。

Systemd 能夠更進一步提高并發性,即便對于那些 UpStart 認為存在相互依賴而必須串行的服務,比如 Avahi 和 D-Bus 也可以并發啟動。從而實現如下圖所示的并發啟動過程:

圖 2. systemd 的并發啟動

所有的任務都同時并發執行,總的啟動時間被進一步降低為 T1。

可見 systemd 比 UpStart 更進一步提高了并行啟動能力,極大地加速了系統啟動時間。

systemd 提供按需啟動能力

當 sysvinit 系統初始化的時候,它會將所有可能用到的后臺服務進程全部啟動運行。并且系統必須等待所有的服務都啟動就緒之后,才允許用戶登錄。這種做法有兩個缺點:首先是啟動時間過長;其次是系統資源浪費。

某些服務很可能在很長一段時間內,甚至整個服務器運行期間都沒有被使用過。比如 CUPS,打印服務在多數服務器上很少被真正使用到。您可能沒有想到,在很多服務器上 SSHD 也是很少被真正訪問到的?;ㄙM在啟動這些服務上的時間是不必要的;同樣,花費在這些服務上的系統資源也是一種浪費。

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

Systemd 采用 Linux 的 Cgroup 特性跟蹤和管理進程的生命周期

init 系統的一個重要職責就是負責跟蹤和管理服務進程的生命周期。它不僅可以啟動一個服務,也必須也能夠停止服務。這看上去沒有什么特別的,然而在真正用代碼實現的時候,您或許會發現停止服務比一開始想的要困難。

服務進程一般都會作為精靈進程(daemon)在后臺運行,為此服務程序有時候會派生(fork)兩次。在 UpStart 中,需要在配置文件中正確地配置 expect 小節。這樣 UpStart 通過對 fork 系統調用進行計數,從而獲知真正的精靈進程的 PID 號。比如圖 3 所示的例子:

圖 3. 找到正確 pid

如果 UpStart 找錯了,將 p1`作為服務進程的 Pid,那么停止服務的時候,UpStart 會試圖殺死 p1`進程,而真正的 p1``進程則繼續執行。換句話說該服務就失去控制了。

還有更加特殊的情況。比如,一個 CGI 程序會派生兩次,從而脫離了和 Apache 的父子關系。當 Apache 進程被停止后,該 CGI 程序還在繼續運行。而我們希望服務停止后,所有由它所啟動的相關進程也被停止。

為了處理這類問題,UpStart 通過 strace 來跟蹤 fork、exit 等系統調用,但是這種方法很笨拙,且缺乏可擴展性。systemd 則利用了 Linux 內核的特性即 CGroup 來完成跟蹤的任務。當停止服務時,通過查詢 CGroup,systemd 可以確保找到所有的相關進程,從而干凈地停止服務。

CGroup 已經出現了很久,它主要用來實現系統資源配額管理。CGroup 提供了類似文件系統的接口,使用方便。當進程創建子進程時,子進程會繼承父進程的 CGroup。因此無論服務如何啟動新的子進程,所有的這些相關進程都會屬于同一個 CGroup,systemd 只需要簡單地遍歷指定的 CGroup 即可正確地找到所有的相關進程,將它們一一停止即可。

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

傳統的 Linux 系統中,用戶可以用/etc/fstab 文件來維護固定的文件系統掛載點。這些掛載點在系統啟動過程中被自動掛載,一旦啟動過程結束,這些掛載點就會確保存在。這些掛載點都是對系統運行至關重要的文件系統,比如 HOME 目錄。和 sysvinit 一樣,Systemd 管理這些掛載點,以便能夠在系統啟動時自動掛載它們。Systemd 還兼容/etc/fstab 文件,您可以繼續使用該文件管理掛載點。

有時候用戶還需要動態掛載點,比如打算訪問 DVD 內容時,才臨時執行掛載以便訪問其中的內容,而不訪問光盤時該掛載點被取消(umount),以便節約資源。傳統地,人們依賴 autofs 服務來實現這種功能。

Systemd 內建了自動掛載服務,無需另外安裝 autofs 服務,可以直接使用 systemd 提供的自動掛載管理能力來實現 autofs 的功能。

實現事務性依賴關系管理

系統啟動過程是由很多的獨立工作共同組成的,這些工作之間可能存在依賴關系,比如掛載一個 NFS 文件系統必須依賴網絡能夠正常工作。Systemd 雖然能夠最大限度地并發執行很多有依賴關系的工作,但是類似"掛載 NFS"和"啟動網絡"這樣的工作還是存在天生的先后依賴關系,無法并發執行。對于這些任務,systemd 維護一個"事務一致性"的概念,保證所有相關的服務都可以正常啟動而不會出現互相依賴,以至于死鎖的情況。

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

systemd 支持按需啟動,因此系統的運行狀態是動態變化的,人們無法準確地知道系統當前運行了哪些服務。Systemd 快照提供了一種將當前系統運行狀態保存并恢復的能力。

比如系統當前正運行服務 A 和 B,可以用 systemd 命令行對當前系統運行狀況創建快照。然后將進程 A 停止,或者做其他的任意的對系統的改變,比如啟動新的進程 C。在這些改變之后,運行 systemd 的快照恢復命令,就可立即將系統恢復到快照時刻的狀態,即只有服務 A,B 在運行。一個可能的應用場景是調試:比如服務器出現一些異常,為了調試用戶將當前狀態保存為快照,然后可以進行任意的操作,比如停止服務等等。等調試結束,恢復快照即可。

這個快照功能目前在 systemd 中并不完善,似乎開發人員也沒有特別關注它,因此有報告指出它還存在一些使用上的問題,使用時尚需慎重。

日志服務

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

  • syslog 不安全,消息的內容無法驗證。每一個本地進程都可以聲稱自己是 Apache PID 4711,而 syslog 也就相信并保存到磁盤上。
  • 數據沒有嚴格的格式,非常隨意。自動化的日志分析器需要分析人類語言字符串來識別消息。一方面此類分析困難低效;此外日志格式的變化會導致分析代碼需要更新甚至重寫。

Systemd Journal 用二進制格式保存所有日志信息,用戶使用 journalctl 命令來查看日志信息。無需自己編寫復雜脆弱的字符串分析處理程序。

Systemd Journal 的優點如下:

  • 簡單性:代碼少,依賴少,抽象開銷最小。
  • 零維護:日志是除錯和監控系統的核心功能,因此它自己不能再產生問題。舉例說,自動管理磁盤空間,避免由于日志的不斷產生而將磁盤空間耗盡。
  • 移植性:日志 文件應該在所有類型的 Linux 系統上可用,無論它使用的何種 CPU 或者字節序。
  • 性能:添加和瀏覽 日志 非常快。
  • 最小資源占用:日志 數據文件需要較小。
  • 統一化:各種不同的日志存儲技術應該統一起來,將所有的可記錄事件保存在同一個數據存儲中。所以日志內容的全局上下文都會被保存并且可供日后查詢。例如一條固件記錄后通常會跟隨一條內核記錄,最終還會有一條用戶態記錄。重要的是當保存到硬盤上時這三者之間的關系不會丟失。Syslog 將不同的信息保存到不同的文件中,分析的時候很難確定哪些條目是相關的。
  • 擴展性:日志的適用范圍很廣,從嵌入式設備到超級計算機集群都可以滿足需求。
  • 安全性:日志 文件是可以驗證的,讓無法檢測的修改不再可能。

Systemd 的基本概念

單元的概念

系統初始化需要做的事情非常多。需要啟動后臺服務,比如啟動 SSHD 服務;需要做配置工作,比如掛載文件系統。這個過程中的每一步都被 systemd 抽象為一個配置單元,即 unit。可以認為一個服務是一個配置單元;一個掛載點是一個配置單元;一個交換分區的配置是一個配置單元;等等。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 的系統中運行級別 5)
  • timer:定時器配置單元用來定時觸發用戶定義的操作,這類配置單元取代了 atd、crond 等傳統的定時服務。
  • snapshot :與 target 配置單元相似,快照是一組配置單元。它保存了系統當前的運行狀態。

每個配置單元都有一個對應的配置文件,系統管理員的任務就是編寫和維護這些不同的配置文件,比如一個 MySQL 服務對應一個 mysql.service 文件。這種配置文件的語法非常簡單,用戶不需要再編寫和維護復雜的系統 5 腳本了。

依賴關系

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

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

Systemd 事務

Systemd 能保證事務完整性。Systemd 的事務概念和數據庫中的有所不同,主要是為了保證多個依賴的配置單元之間沒有環形引用。比如 unit A、B、C,假如它們的依賴關系為:

圖 4, Unit 的循環依賴

存在循環依賴,那么 systemd 將無法啟動任意一個服務。此時 systemd 將會嘗試解決這個問題,因為配置單元之間的依賴關系有兩種:required 是強依賴;want 則是弱依賴,systemd 將去掉 wants 關鍵字指定的依賴看看是否能打破循環。如果無法修復,systemd 會報錯。

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

Target 和運行級別

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

表 1. Sysvinit 運行級別和 systemd 目標的對應表
Sysvinit 運行級別Systemd 目標備注
0runlevel0.target, poweroff.target關閉系統。
1, s, singlerunlevel1.target, rescue.target單用戶模式。
2, 4runlevel2.target, runlevel4.target, multi-user.target用戶定義/域特定運行級別。默認等同于 3。
3runlevel3.target, multi-user.target多用戶,非圖形化。用戶可以通過多個控制臺或網絡登錄。
5runlevel5.target, graphical.target多用戶,圖形化。通常為所有運行級別 3 的服務外加圖形化登錄。
6runlevel6.target, reboot.target重啟
emergencyemergency.target緊急 Shell

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 支持所謂"bus activation"功能。如果服務 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 真正的掛載設備尚未啟動好,真正的掛載操作還沒有執行,文件系統檢測也還沒有完成??墒悄切┮蕾囋撃夸浀倪M程已經可以并發啟動,他們的 open()操作被內建在 systemd 中的 autofs 捕獲,將該 open()調用掛起(可中斷睡眠狀態)。然后等待真正的掛載操作完成,文件系統檢測也完成后,systemd 將該自動掛載點替換為真正的掛載點,并讓 open()調用返回。由此,實現了那些依賴于文件系統的服務和文件系統本身同時并發啟動。

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

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


Systemd 的使用

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

系統軟件開發人員

開發人員需要了解 systemd 的更多細節。比如您打算開發一個新的系統服務,就必須了解如何讓這個服務能夠被 systemd 管理。這需要您注意以下這些要點:

  • 后臺服務進程代碼不需要執行兩次派生來實現后臺精靈進程,只需要實現服務本身的主循環即可。
  • 不要調用 setsid(),交給 systemd 處理
  • 不再需要維護 pid 文件。
  • Systemd 提供了日志功能,服務進程只需要輸出到 stderr 即可,無需使用 syslog。
  • 處理信號 SIGTERM,這個信號的唯一正確作用就是停止當前服務,不要做其他的事情。
  • SIGHUP 信號的作用是重啟服務。
  • 需要套接字的服務,不要自己創建套接字,讓 systemd 傳入套接字。
  • 使用 sd_notify()函數通知 systemd 服務自己的狀態改變。一般地,當服務初始化結束,進入服務就緒狀態時,可以調用它。

Unit 文件的編寫

對于開發者來說,工作量最大的部分應該是編寫配置單元文件,定義所需要的單元。

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

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

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

#cat /etc/system/system/sshd.service[Unit]Description=OpenSSH server daemon[Service]EnvironmentFile=/etc/sysconfig/sshdExecStartPre=/usr/sbin/sshd-keygenExecStart=/usrsbin/sshd –D $OPTIONSExecReload=/bin/kill –HUP $MAINPIDKillMode=processRestart=on-failureRestartSec=42s[Install]WantedBy=multi-user.target

文件分為三個小節。第一個是[Unit]部分,這里僅僅有一個描述信息。第二部分是 Service 定義,其中,ExecStartPre 定義啟動服務之前應該運行的命令;ExecStart 定義啟動服務的具體命令行語法。第三部分是[Install],WangtedBy 表明這個服務是在多用戶模式下所需要的。

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

#cat multi-user.target[Unit]Description=Multi-User SystemDocumentation=man.systemd.special(7)Requires=basic.targetConflicts=rescue.service rescure.targetAfter=basic.target rescue.service rescue.targetAllowIsolate=yes[Install]Alias=default.target

第一部分中的 Requires 定義表明 multi-user.target 啟動的時候 basic.target 也必須被啟動;另外 basic.target 停止的時候,multi-user.target 也必須停止。如果您接著查看 basic.target 文件,會發現它又指定了 sysinit.target 等其他的單元必須隨之啟動。同樣 sysinit.target 也會包含其他的單元。采用這樣的層層鏈接的結構,最終所有需要支持多用戶模式的組件服務都會被初始化啟動好。

在[Install]小節中有 Alias 定義,即定義本單元的別名,這樣在運行 systemctl 的時候就可以使用這個別名來引用本單元。這里的別名是 default.target,比 multi-user.target 要簡單一些。。。

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

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

#cat sys-kernel-debug.mount [Unit] Description=Debug File Syste 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 附帶的 man 等文檔進行深入學習。希望通過上面幾個小例子,大家已經了解配置單元文件的作用和一般寫法了。

系統管理員

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

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

表 2. Systemd 命令和 sysvinit 命令的對照表
Sysvinit 命令Systemd 命令備注
service foo startsystemctl start foo.service用來啟動一個服務 (并不會重啟現有的)
service foo stopsystemctl stop foo.service用來停止一個服務 (并不會重啟現有的)。
service foo restartsystemctl restart foo.service用來停止并啟動一個服務。
service foo reloadsystemctl reload foo.service當支持時,重新裝載配置文件而不中斷等待操作。
service foo condrestartsystemctl condrestart foo.service如果服務正在運行那么重啟它。
service foo statussystemctl status foo.service匯報服務是否正在運行。
ls /etc/rc.d/init.d/systemctl list-unit-files --type=service用來列出可以啟動或停止的服務列表。
chkconfig foo onsystemctl enable foo.service在下次啟動時或滿足其他觸發條件時設置服務為啟用
chkconfig foo offsystemctl disable foo.service在下次啟動時或滿足其他觸發條件時設置服務為禁用
chkconfig foosystemctl is-enabled foo.service用來檢查一個服務在當前環境下被配置為啟用還是禁用。
chkconfig –listsystemctl list-unit-files --type=service輸出在各個運行級別下服務的啟用和禁用情況
chkconfig foo –listls /etc/systemd/system/*.wants/foo.service用來列出該服務在哪些運行級別下啟用和禁用。
chkconfig foo –addsystemctl daemon-reload當您創建新服務文件或者變更設置時使用。
telinit 3systemctl isolate multi-user.target (OR systemctl isolate runlevel3.target OR telinit 3)改變至多用戶運行級別。

除了表 2 列出的常見用法,系統管理員還需要了解其他一些系統配置和管理任務的改變。

首先我們了解 systemd 如何處理電源管理,命令如下表所示:

表 3,systemd 電源管理命令
命令操作
systemctl reboot重啟機器
systemctl poweroff關機
systemctl suspend待機
systemctl hibernate休眠
systemctl hybrid-sleep混合休眠模式(同時休眠到硬盤并待機)

關機不是每個登錄用戶在任何情況下都可以執行的,一般只有管理員才可以關機。正常情況下系統不應該允許 SSH 遠程登錄的用戶執行關機命令。否則其他用戶正在工作,一個用戶把系統關了就不好了。為了解決這個問題,傳統的 Linux 系統使用 ConsoleKit 跟蹤用戶登錄情況,并決定是否賦予其關機的權限?,F在 ConsoleKit 已經被 systemd 的 logind 所替代。

logind 不是 pid-1 的 init 進程。它的作用和 UpStart 的 session init 類似,但功能要豐富很多,它能夠管理幾乎所有用戶會話(session)相關的事情。logind 不僅是 ConsoleKit 的替代,它可以:

  • 維護,跟蹤會話和用戶登錄情況。如上所述,為了決定關機命令是否可行,系統需要了解當前用戶登錄情況,如果用戶從 SSH 登錄,不允許其執行關機命令;如果普通用戶從本地登錄,且該用戶是系統中的唯一會話,則允許其執行關機命令;這些判斷都需要 logind 維護所有的用戶會話和登錄情況。
  • Logind 也負責統計用戶會話是否長時間沒有操作,可以執行休眠/關機等相應操作。
  • 為用戶會話的所有進程創建 CGroup。這不僅方便統計所有用戶會話的相關進程,也可以實現會話級別的系統資源控制。
  • 負責電源管理的組合鍵處理,比如用戶按下電源鍵,將系統切換至睡眠狀態。
  • 多席位(multi-seat) 管理。如今的電腦,即便一臺筆記本電腦,也完全可以提供多人同時使用的計算能力。多席位就是一臺電腦主機管理多個外設,比如兩個屏幕和兩個鼠標/鍵盤。席位一使用屏幕 1 和鍵盤 1;席位二使用屏幕 2 和鍵盤 2,但他們都共享一臺主機。用戶會話可以自由在多個席位之間切換?;蛘弋敳迦胄碌逆I盤,屏幕等物理外設時,自動啟動 gdm 用戶登錄界面等。所有這些都是多席位管理的內容。ConsoleKit 始終沒有實現這個功能,systemd 的 logind 能夠支持多席位。

以上描述的這些管理功能僅僅是 systemd 的部分功能,除此之外,systemd 還負責系統其他的管理配置,比如配置網絡,Locale 管理,管理系統內核模塊加載等,完整地描述它們已經超出了本人的能力。


systemd 小結

在不才作者看來,作為系統初始化系統,systemd 的最大特點有兩個:

  • 令人驚奇的激進的并發啟動能力,極大地提高了系統啟動速度;
  • 用 CGroup 統計跟蹤子進程,干凈可靠。

此外,和其前任不同的地方在于,systemd 已經不僅僅是一個初始化系統了。

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

好的一點是,這非常有助于標準化 Linux 的管理!從前,不同的 Linux 發行版各行其事,使用不同方法管理系統,從來也不會互相妥協。比如如何將系統進入休眠狀態,不同的系統有不同的解決方案,即便是同一個 Linux 系統,也存在不同的方法,比如一個有趣的討論:如何讓 ubuntu 系統休眠,可以使用底層的/sys/power/state 接口,也可以使用諸如 pm-utility 等高層接口。存在這么多種不同的方法做一件事情對像我這樣的普通用戶而言可不是件有趣的事情。systemd 提供統一的電源管理命令接口,這件事情的意義就類似全世界的人都說統一的語言,我們再也不需要學習外語了,多么美好!

如果所有的 Linux 發行版都采納了 systemd,那么系統管理任務便可以很大程度上實現標準化。此外 systemd 有個很棒的承諾:接口保持穩定,不會再輕易改動。對于軟件開發人員來說,這是多么體貼又讓人感動的承諾啊!


結束語

本系列文章從古老卻簡明穩定的 sysvinit 說起,接著簡要描述了 UpStart 帶來的清新改變,最后看到了充滿野心和活力的新生代 systemd 系統逐漸統治 Linux 的各個版本。就好像在看我們這個世界,一代人老去,新的一代帶著橫掃一切的氣概登上舞臺,還沒有喊出他們最有力的口號,更猛的一代已經把聚光燈和所有的目光帶走。Systemd 之后也許還有更新的 init 系統出現吧,讓我們繼續期待。。。

總結

以上是生活随笔為你收集整理的浅析 Linux 初始化 init 系统,第 3 部分: Systemd的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

九九视频在线观看视频6 | 精品99免费 | 亚洲欧洲成人 | 狠狠艹夜夜干 | 天天舔天天搞 | 免费观看9x视频网站在线观看 | 狠狠色综合网站久久久久久久 | 综合色婷婷 | 成人免费观看视频大全 | 日韩午夜在线播放 | 久久玖| 色偷偷男人的天堂av | 久精品视频在线观看 | 国产美女主播精品一区二区三区 | 精品美女在线观看 | 高清中文字幕av | 国产精品亚洲成人 | 中文在线字幕免 | 国产精品久久久久久久久久久久 | 亚洲黄色成人av | 一区二区三区日韩在线观看 | 成人91av| 中文字幕第一页在线vr | 天天五月天色 | 欧美在线aa| 欧美综合在线视频 | 久久国色夜色精品国产 | 精品视频中文字幕 | 欧美天天综合 | 亚洲黄色在线观看 | 日韩在线观看视频中文字幕 | 黄色aaaaa| 国产伦精品一区二区三区四区视频 | 丰满少妇在线观看网站 | 日韩在线视频网 | 福利电影一区二区 | 国产亚洲成av片在线观看 | 有码视频在线观看 | 久久夜靖品 | 麻豆久久一区二区 | 国产98色在线 | 日韩 | 综合久久五月天 | 久久国内视频 | 亚洲国产视频直播 | 97视频在线观看免费 | 高清不卡一区二区在线 | 国产成人精品免费在线观看 | 国产精品毛片一区二区 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 天天干,天天草 | 欧美日韩一级久久久久久免费看 | 亚洲综合色站 | 噜噜色官网 | 亚洲污视频 | 久久国产精品系列 | 一级精品视频在线观看宜春院 | 99久久精品国产亚洲 | 国产一区二区中文字幕 | 午夜av不卡 | av线上看 | 日韩精品一区二区久久 | 日韩91在线| 天天操夜夜操天天射 | 丝袜+亚洲+另类+欧美+变态 | 国产精品久久久久久久久免费看 | 国产精品国产三级国产不产一地 | 欧美日韩网址 | 九月婷婷综合网 | 91丨九色丨高潮 | 久久精品—区二区三区 | 免费观看的黄色 | 91精品一区二区在线观看 | 中文字幕av在线电影 | 久久人人爽人人片av | 成年人视频在线免费播放 | 日韩欧美国产精品 | 在线影视 一区 二区 三区 | 久久久久国产精品一区 | av在线播放免费 | 久久99久久久久久 | 日韩高清在线一区 | 麻豆精品视频 | 精品一区二区亚洲 | 成人av在线网 | 韩国av一区 | 一级黄网| 亚洲人成在线电影 | 亚洲成人资源网 | 国产精品免费久久久久影院仙踪林 | 国产视| 人人超碰人人 | 啪啪动态视频 | 激情视频综合网 | 日韩欧美专区 | 夜夜爽88888免费视频4848 | 亚洲一级影院 | 国产艹b视频 | 国产成人精品一区二区三区福利 | 欧美韩日在线 | 91探花国产综合在线精品 | av免费在线网站 | 天天操天 | 手机av在线网站 | 国产精品普通话 | 久久精品中文视频 | 天天干,狠狠干 | 精品久久五月天 | 成年人视频免费在线播放 | 亚洲精品国产拍在线 | 中文有码在线视频 | 国产一区二区不卡视频 | 热re99久久精品国产99热 | 天天操夜夜逼 | 日日麻批40分钟视频免费观看 | 久久久久久久久久久久久影院 | 久久久久国产精品免费网站 | 黄色在线看网站 | 国产精品中文字幕在线播放 | aaa亚洲精品一二三区 | 日本中文乱码卡一卡二新区 | 欧美日性视频 | 久久精品a | 日韩一区二区三区高清在线观看 | 狠狠色丁香久久婷婷综 | 久久国产精品99国产 | 国产福利不卡视频 | 91秒拍国产福利一区 | 超碰公开在线观看 | 天天操人人干 | 国产精品涩涩屋www在线观看 | 日日躁你夜夜躁你av蜜 | 亚洲一级在线观看 | 久久精品看 | 狠狠色噜噜狠狠狠狠 | 欧美精品在线观看 | 91视频久久久久 | 黄色视屏免费在线观看 | 手机av在线网站 | 久草视频观看 | 日韩一区二区免费播放 | 欧美福利在线播放 | 最近中文字幕mv免费高清在线 | 久久国产精品久久精品国产演员表 | 色视频国产直接看 | 99精品国产一区二区三区不卡 | 一本一本久久a久久精品综合 | 国产精品不卡在线观看 | 久久人人爽视频 | 色偷偷网站视频 | 国产亚洲精品日韩在线tv黄 | 日本在线观看一区二区三区 | 欧美综合干 | 波多野结衣在线播放视频 | 亚洲免费公开视频 | 天天综合网久久 | 午夜色性片 | 激情丁香综合 | 国产成人一二三 | 99久久久久国产精品免费 | 欧美 高跟鞋交 xxxxhd | 日韩电影在线一区 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 不卡的一区二区三区 | av片在线观看免费 | 国产日韩中文在线 | 欧美另类性 | 日韩欧美国产免费播放 | 成人一区二区在线观看 | 国产精品久久久久久a | 五月婷av| 免费看短 | 亚洲视频免费在线观看 | 国产手机免费视频 | 中文字幕视频一区二区 | 高清av网站| 免费成人在线观看视频 | 国内精品久久久久国产 | 最近中文字幕完整高清 | 麻豆成人在线观看 | 国产精品欧美久久 | 亚洲国产无 | 国产探花在线看 | 深爱激情站 | 最新av在线播放 | 91豆麻精品91久久久久久 | 久久爱资源网 | 99视频在线免费观看 | 五月婷婷六月丁香激情 | 成人国产精品久久久 | 中文字幕 在线看 | 日本精品中文字幕 | 天天操人| 在线观看黄色的网站 | 天天干夜夜夜操天 | 女人18片毛片90分钟 | 欧美日韩大片在线观看 | 一级片视频在线 | 在线亚洲高清视频 | 在线观看免费视频 | 日韩在线电影一区 | 四虎成人av | 日韩在线观看网址 | 久久激情视频免费观看 | av免费黄色 | 欧美精品久久久久久久久免 | 日韩欧美一区二区在线播放 | 国产久视频 | 超碰在线中文字幕 | 亚洲日本中文字幕在线观看 | 国产精品网红直播 | 欧美一区二区三区在线看 | 久久综合婷婷 | 黄色精品一区 | 国产色拍拍拍拍在线精品 | 日韩在线观看视频一区二区三区 | 日日操日日干 | 一级淫片a| 国产在线观看av | 久久高清毛片 | 亚洲开心色 | 国产精品亚洲精品 | 操操综合 | 日本在线观看中文字幕无线观看 | a国产精品 | 久久久午夜精品理论片中文字幕 | 欧洲精品久久久久毛片完整版 | 欧美日韩视频在线观看一区二区 | 国产精品中文字幕在线播放 | 99视频一区 | 国产又粗又硬又爽的视频 | 日韩av免费在线看 | 午夜视频亚洲 | 日韩综合在线观看 | 99九九热只有国产精品 | av中文字幕在线看 | av色图天堂网 | 五月婷婷在线视频观看 | 中文永久免费观看 | 日韩av不卡在线观看 | 久久免费视频在线观看6 | 91视频链接| 一级久久久| a级国产片 | 国产一级电影网 | 91亚洲激情 | 91人人澡人人爽 | 国产免费人成xvideos视频 | 日韩一区在线播放 | 97看片 | 麻豆免费视频观看 | www.香蕉视频在线观看 | 伊人久久影视 | 91黄视频在线 | 国产在线传媒 | 国产高清小视频 | av在线影视| 日韩午夜小视频 | 97国产人人 | 亚洲狠狠婷婷 | 中文字幕欧美激情 | 国产精品久久久久久超碰 | 444av| 久久人人爽人人爽人人片 | 亚洲女同ⅹxx女同tv | 日本h在线播放 | 国产免费不卡 | 日韩精品一区二区三区丰满 | 中文字幕中文字幕 | 亚洲精品视频免费在线观看 | 精品视频免费观看 | 欧美午夜a| 色综合久久久网 | 亚洲激情国产精品 | 亚洲免费永久精品国产 | 欧美成年人在线视频 | 黄在线免费看 | 婷婷视频在线 | 91精品欧美 | 激情网站免费观看 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 国产精品视频全国免费观看 | 国产欧美久久久精品影院 | 国产高清在线视频 | 久久久久久久久久久影院 | 一区二区三区国产精品 | 不卡在线一区 | 欧美在线观看小视频 | 日韩欧美在线一区 | 日韩av播放在线 | 国产经典av | 国产精品1024 | 亚洲黄a| 国产一区二区在线免费观看 | 国产精品剧情在线亚洲 | 免费看三级黄色片 | 国产精品乱码一区二三区 | 国产一级性生活视频 | 国产专区视频在线观看 | 免费观看国产精品视频 | 五月天中文字幕mv在线 | www.97视频| 亚洲人人爱 | 欧美成人免费在线 | 成人蜜桃| 日本精品免费看 | 国产美女在线精品免费观看 | av不卡免费在线观看 | 久青草电影 | av3级在线 | 久久a热6 | 亚洲综合丁香 | 在线天堂亚洲 | 高清免费在线视频 | 久久久网站 | 黄色大片免费网站 | 日韩在线观看 | 国产小视频在线免费观看 | av 一区二区三区四区 | 国产一级免费片 | 在线免费观看麻豆视频 | 美女黄视频免费 | 在线国产专区 | 99久久精品免费看国产 | 精品国产乱码久久久久久久 | 国产精品久久久久久久久久久免费看 | 91精品资源 | 江苏妇搡bbbb搡bbbb | 日韩中文字幕在线看 | 久久久久免费视频 | 久久久久久久久久久影视 | 精品久久综合 | www.神马久久| 蜜桃视频成人在线观看 | 久久露脸国产精品 | 九九九在线观看视频 | 99久高清在线观看视频99精品热在线观看视频 | 97免费| 免费看片网页 | 日日操网 | 在线精品在线 | 日本久久久影视 | 97精产国品一二三产区在线 | 亚洲精品一区二区网址 | av手机在线播放 | 99精品国自产在线 | 免费网站在线观看成人 | av电影在线观看完整版一区二区 | 亚洲aⅴ在线 | 天堂激情网 | 久久久综合九色合综国产精品 | 日韩欧美精品免费 | 在线欧美国产 | 夜夜躁天天躁很躁波 | 欧美日本三级 | 久久久久久久久久久网站 | av资源免费在线观看 | 日韩资源在线观看 | 特级毛片爽www免费版 | 国产一级精品视频 | 国产v亚洲v| 97av视频| 久久99久久99精品免观看软件 | 美女精品在线观看 | 久久精品国产v日韩v亚洲 | 久久国产区 | 亚洲精选99 | 国产午夜精品av一区二区 | 亚洲精品视频在线观看视频 | 日韩视频图片 | 日韩免费不卡视频 | 亚洲欧美视频一区二区三区 | 在线观av | 午夜天使 | 日韩av网页| 在线观看中文字幕视频 | 综合久久久久 | 国产午夜精品一区二区三区在线观看 | 91九色蝌蚪国产 | 日本久久免费视频 | 在线观看网站你懂的 | 91网页版免费观看 | www.黄色| 亚洲高清视频在线 | 国产流白浆高潮在线观看 | www.天天操.com | 亚洲精品大片www | 亚洲每日更新 | 91大神dom调教在线观看 | 丁香婷婷色 | 蜜臀久久99精品久久久酒店新书 | 国产精品福利午夜在线观看 | 日本九九视频 | 国产高清第一页 | 99精品国产成人一区二区 | 欧美性网站| 91九色性视频 | 国产精品一区二区久久精品爱微奶 | 91九色视频在线播放 | 超级碰视频 | 久久任你操 | 中文字幕精品视频 | 久久网站最新地址 | 国产日韩欧美在线一区 | 日本系列中文字幕 | 国产视频99 | av中文天堂| 亚洲成人资源网 | 国产高清视频在线观看 | 国产免费国产 | www.午夜色.com | 91精品视频在线免费观看 | 一区视频在线 | 色多视频在线观看 | 天天天天射 | 国产精品视频 | 激情视频免费在线 | 亚洲九九爱 | 欧美午夜一区二区福利视频 | 韩国精品视频在线观看 | 久久精品第一页 | 一区二区三区在线免费 | 国产精品99久久免费黑人 | 亚洲无在线 | 日韩精品视频免费专区在线播放 | 99久久精品久久亚洲精品 | 在线观看视频免费播放 | 91 中文字幕 | 麻豆视频大全 | 中文字幕在线免费看线人 | 国产黄色片网站 | 手机在线中文字幕 | 九九热免费在线视频 | 久久成人亚洲欧美电影 | 日韩一二三区不卡 | 免费看十八岁美女 | 久久国产精品免费观看 | 婷婷射五月 | 国产精品2019 | 91黄色免费看 | 国产精品美女www爽爽爽视频 | 免费av观看网站 | 国产在线观看你懂得 | 久久成人国产精品一区二区 | 国产精品12345 | 成人黄色小说在线观看 | 国产综合香蕉五月婷在线 | 97视频资源 | 一区二区三区四区五区在线视频 | 天天五月天色 | 成人av一区二区三区 | 一区二区三区免费在线 | 波多野结衣理论片 | 五月综合久久 | 日韩欧美一区二区三区视频 | 久草干| 一二三区av | 蜜桃视频在线视频 | 在线av资源| 日韩av手机在线看 | 少妇高潮流白浆在线观看 | avhd高清在线谜片 | 91免费视频网站在线观看 | 草久久精品| 丝袜制服综合网 | 久热色超碰 | 99热日本 | 欧美-第1页-屁屁影院 | 999久久国产精品免费观看网站 | 婷婷六月久久 | 久草在线网址 | 日韩精品久久久久 | 中文字幕精品一区二区精品 | 色偷偷88888欧美精品久久 | 999国产在线 | 这里有精品在线视频 | 欧美激情视频在线免费观看 | 欧美日韩高清一区二区三区 | 亚洲天堂毛片 | 日韩在线国产 | 久草com| 91精品国产91久久久久久三级 | 亚洲国产成人av网 | 欧美综合在线观看 | 久久成人国产精品 | 国内偷拍精品视频 | 黄色成品视频 | 国产成人精品久 | 久久久久国产精品视频 | 五月天电影免费在线观看一区 | 97精品视频在线播放 | 久久综合99| 天天天插 | 黄色app网站在线观看 | 亚洲毛片在线观看. | 亚洲成人免费在线 | 久久精品一二区 | 国产精品原创av片国产免费 | 日韩精品一区二区在线观看 | 日韩免费在线网站 | 国产麻豆视频在线观看 | 国产精品久久久久影院 | 亚洲精品乱码久久久久久9色 | 欧美一级视频免费 | 久草免费新视频 | 国产成人a亚洲精品 | 日日干影院| 欧美一级视频在线观看 | 91在线观看高清 | 欧美中文字幕第一页 | 久久久久高清 | 91福利视频免费观看 | 日韩精品一区二区在线观看视频 | 91最新在线观看 | 国产免费亚洲高清 | 国产精品国产精品 | 国产在线999 | 96国产在线 | 波多野结衣视频一区 | 国产成人精品一区二区三区 | 香蕉久久国产 | 午夜手机看片 | 免费黄色av.| 最新av免费在线观看 | 免费看一级黄色 | 精品美女在线观看 | 久久国产精品久久精品 | 欧美日韩免费观看一区=区三区 | 婷婷国产一区二区三区 | www操操操| 国产一在线精品一区在线观看 | 香蕉在线观看 | 中文字幕在线观看你懂的 | 久久久人人爽 | 久久99久| 色婷丁香 | 丁香5月婷婷 | 日韩激情av在线 | 黄污网站在线观看 | 久久日韩精品 | 亚洲欧美一区二区三区孕妇写真 | 欧美亚洲国产一卡 | 欧美热久久 | 欧美日韩一区二区三区在线免费观看 | 美女网站在线看 | 少妇性xxx | 在线观看岛国片 | 69精品视频在线观看 | 国产精品国产亚洲精品看不卡15 | 黄色在线免费观看网站 | 国产在线无 | 精品久久久久久久久久久久久久久久久久 | 久草久热 | 免费看成人av | 一区二区视频电影在线观看 | 天天av资源| 中文字幕在线观看不卡 | 久草在线观| 91视频高清免费 | 久久在线视频在线 | 国产精品白浆视频 | 91少妇精拍在线播放 | 天天操天天操一操 | 国产一在线精品一区在线观看 | 日免费视频 | 高清久久久| 一本一本久久a久久精品综合小说 | 天天操天天干天天操天天干 | 精品久久五月天 | 欧美日韩国产精品一区二区三区 | 久久久精品电影 | 在线欧美a | 日韩午夜在线 | 就操操久久 | 免费三级在线 | 日日干天天| 粉嫩一区二区三区粉嫩91 | 国产在线国偷精品产拍免费yy | 欧美一级片免费播放 | 韩日av一区二区 | 日韩视频二区 | 国产成人精品久久久 | 久久人人爽人人人人片 | 午夜久久网| www免费| 亚洲成人网在线 | 国产在线一线 | 亚洲成人av片在线观看 | 国产精品9999久久久久仙踪林 | 蜜臀av麻豆 | 高清不卡毛片 | 五月婷婷丁香综合 | 欧美一级特黄aaaaaa大片在线观看 | 成年人免费观看国产 | 成人免费看片98欧美 | 美女久久久久久久久久 | 一区二区三区韩国免费中文网站 | 国产精品国产精品 | 午夜男人影院 | 四虎免费av | 婷婷视频在线观看 | 24小时日本在线www免费的 | 九九热免费在线视频 | av久久在线 | 亚洲理论影院 | 99热网站| 久久九九影院 | 97在线视频免费 | 天天操比 | 国产不卡在线观看 | 国产视频1区2区 | 中文字幕在线观看免费高清完整版 | 99久久99久久精品国产片果冰 | 少妇视频一区 | 91视频麻豆 | 狠狠操狠狠插 | 97成人啪啪网 | av看片网址 | 久久久免费视频播放 | 久久综合亚洲鲁鲁五月久久 | 99久久婷婷| 久久精品国产成人精品 | av综合网址 | 亚洲成av片人久久久 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 亚洲精品国产精品国自产观看 | 国产日韩亚洲 | 国产精品网站一区二区三区 | 天天夜夜亚洲 | 操高跟美女| 黄色亚洲精品 | 国产69精品久久久久9999apgf | 日日爱av | 超碰在线免费97 | 国产精品成人久久久久久久 | 欧美精品久久天天躁 | a级黄色片视频 | 久久久久久久久久久免费视频 | 美女久久99 | 黄a网| 久久这里精品视频 | 久久的色| 最新色视频| 99视频在线免费播放 | 日韩亚洲国产精品 | 少妇搡bbb| 99久久er热在这里只有精品15 | 激情欧美一区二区三区 | 亚洲精品一区二区在线观看 | 波多野结衣视频一区 | 亚洲五月花 | 99精品色 | 91麻豆高清视频 | 超碰大片 | 久久久国产在线视频 | 最近更新中文字幕 | 国产精品乱码久久久久 | 五月综合在线观看 | 国产一区国产二区在线观看 | av大全免费在线观看 | 国产精品二区在线 | 天天干天天摸 | 国产成人精品在线 | 亚洲精品国产精品国自产在线 | 国产黄色精品视频 | 天天色欧美 | 国产精品区免费视频 | 国产精品美女在线观看 | 免费在线观看视频a | 亚洲精品黄色在线观看 | 国产夫妻自拍av | 国产精品成人av久久 | 日韩a级免费视频 | 欧美日韩精品影院 | 久久不射电影网 | 久久久久国产一区二区三区四区 | 精品国产美女 | 人人澡视频 | 国产亚洲va综合人人澡精品 | 久久极品| 色偷偷网站视频 | 久久激情网站 | 激情视频区 | 天天干,天天干 | 波多野结衣电影一区二区三区 | 狠狠干我 | 玖玖国产精品视频 | 天天想夜夜操 | 青青河边草免费直播 | 91视频3p | 天天曰视频 | 伊人手机在线 | 国产123av| 久久久九色精品国产一区二区三区 | 久久免费99 | 超碰精品在线观看 | 亚洲 欧美变态 另类 综合 | 精品国产免费久久 | 不卡视频在线 | 日日夜夜干 | 精品国产自在精品国产精野外直播 | 久久精品视| 免费日韩 精品中文字幕视频在线 | 国产成人精品久久亚洲高清不卡 | 免费网站观看www在线观看 | 一本大道久久精品懂色aⅴ 五月婷社区 | 中文在线天堂资源 | 国产伦精品一区二区三区在线 | 成人精品影视 | 国产在线观看a | 久久精品99久久久久久 | 中文字幕在线看视频国产 | 国产美女免费观看 | 日韩成片 | www天天操| 国产精品中文字幕在线观看 | 精品国产伦一区二区三区观看体验 | 亚洲三级毛片 | 爱爱av网站 | 日韩一区二区三区免费电影 | 国产精品成人自拍 | 日韩h在线观看 | 久热av在线 | 久久婷婷色 | 欧美专区亚洲专区 | 99热在线观看免费 | 久久电影网站中文字幕 | 亚洲精品免费在线视频 | 天天操天天舔天天爽 | 999久久精品 | 亚洲精品久久久久久久蜜桃 | 国产色视频网站 | 日韩欧美国产激情在线播放 | 国产精品久久久久久一区二区 | 国产精品久久久久久999 | 久久精品99国产国产精 | 精品国产电影 | 又色又爽又激情的59视频 | 欧美久久久久久久久中文字幕 | 欧美国产日韩激情 | 成年人免费在线 | 13日本xxxxxⅹxxx20| 国产在线观看免费观看 | 欧美日韩亚洲国产一区 | 中文字幕专区高清在线观看 | 国产手机视频在线观看 | 在线成人观看 | 久久涩涩网站 | 成人国产在线 | 午夜一级免费电影 | 18国产精品福利片久久婷 | 在线看成人 | 久久99热久久99精品 | 色综合网在线 | 超碰在线成人 | 一级做a视频| 97超碰超碰久久福利超碰 | 久久精品久久99精品久久 | 国产亚洲午夜高清国产拍精品 | 日本91在线| 久久综合偷偷噜噜噜色 | 99久久99热这里只有精品 | 99久久综合狠狠综合久久 | 久久精品爱爱视频 | 超碰97免费观看 | 日韩精品国产一区 | 日韩在线播放欧美字幕 | 婷婷激情小说网 | 日韩欧美69 | 婷婷久久一区二区三区 | 黄色片软件网站 | 国产一区二区久久 | av中文字幕在线免费观看 | 碰天天操天天 | 99久久婷婷国产一区二区三区 | 97超碰中文| 热久久影视 | 国产精品第10页 | 国产福利精品一区二区 | 狠狠五月婷婷 | 日韩欧美高清在线观看 | 久久超碰99 | 成人a大片 | 韩国av一区 | 精品久久久久久亚洲综合网站 | 一级成人网 | 九九九九精品九九九九 | 国内精品久久久久久久久久清纯 | 中文字幕一区二区三区在线视频 | 一级黄色片在线免费观看 | 国产日韩在线播放 | 超碰.com| 国产精品免费一区二区三区 | 永久免费毛片在线观看 | 国产日本高清 | 国产亚洲va综合人人澡精品 | 亚洲va欧美va国产va黑人 | 深夜福利视频在线观看 | 99超碰在线播放 | 日韩精品三区四区 | 日韩综合一区二区 | 韩日电影在线观看 | 在线观看视频你懂的 | 国产精品一区二区三区在线 | 天天干夜夜干 | 国产一级二级在线观看 | 国产日韩欧美在线 | 日产乱码一二三区别在线 | 99在线精品免费视频九九视 | 日韩免费观看高清 | 天天干夜夜爱 | 经典三级一区 | 樱空桃av | 久久久蜜桃 | 日日操操 | 色综合久 | 中文字幕久久久精品 | 91精品国产乱码久久桃 | 亚洲综合色激情五月 | 91av看片| 视频一区二区国产 | 久久久久久视频 | 成人在线免费看视频 | 国产成人亚洲精品自产在线 | 一级欧美一级日韩 | 欧美看片 | 国产麻豆传媒 | 天天综合91 | 亚洲不卡av一区二区三区 | 99久久电影 | 欧美成人手机版 | 99热日本 | 视频在线99re | 九九九九免费视频 | 亚洲成人精品av | 久久一视频 | 精品一区二区在线观看 | 69久久夜色精品国产69 | 免费一级日韩欧美性大片 | 久久九九国产视频 | 免费三级a| 亚洲综合在线五月天 | 久久精品99国产国产 | 一级黄色视屏 | av线上看| 日本黄色免费观看 | 国产精品一区二区三区久久久 | 成人免费在线观看入口 | 久久精品欧美一区二区三区麻豆 | 五月婷在线观看 | 成年人在线观看免费视频 | 一区二区三区免费看 | 亚洲国产影院 | 成人国产精品入口 | 日韩高清网站 | 国产第一页在线观看 | 精品国产自 | 久久综合狠狠 | 国产成人久久久久 | 国产专区视频 | 天天综合色网 | 福利一区二区三区四区 | 欧美成人黄色片 | 国产人免费人成免费视频 | 欧美日韩国产成人 | 开心激情综合网 | 狠狠色狠狠色 | 五月激情婷婷丁香 | 99亚洲精品在线 | 日韩精品播放 | 成年人在线免费看片 | 国产精品久久久久久久久久久久久久 | 精品女同一区二区三区在线观看 | 91精品国产综合久久福利 | 免费观看9x视频网站在线观看 | 久久影视网 | 91在线精品视频 | 国产91aaa | 成人在线视频你懂的 | 日韩大陆欧美高清视频区 | 国产69精品久久99不卡的观看体验 | 精品视频中文字幕 | 午夜免费久久看 | 高清国产午夜精品久久久久久 | 国产精品毛片一区二区在线看 | 亚洲精品男人天堂 | 中文字幕二区三区 | 夜夜躁日日躁狠狠久久88av | 中文av一区二区 | 欧美久久久一区二区三区 | 婷婷精品国产一区二区三区日韩 | 久久黄色小说视频 | 国产精品一区二区三区四 | 精品在线免费视频 | 色妞色视频一区二区三区四区 | 成人国产电影在线观看 | 92国产精品久久久久首页 | 亚洲精品tv | 最近中文字幕在线中文高清版 | 日韩高清免费在线观看 | 最新日韩在线观看 | 亚洲精品午夜aaa久久久 | 亚洲色图 校园春色 | 99精品国产在热久久 | 正在播放久久 | 91人人视频在线观看 | 在线中文字幕一区二区 | 久久国产精品免费一区二区三区 | 特级毛片网站 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 一区二区视频欧美 | 久久99网站 | 中文乱码视频在线观看 | av高清网站在线观看 | 五月婷丁香 | 又黄又爽又色无遮挡免费 | 亚洲激情视频 | 精品福利国产 | 操操日 | www天天干com | 国产免费xvideos视频入口 | 亚洲理论电影网 | 成人性生交视频 | 欧美日韩视频免费看 | 香蕉久久久久久久 | 日本精品久久久久中文字幕 | 欧美激情综合五月色丁香小说 | 免费视频久久久久 | 日韩视频1 | 亚洲 欧美 91| 精品久久影院 | 91麻豆精品久久久久久 | 天天干 夜夜操 | 久久综合五月天婷婷伊人 | 国产在线精品区 | 亚洲精品视频在线播放 | 欧美日韩一级久久久久久免费看 | av电影免费看 | 久久艹在线观看 | 成人电影毛片 | 一区精品在线 | 国产精品视频99 | 91大神电影 | 亚洲精品国产精品国产 | 伊人久久国产精品 | 91九色网站 | 91片在线观看 | 色香com.| 久久精品久久精品 | 91欧美国产 | 视频一区二区国产 | 国产高清小视频 | 在线播放av网址 | 久久久久麻豆v国产 | 中文字幕在线观看一区二区三区 | 黄色aa久久| 久久国产精品99精国产 | 成人黄色大片在线观看 | 欧美三人交 | 精品国产一区二区三区四 | 人人玩人人弄 | 国产精品18久久久久久vr | 久久成人免费 | 三级黄色理论片 | 日韩二区三区 | 在线观看亚洲国产精品 | 五月天丁香 | 免费在线激情电影 | 亚洲精品乱码久久久久久按摩 | 伊人婷婷激情 | 成人久久精品视频 | 国产视频久久久久 | 丁香狠狠 | 国产欧美日韩精品一区二区免费 | 激情综合五月天 | 国产高清亚洲 | 久久激情电影 | 国产一区二区在线播放视频 | 欧美日韩综合在线观看 | 天天插天天| 免费亚洲视频在线观看 | 欧美俄罗斯性视频 | 久草在线91 | 成人黄色小视频 | 精品久久久久国产免费第一页 | 免费视频久久久久久久 | 综合网色 | 91免费看片黄 | 久久精品一区二区三区中文字幕 | 午夜久久影视 | 国产精品毛片 | 日本巨乳在线 | 日韩av电影网站在线观看 | 国产精品毛片久久久久久 | 日韩欧美综合 | 午夜视频二区 | 91黄站| 精品国产一区二区三区四区vr | 99精品国产免费久久久久久下载 |