LINEで送る
Pocket

エンジニアの皆様….

「Linuxの動きとか起動の仕組みについて説明できます?」

「…………………………………………………………!!!????」

と質問されたらドヤ顔でかっこよく説明できますか?確かに最近はインフラもクラウドばかりですし、
オンプレも(OSインストールから設定まで)触ることが減ってきました。(kickstartあるし)
が!Linux触っているならどのようにLinuxが起動して、
どのように動いているのかはちゃんと把握するべきです。
概念など理解して説明できたらカッコイイですよね!!!
質問されても?とならないようにざっとブログしてまいります!


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

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

■1.カーネルに関係するデーモン

まずは!

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

サービス名に[ ] が付いてるのがkernelデーモンです。
よく見ると「watchdog」とかPS4のハッカーゲームでありましたねw(以下watchdogs2より)
そもそもwatchdogの役目としては
システムが正常に動作しているか監視し、異常発生時にシステムのリセット等が行われるようになっています。
多分このゲームタイトル名もwatchdogでシステム全体を監視/ハッキングするという意味で付けられたのでしょう。(予想)

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

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

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

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

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

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

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

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

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

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

■2.サービスを提供するデーモン

次に!

・ ログ管理デーモン(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について追求しまくると夜眠れなくなり、
おもしれえええええええとなっていきますね!
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

LINEで送る
Pocket

カテゴリー: CentOSKernelLinux

adachin

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

0件のコメント

コメントを残す

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