てるてるぼうず tech pot

この記事の内容は私個人の主観であり、所属する組織とは関係がありません。続けられるように頑張りマス。

学習メモ:[改訂新版]プロのためのLinuxシステム構築・運用技術 第1章 Linuxサーバの構築

第1章 Linuxサーバーの構築

1.1 サーバーハードウェア

 世の中に数多あるハードウェアをOSで制御するために、抽象化層を通してハードウェアをOSの同じコマンドで操作できるようにしています。その際、OSがハードウェア側にインターフェースを公開しハードウェアがそれに適応するデバイスドライバーをカーネルに組み込むようにしています。
 サーバー起動の仕組みですが、電源投入後マザーボード等に搭載されたチップ上でシステムBIOS/UEFIが動作を始め、下記図にしるしたようにブートストラップローダーやブートローダ等を介してRAMディスクに書き込まれたカーネルの起動を開始します。

f:id:teruterubohz:20200522160139j:plain
カーネル起動の流れ

 ここで、システムBIOS(Basic Input Output System)とUEFI(Unified Extensible Firmware Interface)の違いについて。
 両方ともOSを起動するためのブートローダーを読み込む処理を実施しますが、システムBIOSは起動ディスクの先頭部分にあるブートストラップローダーを読み込み、そこを介してブートローダー(GRUB2)を起動します。一方ÙEFIは、「EFI System partition」に保存してあるブートローダーを直接起動します。 昔から使われていたBIOSは起動ディスクの容量制限(約 2TB)等、技術進歩についていけなくなりUEFIにとって代わられるようになりました。

1.2 Linuxの導入作業

 導入準備として、まずサーバーベンダーから提供されるサポート対象を確認します。何かあった場合、サポート対象外だと「サポート対象外のため対応不可」となってしまう可能性があります。その後、インストールディスクのパーティションについて以下を踏まえ検討します。

パーティション 説明 REHL7推奨サイズ
ブートバーティション 「/boot」ディレクトリー 500MB
ルートパーティション 「/」ディレクトリー 10GB
swapバーティション swap領域
kdumpパーティション kdumpのダンプファイル出力先 物理メモリーの2倍
ホームバーティション 「/home」ディレクト 任意
データ用パーティション アプリケーションのデータ領域 保存するデータ量の上限値見積。
LVM(Logical Volume Manager)を使って後からサイズを拡張可としておく

※REHL7のswap領域推奨サイズ

システムの物理メモリ― 推奨サイズ
2GB以下 「物理メモリ―の2倍
2GB-8GB 物理メモリ―と同じ
8GB -64GB 物理メモリ―の半分
64GB以上 利用用途による

 上記設計を行い実際にLinuxのインストールを開始します。先のシステムBIOS/UEFI等の初期設定(なるべくデフォルト設定がよさそう)後、インストールメニュー画面の「インストール先」(INSTRALLATION DESTINATION)を選択してから検討したパーティション構成を行ってください。

f:id:teruterubohz:20200522213751j:plain

1.3 導入後の基本設計作業

RHELインストール後の基本設定作業を以下順に示します。

項番 実施作業 説明 コマンド
1 Red Hat Network に登録 リポジトリーから最新のRPMパッケージを入手できるようにする # subscription-manager register
# subscription-manager list --available
# subscription-manager attach --pool=<確認したID>
2 インストール済みパッケージのアップデート RPMパッケージの追加やアップデート # yum update
3 リポジトリーに保存されているパッケージのアップデート パッケージのバージョン番号を確認し、目的のバージョンを指定してアップデート # yum --showduplicate list kernel
# yum update <目的のバージョン番号>
4 デバイスドライバ追加 サーバーベンダー提供のデバイスドライバを入手 導入手順はサーバーベンダーの提供手順に従う
5 ログインユーザー作成 ログインするための個人アカウントを作成 # user add <ユーザ名>
# passwd <パスワード>
6 wheelグループへの追加 先に作成したユーザーをwheelグループに追加します # usermod -G wheel <ユーザ名>
# id <ユーザ名>
7 sshdサービス再起動 rootユーザーで直接ログインすることを禁止します 「PermitRootLogin no」を/etc/ssh/sshd_configに追加
8 firewallサービス停止&iptablesサービス起動 レガシーサービスを使う # systemctl stop firewalld.service
# systemctl mask firewalld.service
# yum install iptables-services
# systemctl enable iptables.service
# systemctl start iptables.service
/etc/sysconfig/iptables修正
systemctl restart iptables.service

※3の後、以下のようにすることでカーネルをアップデートの対象から除外します。

 \#  yum update --exclude=kernel 

よく利用するyumコマンド

コマンド 説明
# yum clean all パッケージとリポジトリー情報のキャッシュを削除
# yum list すべてのパッケージを表示
# yum list installed 導入済みのパッケージを表示
# yum search <キーワード> リポジトリ―内のパッケージを検索
# yum info <パッケージ名> パッケージの情報を表示
# yum install <パッケージ名> パッケージを導入
# yum remove <パッケージ名> 導入済みのパッケージを削除
# yum check-update アップデート可能なパッケージの確認
# yum update <パッケージ名> 特定のパッケージをアップデート
# yum update すべてのパッケージをアップデート

また、インターネットに接続できない状況ではインストールメディアを以下のコマンドでマウントします。

 \# mkdir /mnt/rhel72 </br>
 \# mount /dev/cdrom /mnt/rhel72

次にリポジトリ―設定ファイルを以下のように作成します。

[rhel72_dvd]
name=RHEL7.2 DVD
baseurl=file:///mnt/rhel72
enabled=1
gpgcheck=1
gpgkey=file:///mnt/rhel72/RPM-GPG-KEY-redhat-release

最後にこのファイルを以下のコマンドで実行します。

 \# yum update kernel-3.10.0-327.4.4.e17.x86_64.rpm

1.4 キックスタートによる自動インストール

 OSインストールの方式にはディスクイメージを複製・配布する方法もありますが、イメージをWebサーバーに配置し、ネットワークを介してインストールできる仕組みをキックスタートと呼ばれる標準機能として提供しています。