Pocket

本日はLinuxの動きや起動についてブログしたいと思います。近年はインフラもクラウドばかりですし、オンプレも(OSインストールから設定まで)触ることが減ってきました。(kickstartあるし)Linux触っているならどのように起動して、どのように動いているのかはちゃんと把握するべきです。


■その前にデーモン(Daemon)って何なのよ

「起動されるとシステムがシャットダウンするまで常に動いてるプロセス」です。
ちなみに二種類のタイプがありますので以下を参考に。

  • カーネルに関係するデーモン

メモリー内でプロセス切り替えに使うデータを入れ替え、I/Oのためのバッファを入れ替えるデーモンがあります。CentOSで見ていきましょう。

サービス名に[ ] が付いてるのがkernelデーモンです。よく見ると「watchdog」とかPS4のハッカーゲームでありましたね。(以下watchdogs2より)そもそもwatchdogの役目としては
システムが正常に動作しているか監視し、異常発生時にシステムのリセット等が行われるようになっています。

多分このゲームタイトル名もwatchdogでシステム全体を監視/ハッキングするという意味で付けられたのでしょう。(予想)

話を戻して、上記で動いているkernelデーモンについていくつか紹介していきましょう。

keventd
モジュール化されたデバイスドライバを自動的にロードする割込を発生させるコントロールデーモン

kapmd
パワーマネージメント関係のデーモン

ksoftirq_CPU0
ソフトIRQをCPU毎に順次処理するデーモン

kswapd
物理メモリが少なくなると必要に応じてディスク側のスワップ領域に読み書きしてコントロールするデーモン

bdflushd
ディスクなどの記録媒体に書き込む機能を提供するデーモン

kupdated
bdflushdの機能を定期的にスケジューリングして行うデーモン

khubd
USB機器の抜き差しを監視するデーモン

kjournald
ジャーナリング(データベースのようにデータを定期的に記録する構造)をサポートしたファイルシステムReiserFSやExt3 FSを使うときに必要なデーモン

mdrecoveryd
RAID関係のコントロールデーモン 

  • サービスを提供するデーモン

・ ログ管理デーモン(syslogd)
・ 定期的なジョブ実行デーモン(crond)
・ loginサービスデーモン
・ ネットワークデーモン

ちなみにcrondのdDaemonのdです。ではLinuxの動きについて図を作ってみました。


■Linux起動からログインまで

 

このニワトリ親子の図はLinuxの起動からログインまでの流れを表したものです。(CentOS6系)非常に分かりやすいと思いますが、補足としてCentOS7はsystemctlなのでinitは使われなくなりましたが、基本initと変わりありません。とりあえずinitプログラムについて簡単にご紹介します。

  • initプログラムとは

initは実行するときに/etc/inittabファイルを参照し、その内容を順に実行します。以下はAmazon Linuxのinittabです。

inittabはinitの実行から各種デーモンの起動からのログインプロンプトが表示されるまでの処理が記述されています。上記の6~13行目を見ると何やら処理が書いてますね。
id:3なのでランレベルは3のmultiuser modeで動いているのも分かります。ちなみCentOS7のinittabはこんな感じ。

上記のようにあらかじめ決められた順番で起動していく仕組みのことをSysVinitと言います。サービスの起動に手間取ると、次に起動するサービスを待ち時間がかかってしまい、最終的な起動完了まで時間がかかります。最近のLinuxディストリビューションではUpstartという仕組みを採用しており、並列起動することで短時間でシステムを起動できるようになりました。

  • 起動後のログはどこで確認できるんです?

・/var/log/messages
→システム全般の情報
・/var/log/boot.log  
→システム起動時の各プロセスが「OK」か「Failed」かを確認
・/var/log/dmesg
→システム起動時のメッセージが出力

ちなみに$ dmesgで詳細が分かります。↓Amazon LinuxはXenということも書いてます。


■まとめ

Linuxよ…..深いぜ….

参考
http://www.atmarkit.co.jp/ait/articles/0204/02/news002.html
http://www.infraeye.com/study/linuxz2.html
http://www.kozupon.pgw.jp/kiso/linux_process.html

Pocket

カテゴリー: CentOSKernelLinux

adachin

1989年生まれのSRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。好きなツールはAnsible,Terraform,CircleCIで、ECS/Fargateでのインフラ構築を得意とする。副業では数社サーバー保守とベンチャー企業のインフラ改善やMENTAで未経験者にインフラのコーチングを実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、ECS/Fargateへ移行、CakePHP4での管理画面作成、メンター、分析基盤の運用を担当している。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください