ホームページ >運用・保守 >Linuxの運用と保守 >Linuxの運用・保守を初心者から上級者へ進める方法

Linuxの運用・保守を初心者から上級者へ進める方法

步履不停
步履不停オリジナル
2019-06-18 18:15:002757ブラウズ

Linuxの運用・保守を初心者から上級者へ進める方法

運用および保守エンジニアは、初期段階では非常に大変な仕事をしており、この期間中に、コンピューターの修理、ネットワーク ケーブルの接続、機械の移動などの作業を行うことがあります。ステータスがないように見えます! 時間も非常に細分化されており、あらゆる種類の些細な事柄があなたの周りにあり、個人の価値を反映することが困難になります。徐々に業界について混乱し、発展の未来がないと感じます。

これらの退屈で退屈な仕事は確かに人々を飢えさせます。技術的な観点から見ると、これらは実際には基本的なスキルであり、後の運用保守作業に目に見えない形で役立ちます。なぜなら私もこれを経験したからです。深く理解して到着します。したがって、この期間中は前向きな姿勢を維持し、学習を継続する必要があります。いつか必ず報われると信じています!

さて、本題に入りますが、私の長年の運用保守業務の経験をもとに、上級運用保守エンジニア。

基礎

1. Linux の基本

最初は、Linux に精通している必要があります。 /Windows オペレーティング システムのインストール、ディレクトリ構造、起動プロセスなど

2. システム管理

主にLinuxシステムを学びますが、本番環境では基本的にキャラクターインターフェイス上での作業となるため、よく使われる数十の操作を習得する必要があります。基本的な管理コマンド。ユーザー管理、ディスク パーティショニング、ソフトウェア パッケージ管理、ファイル アクセス許可、テキスト処理、プロセス管理、パフォーマンス分析ツールなどが含まれます。

3. ネットワークの基本

OSI および TCP/IP モデルについてよく知っている必要があります。スイッチとルーターの基本概念と実装原則を理解しておく必要があります。

4. シェル スクリプト プログラミングの基礎

シェルの基本的な文法構造をマスターし、簡単なスクリプトを作成できるようにします。

中級

1. ネットワーク サービス

vsftp、nfs、sambaなど、最も一般的に使用されるネットワーク サービスをデプロイする必要があります。バインド、dhcp など

コードのバージョン管理システムは必須で、主流のSVNやGITを学び、簡単に導入・利用できるようになります。

サーバー間でデータを頻繁に転送するため、rsync と scp を使用できる必要があります。

データ同期: inotify/sersync。

一部のタスクを繰り返し完了するには、定期的に実行するスクリプトを作成できるため、Linux でスケジュールされたタスク サービス crond を構成できる必要があります。

2. Web サービス

基本的にどの企業でも Web サイトを持っていますが、Web サイトを運営するには Web サービス プラットフォームを構築する必要があります。

PHP 言語で開発する場合は、通常、LAMP および LNMP の Web サイト プラットフォームを構築します。これは専門用語を組み合わせた綴りです。個別に言うと、Apache、Nginx、MySQL、および PHP をデプロイできる必要があります。

JAVA 言語で開発されている場合、プロジェクトの実行には通常 Tomcat が使用されます。アクセス速度を向上させるために、Nginx リバース プロキシ Tomcat を使用できます。Nginx は静的ページを処理し、Tomcat は動的ページを処理して、動的と静的な分離。

導入ほど単純ではなく、HTTP プロトコルの仕組みや簡単なパフォーマンスの調整についても理解する必要があります。

3. データベース

データベースは、世界で最も広く使用されているオープン ソース データベースである MySQL です。それを学ぶのは正しいことです! また、いくつかの簡単な SQL ステートメント、ユーザー管理、一般的なストレージ エンジン、データベースのバックアップとリカバリについても知っておく必要があります。

さらに詳しく知りたい場合は、マスター/スレーブ レプリケーション、パフォーマンスの最適化、主流のクラスター ソリューション (MHA、MGR など) について知っておく必要があります。もちろん、NoSQL は非常に人気があるので、Redis と MongoDB を学習してください。

4. セキュリティ

セキュリティは非常に重要です。セキュリティ ポリシーを作成する前に、システムが侵入されるまで待ってはいけません。すでに手遅れです。したがって、サーバーがオンラインになる iptables を使用して信頼できるソース IP のみへのアクセスを制限したり、いくつかの役に立たないサービスやポートを閉じたりするなど、セキュリティ アクセス制御戦略を直ちに実装する必要があります。

一般的な攻撃の種類をいくつか知っておく必要があります。そうでない場合、適切な薬を処方することはできません!たとえば、CC、DDOS、ARP などです。

5. 監視システム

監視は不可欠であり、問​​題をタイムリーに発見して追跡するための命を救うストローです。機能が豊富で基本的な監視ニーズを満たすことができる、主流のオープンソース監視システム Zabbix を学習することもできます。監視ポイントには、基本的なサーバーリソース、インターフェースステータス、サービスパフォーマンス、PV/UV、ログなどが含まれます。

Grafana など、いくつかのリアルタイムの重要なデータを表示するダッシュボードを作成することもできます。これは非常に便利です。

6. 高度なシェル スクリプト プログラミング

シェル スクリプトは、Linux が作業を自動的に完了するための強力なツールです。熟達して作成する必要があるため、機能をさらに学習する必要があります。配列、シグナル、電子メールの送信など。

テキスト処理の三銃士 (grep、sed、awk) は 6 を実行する必要があります。Linux でのテキスト処理はこれらに依存します。

7. Python 開発の基本

シェル スクリプトは一部の基本的なタスクのみを完了できます。API の呼び出しやマルチプロセスなど、より複雑なタスクを完了したい場合は、等高級言語を学ぶ必要があります。

Python は、運用保守の分野で最もよく使われている言語です。シンプルで使いやすいので、ぜひ学習してください。この段階では、基本的な操作などの基本をマスターするだけで十分です。構文構造、ファイル オブジェクトの操作、関数、反復オブジェクト、例外処理、電子メールの送信、データベース プログラミングなど。

上級

1. Web 静的キャッシュ

ユーザーは、Web サイトへのアクセスが遅いと常に不満を抱いています。サーバーが適切かどうかを確認してください。リソースがまだ非常に少ないです。リッチ! Web サイトへのアクセスが遅いのは、サーバー リソースの飽和が原因ではない可能性があります。ネットワーク、転送レイヤーの数など、多くの影響要因が考えられます。

ネットワークに関しては、南北通信の問題があり、両者間のアクセスが遅くなりますが、CDN を利用することで静的ページをキャッシュし、最上位層でリクエストをできるだけ遮断することで解決できます。可能になり、バックエンドのリクエストと応答時間が短縮されます。

CDN を使用しない場合は、Squid、Varnish、Nginx などのキャッシュ サービスを使用して静的ページをキャッシュし、トラフィックの入り口に配置することもできます。

2. クラスター

結局のところ、単一サーバーではリソースが限られており、高トラフィックに耐えることができません。この問題を解決するための最も重要なテクノロジーは、ロード バランサーを使用することです。 . 複数のWebサーバーを水平展開して同時に外部にサービスを提供することで、パフォーマンスを2倍にします。ロード バランサの主流のオープン ソース テクノロジには、LVS、HAProxy、Nginx などがあります。必ず 1 つまたは 2 つを理解してください!

Web サーバーのパフォーマンスのボトルネックは解決されました。データベースの方が重要です。クラスターを使用する方がよいでしょう。私が学んだ MySQL を例に挙げると、マスター/マルチスレーブ アーキテクチャにすることができます。これについては、基本的に、読み取りと書き込みが分離されています。マスターが書き込みを担当し、複数のスレーブが読み取りを担当します。スレーブ ライブラリは水平に拡張でき、その前に 4 層のロード バランサがあり、数十のデータを運ぶことができます。数百万の PV。完璧です!

シングルポイント ツールを回避するには、高可用性ソフトウェアも必要です。主流のものには、Keepalived、Heartbeat などが含まれます。

ウェブサイトにはなぜこんなに写真がたくさんあるのでしょう! NFS 共有ストレージはサポートできず、処理が非常に遅いです。簡単に実行できます! 分散ファイル システムを使用し、タスクを並列処理し、単一ポイントを使用しません。高信頼性、高性能などの機能が主流。FastDFS、MFS、HDFS、Ceph、GFS などが含まれます。初期段階では、中小規模のプロジェクトのニーズを満たすことができる FastDFS を学習することをお勧めします。

3. 仮想化

ハードウェア サーバーのリソース使用率は非常に低く、無駄です!アイドル時間の多いサーバーを多数の仮想マシンに仮想化できます。各仮想マシンは完全なオペレーティング システムです。リソースの使用率は大幅に向上します。オープンソースの KVM OpenStack クラウド プラットフォームを学習することをお勧めします。

仮想マシンは基本的なプラットフォームとしては問題ありませんが、アプリケーション ビジネスの柔軟なスケーリングは重すぎます! 起動に数分かかり、ファイルが非常に大きいため、すぐに拡張するには手間がかかりすぎます。

簡単に言えば、コンテナーを使用します。コンテナーの主な機能は、迅速なデプロイメントと環境分離です。サービスはイメージにカプセル化されており、数分で数百のコンテナを作成できます。

主流のコンテナ技術は他でもない Docker です。

もちろん、本番環境のスタンドアロン Docker では、ほとんどの場合、ビジネス ニーズを満たすことができません。Kubernetes および Swarm クラスター管理コンテナーをデプロイして、大規模なリソース プールと集中管理を形成し、インフラストラクチャに強力なサポートを提供できます。 . .

4. 自動化

繰り返しの作業では効率が向上しないだけでなく、価値も反映されません。

環境のバージョン、ディレクトリ構造、オペレーティングシステムなどの統一など、すべての運用保守作業が標準化されています。標準化に基づいて、より多くの自動化を実現できます。複雑なタスクは、マウスをクリックするか、いくつかのコマンドを実行するだけで完了できます。とても爽快です。

したがって、すべての操作は次のように自動化する必要があります。ヒューマンエラーを可能な限り減らし、作業効率を向上させます。

主流のサーバー集中管理ツール: Ansible、Saltstack

これら 2 つのうちのいずれかを選択してください。

継続的統合ツール: Jenkins

5. 高度な Python 開発

Python 開発についてさらに学び、オブジェクト指向プログラミングをマスターできます。

主に運用保守管理システムを開発するには、Django や Flask などの Web フレームワーク開発 Web サイトを学習し、複雑な処理をプラットフォームに記述し、集中管理ツールを統合して、独自の管理プラットフォームを運用および保守します。

6. ログ分析システム

ログも非常に重要であり、定期的に分析することで潜在的なリスクを発見し、価値のあるものを抽出することができます。

オープンソース ログ システム: ELK

開発のためのログ表示要件を提供するために、ELK を展開して使用する方法を学びます。

7. パフォーマンスの最適化

導入だけでは不十分であり、パフォーマンスの最適化によりサービスの容量を最大化できます。

この分野も比較的難しく、高収入を得るための重要なポイントの 1 つでもあります。お金のために一生懸命勉強しなければなりません!

ハードウェア層から始めることができます。オペレーティング システム層、ソフトウェア層、アーキテクチャ 層の次元で考えます。

認識

1. 継続力

学習は、私たち一人ひとりが生涯を費やす必要がある非常に長いプロセスです。 . 持続するキャリア。

#最も重要なことは粘り強さです。困難は粘り強さにあり、成功は粘り強さにあります!

2. 目標

Linuxの運用・保守を初心者から上級者へ進める方法

Linuxの運用・保守を初心者から上級者へ進める方法

##目標がない場合、それは仕事とは呼ばれません。また、定量化されない場合、それは目標とは呼ばれません。

各段階で目標を設定します。

例: まずは達成できる小さな目標を設定し、1 億稼ぐ!

3. 共有

価値を共有することを学ぶテクノロジーは、知識を効果的に外の世界に伝達し、より多くの人に知ってもらうことができます。

みんなが何かを持ち寄れば、何が起こるか考えてください?

正しい方向に進めば、長い道のりを心配する必要はありません先へ!

Linux の 10 の常識

1. GNU と GPL

GNU プロジェクト (別名: GNU プロジェクト) Genu プロジェクトとして) リチャード ストールマンによって作成されました (フリー ソフトウェア コレクティブは、1983 年 9 月 27 日にリチャード ストールマンによって公的に設立されました。その目標は、完全に無料のオペレーティング システムを作成することです。 GNU は、フリー ソフトウェア エンジニアリング プロジェクトとしても知られています。

GPL とは、GNU General Public License (GPL) のことで、「反著作権」の概念であり、GNU プロトコルの 1 つであり、自由な使用、複製、研究、開発を保護することを目的としています。 GNU ソフトウェアの修正と公開。また、ソフトウェアはソースコードの形式でリリースする必要があります。

GNU システムと Linux カーネルを組み合わせて、完全なオペレーティング システム (Linux ベースの GNU システム) を形成します。このオペレーティング システムは通常、「GNU/Linux」または単に Linux と呼ばれます。

2. Linux ディストリビューション

典型的な Linux ディストリビューションには、Linux カーネル、一部の GNU プログラム ライブラリとツール、コマンド ライン シェル、グラフィカル インターフェイス X Window システム、および対応するデスクトップ環境が含まれます。 KDE や GNOME などのアプリケーションが含まれており、オフィス スイート、コンパイラ、テキスト エディタから科学ツールに至るまで、何千ものアプリケーションが含まれています。

メインストリーム ディストリビューション:

  • Red Hat Enterprise Linux、CentOS、SUSE、Ubuntu、Debian、Fedora、Gentoo

##3. Unix と Linux

Linux は Unix をベースにしており、Unix クラスに属しており、Uinx オペレーティング システムはマルチユーザー、マルチタスク、マルチスレッド、および複数の機能をサポートするオペレーティング システムをサポートしています。 CPU アーキテクチャ。 Linux は、Unix のネットワーク中心の設計哲学を継承しており、安定したパフォーマンスを備えたマルチユーザー ネットワーク オペレーティング システムです。

4. スワップ パーティション

スワップ パーティション、つまりスワップ領域で、物理メモリが不足した場合にシステムが Swap でスワップします。つまり、システムの物理メモリが十分ではない場合、ハードディスク内の領域の一部が、現在実行中のプログラムで使用するために解放されます。これらのプログラムを実行すると、保存されたデータがスワップ パーティションからメモリに復元されます。メモリ空間が解放されるプログラムは、通常、長期間動作しなかったプログラムです。

スワップ領域は、通常、物理メモリのサイズ以上である必要があり、同時に、最小値は 64M 未満であってはならず、最大値は物理メモリの 2 倍である必要があります。

5. GRUBの概念

GNU GRUB (「GRUB」と呼ばれるGRand Unified Bootloader)は、GNUプロジェクトのマルチオペレーティングシステムブート管理プログラムです。 。

GRUB は、複数のオペレーティング システムをサポートするブート マネージャーです。複数のオペレーティング システムを搭載したコンピューターでは、GRUB を使用して、ユーザーがコンピューターの起動時に実行するオペレーティング システムを選択できます。同時に、GRUB は Linux システム パーティション上でさまざまなカーネルを起動でき、シングル ユーザー モードに入るなどの起動パラメータをカーネルに渡すために使用することもできます。

6. バッファとキャッシュ

キャッシュ(cache)はCPUとメモリの間にある一時的なメモリで、キャッシュ容量はメモリに比べて非常に小さいですが、交換速度はメモリよりも速く、はるかに高速です。キャッシュは、ファイル データ ブロックをキャッシュすることで CPU の動作速度とメモリの読み書き速度との矛盾を解決し、CPU とメモリ間のデータ交換速度を向上させます。 Cache キャッシュが大きいほど、CPU の処理速度が速くなります。

バッファ (バッファ) キャッシュ メモリは、ディスク (I/O デバイス) データをキャッシュすることで、ディスク上のデータへのアクセスを高速化し、I/O を削減し、メモリとハードディスク (または他の I/O デバイス) を改善します。ブロック。)。バッファがディスクに書き込まれようとしており、キャッシュがディスクから読み取られます。

7. TCP スリーウェイ ハンドシェイク

  • (1) 要求側は SYN (SYN=A) データ パケットを送信し、待機します。応答側からの確認

  • #(2) 応答側は SYN を受信し、SYN(A 1) と自身の ACK(K) パケットを要求側に返します

  • ##(3) 要求側は、応答側から SYN ACK パケットを受信し、再度確認パケット ACK (K 1) を応答側に送信します。エンドと応答側は TCP 接続を確立し、3 ウェイ ハンドシェイクを完了して、データ送信を開始します。
  • 8. Linux システムのディレクトリ構造

Linux ファイル システムは、リンクを含むツリー ディレクトリ構造を採用しています。つまり、ルート ディレクトリは 1 つだけです (通常は " で表されます)。 /")。これには、下位レベルのサブディレクトリまたはファイルに関する情報が含まれます。サブディレクトリには、下位レベルのサブディレクトリまたはファイルに関する情報も含まれる場合があります。

/: 最初の階層構造のルート、ファイル システム階層全体のルート ディレクトリ。つまり、ファイルシステムへの入り口、最上位のディレクトリです。

    /boot: Linux カーネルとシステム ブート プログラム (カーネルや initrd など) に必要なファイルが含まれており、grub システム ブート マネージャーもこのディレクトリにあります。
  • /bin: 基本システムに必要なコマンドは「/usr/bin」と同様の機能を持ち、このディレクトリ内のファイルは全て実行可能であり、一般ユーザーでも実行可能です。
  • /sbin: スーパー ユーザーのみが使用できる基本的なシステム メンテナンス コマンド。
  • /etc: すべてのシステム構成ファイル。
  • /dev: 端末、ディスク、光学ドライブなどのデバイス ファイル ストレージ ディレクトリ。
  • /var: ログや電子メールなど、頻繁に変更されるデータを保存します。

  • /home: 一般ユーザーのデフォルトの保存ディレクトリ。

  • /opt: サードパーティ ソフトウェアの保存ディレクトリ。たとえば、ユーザー定義のソフトウェア パッケージやコンパイルされたソフトウェア パッケージは、このディレクトリにインストールされます。

  • /lib: システム プログラムに必要なすべての共有ライブラリ ファイルを含む、ライブラリ ファイルとカーネル モジュールが保存されるディレクトリ。

9. ハード リンクとソフト リンク

ハード リンク: ハード リンクは、同じインデックス ノード (inode 番号) リンクを使用します。複数のファイル名が同じファイル インデックス ノードを指すようにすることができます (ハード リンクはディレクトリ リンクをサポートしておらず、パーティション リンクをまたぐことはできません)。ハード リンクを削除しても、インデックス ノードのソース ファイルとその下の複数のファイルには影響しません。リンク。

ln source new-link

ソフト リンク (シンボリック リンク): シンボリック リンクは、Windows のショートカットに似た、パスの形式で作成されるリンクです。シンボリック リンクを使用すると、同じソース ファイルにリンクされた複数のファイル名を作成できます。ソース ファイルが削除されると、その下にあるすべてのソフト リンクが使用できなくなります。 (ソフト リンクは、ディレクトリ、パーティション間、およびファイル システム間をサポ​​ートします)

ln -s source new-link

10. RAID テクノロジー

ディスク アレイ (独立したディスクの冗長アレイ、RAID)、安価な冗長 (独立した) ディスク アレイ。

RAID は、複数の独立した物理ハードディスクをさまざまな方法で組み合わせてハードディスク グループ (論理ハードディスク) を形成するテクノロジーで、単一のハードディスクよりも高いストレージ パフォーマンスとデータ バックアップを実現します。 RAID テクノロジは、複数のディスクを論理ボリュームとして結合してディスク スパン機能を提供し、データを複数のデータ ブロック (ブロック) に分割し、複数のディスクを並行して書き込み/読み取りしてディスク アクセスの速度を向上させ、ミラーリングまたは動作の検証を行うことができます。耐障害性を提供​​します。特定の機能は、さまざまな RAID の組み合わせで実装されます。

ユーザーの観点から見ると、RAID で構成されたディスク グループはハードディスクのようなもので、パーティション分割、フォーマットなどの操作が可能です。 RAID のストレージ速度は単一のハードディスクよりもはるかに高速であり、自動データ バックアップと優れた耐障害性を実現できます。

RAID レベル、さまざまな RAID の組み合わせはさまざまな RAID レベルに分割されます:

RAID 0: ストリッピング ストライプ ストレージ テクノロジと呼ばれ、すべてのディスクが完全に並行して読み書きされます。最も単純です。ディスク アレイをセットアップする形式です。2 台以上のハードディスクのみが必要です。低コストで、ディスク全体のパフォーマンスとスループットを提供できます。ただし、RAID 0 はデータの冗長性とエラー修復機能を提供していないため、単一のハードドライブが損傷すると、すべてのデータが失われます。 (RAID 0 は、データの信頼性を保証せず、単にディスク容量とパフォーマンスを向上させるだけであり、高度なデータ セキュリティを必要としない環境に適しています)

RAID 1: 2 つのディスクを組み合わせたミラー ストレージ 1 つのディスクのデータデータの冗長性を実現するために別のディスクにミラーリングされ、2 つのディスク上に相互のバックアップ データが生成されます。その容量は 1 つのディスクの容量のみとなります。データが 1 つのディスクに書き込まれると、パフォーマンスに影響を与えることなくシステムの信頼性と修復可能性を最大化するために、アイドル状態の別のディスクにミラーが作成されます。元のデータがビジー状態の場合は、ミラーからデータを直接コピーできます ( 2 台のハード ドライブのうち高速な方)を使用して、読み取りパフォーマンスを向上させます。逆に、RAID 1 は書き込み速度が遅くなります。 RAID 1 は通常、「ホット スワップ」をサポートしています。つまり、システムの実行中にシステムを中断することなく、アレイ内のハードディスクの取り外しまたは交換を実行できます。 RAID 1 は、ディスク アレイ内のハードディスクの単価が最も高くなりますが、高いデータ セキュリティ、信頼性、可用性を提供します。ハードディスクに障害が発生した場合、システムは再構成することなく、読み取りと書き込みのために自動的にミラー ディスクに切り替えることができます。失敗もデータも。

RAID 0 1: RAID 10 とも呼ばれ、実際には RAID 0 と RAID 1 を組み合わせたもので、データをビットまたはバイト単位で継続的に分割し、複数のディスクを並行して読み取り/書き込みします。同時に、各ディスクは冗長性のためにミラーリングされます。 RAID 0 と 1 の組み合わせにより、データが複数のディスクに分散されるだけでなく、各ディスクに独自の物理ミラー ディスクがあり、冗長機能が提供され、データの可用性に影響を与えることなく 1 つ以上のディスク障害が発生しても許容され、高速な読み取り/書き込み速度が実現します。 . 文章力。 RAID 0 1 では、ディスク イメージにストライプ セットを作成するには、少なくとも 4 台のハード ドライブが必要です。 RAID 0 1 テクノロジーは、高いデータ信頼性を保証するだけでなく、データの読み取り/書き込みの高い効率も保証します。

RAID 5: ストレージ パフォーマンス、データ セキュリティ、ストレージ コストを考慮したストレージ ソリューションです。 RAID 5 は、RAID 0 と RAID 1 の間の妥協点として理解できます。RAID 5 には、少なくとも 3 台のハード ドライブが必要です。 RAID 5 はシステムにデータ セキュリティを提供できますが、保護の程度はミラーリングよりも低く、ディスク領域の使用率はミラーリングよりも高くなります。 RAID 5 のデータ読み取り速度は RAID 0 と同様ですが、追加のパリティ チェック情報があり、データの書き込み速度は単一のディスクに書き込むよりもわずかに遅くなります。同時に、RAID 5 は 1 つのパリティ情報に複数のデータが対応するため、RAID 1 よりもディスク領域の使用率が高く、ストレージコストが比較的低く、現在広く使用されているソリューションです。

Linux 関連の技術記事をさらに詳しく知りたい場合は、Linux チュートリアル 列にアクセスして学習してください。

以上がLinuxの運用・保守を初心者から上級者へ進める方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。