RHEL7の基本操作

Linux

Red Hat Enterprise Linux 7(RHEL7)からは、従来までのRed Hat Enterprise Linux 6(RHEL6)までと比べて、相違点が沢山あります。

中でもネットワーク関連のコマンドについては大きな違いがあります。

スポンサーリンク

Linuxサーバ(RHEL7)のネットワーク設定

IPアドレスを確認するコマンドです。[ifconfig]の代替コマンドです。

ip a

ルーティングテーブルを確認するコマンドです。[netstat -r]、[route]の代替コマンドです。

ip r

開放ポートなどを確認するコマンドです。[netstat]の代替コマンドです。

ss

 

ネットワークデバイスのステータス/設定を確認(GUIから対話式に設定)
※IPアドレス、デフォルトGW、DNSサーバ、起動時の有効化などが設定可能。


nmtui

ネットワークデバイスのステータス/設定を確認(CUIからコマンドにより設定)


nmcli device status
nmcli con show ens33

IPアドレスの設定


nmcli c mod ensXX ipv4.addresses 0.0.0.0/24

デフォルトゲートウェイの設定


nmcli c mod ensXX ipv4.dateway 0.0.0.0

IPアドレスとデフォルトゲートウェイの設定


nmcli c mod ensXX ipv4.method manual ipv4.addresses "0.0.0.0/24 0.0.0.0"

DNSサーバの設定


nmcli c mod ensXX ipv4.dns 0.0.0.0

ネットワークの接続を有効化/無効化
※/etc/sysconfig/network-scripts/ifcfg-ensXXの”ONBOOT”のパラメータ(yes/no)が書き換えられます。


nmcli c mod ensXX connection.autoconnect yes
nmcli c mod ensXX connection.autoconnect no

インタフェースの接続/切断


nmcli connection up ensXX
nmcli connection down ensXX

デバイスの確認
※インタフェースが無効化でもデバイスは表示されます。


nmcli d
nmcli c

IPアドレスを手動設定/自動設定(DHCP)に設定する


nmcli c modify ensXX ipv4.method manual
nmcli c modify ensXX ipv4.method auto

ネットワークの再起動


systemctl restart network

ネットワーク設定のために参考にしたサイト

https://server.etutsplus.com/centos-7-network-configuration
CentOS 7のネットワーク管理基礎(前編)
この連載が、書籍『CentOS 7 実践ガイド』になりました!IT技術者のための現場ノウハウ CentOS 7 実践ガイドCentOS 7を取り巻く市場動向、サーバーシステムの選定、システム設計、構築手順など今回は、CentOS 7のネットワーク設定について取り上げます。新しい設定ツールの登場や、従
CentOS 7 で ネットワーク(IPアドレス、ホスト名、ドメイン名など)の設定を行う | レンタルサーバー・自宅サーバー設定・構築のヒント
CentOS (RHEL Redhat Enterprise Linux) にProxyの設定をする(http,https) - Qiita
CentOS (RHEL) にProxyの設定をするには(http,https) /etc/profile を開く # vi /etc/profile 以下の行を追記 PROXY='proxy.server.path...
スポンサーリンク

Linuxサーバ(RHEL7)を構築する時に最低限設定している項目

RHEL7設計、構築時は、最低限、以下の設定項目を確認しています。

内容設定箇所内容
Subscription Managersubscription-managerコマンドrhelのライセンス認証
yum/etc/yum.conf接続用プロキシの指定、自動更新除外の設定
サービスステイタスsystemctlコマンドOS起動時にサービス起動するか
シェル設定/etc/profile.d/プロンプト表示、記録履歴
firewalldfirewall-cmdコマンドファイアウォール設定
rsyslog/etc/rsyslog.confログ出力設定、転送設定
journal/etc/systemd/jounald.confログ出力設定
logrotate/etc/logrotate.confログローテーション
chrony/etc/chronyd.conf時刻同期

 

subscription-managerによるライセンス認証


# 対象端末のサブスクリプション情報を確認する
subscription-manager list
# 対象の端末をRHNに登録する ※対話式でアカウント名とパスワードを入力する
subscription-manager register
# プールIDを確認
subscription-manager list --available
# サブスクリプションのアタッチ
subscription-manager subscribe --pool=____________
# サブスクリプションの全てのアタッチを解除
subscription-manager unsubscribe --all

※サブスクリプションのアタッチの解除はRHELの公式サイト(WEBページ)からも可能です。

オフラインシステムの登録

ネットワーク環境に問題がある場合はオフラインシステムの登録によりライセンス認証を実施します。

  1. 公式ページへアクセス(https://access.redhat.com/management/systems)
  2. [新規作成]ボタンよりシステムプロファイルを新規作成する
  3. 作成したシステムプロファイルのサブスクリプションをアタッチする
  4. [証明書をダウンロード]ボタンよりエンタイトルメント証明書(zipファイル)を取得する
  5. エンタイトルメント証明書(zipファイル)を展開し[/export/entitlement_certificates/***.pem]を入手する
  6. 展開した証明書(pemファイル)を該当サーバの任意のディレクトリに保管し、[subscription-manager]コマンドを実行する

# オフラインシステムの登録
subscription-manager import --certificate=/tmp/Name_Of_Downloaded_Entitlement_Cert.pem
2.4. オフラインシステムの登録 Red Hat サブスクリプション管理 1 | Red Hat Customer Portal
The Red Hat Customer Portal delivers the knowledge, expertise, and guidance available through your Red Hat subscription.

パッケージ管理

rpmnewとrpmsave

[yum update]を実行すると以下のファイルが自動作成されることがあります。

  • *.rpmnew
    • 既存ファイルを上書きしないために作成された新しい設定ファイル
  • *.rpmsave
    • 新しい設定ファイルにより上書きされないための既存の設定ファイル

アップデート後に不具合が発生した場合は、[*.rpmnew]および[*.rpmsave]を確認し、適切に修正する必要があります。


# ファイル名の末尾が[rpmnew]または[rpmsave]のものを探す
find / -print | egrep "rpmnew$|rpmsave$"
# アップデートの前後で変更内容を比較する
diff -U0 httpd.conf httpd.conf.rpmnew
diff -U0 httpd.conf httpd.conf.rpmsave
CentOS7でパッケージアップデート後にrpmnew、rpmsaveファイルができたときは
CentOS7でパッケージをアップデートしたときに「.rpmnew」ファイルや「.rpmsave」ファイルが作成されることがあります。パッケージをアップデートした時に設定ファイルなどが更新され、これらのファイルができたときは、既存の設定ファ

リポジトリの追加(PHP7のインストール)

RHEL7/CentOS7の標準リポジトリにはPHP5までしか含まれていないため、PHP7をインストールするにはREMIパッケージが必要となります。※remi-php71など。

ただし、RemiリポジトリのようにRHEL7/CentOS7の標準リポジトリで提供されていないパッケージ(リポジトリ)をインストールする場合、まず、拡張版リポジトリであるEPEL(Extra Packages for Enterprise Linux)リポジトリなどを追加でインストールする必要があります。

EPELリポジトリがインストールできていない状態でREMIリポジトリをインストールしようとすると、依存関係の問題(依存性の欠如)でエラーになります。


# wgetコマンドにより[.rpm]ファイルをダウンロードし、rpmコマンドによりインストール
wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm   
rpm -ivh epel-release-7-12.noarch.rpm   

# rpmコマンドにより直接インストール
rpm -ivh https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm   

# yumコマンドにより標準リポジトリから直接インストールも可能
yum install epel-release

※ダウンロード元のディレクトリ構造はFedora Projectのサイトより適切なバージョンを確認する

Index of /pub

EPELリポジトリをインストールしたら、次にREMIパッケージをインストールし、その後、PHP7をインストールします。


yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum install php

リポジトリの有効化/無効化の切替

拡張リポジトリはデフォルトでは有効化されています。有効化/無効化を切り替えるには以下のファイルを修正する必要があります。

  • ファイル名
    • /etc/yum.repos.d/epel.repo
  • 修正前(有効化)
    • enabled=1
  • 修正後(無効化)
    • enabled=0

epel.repoファイルを修正するには以下の方法があります。

  • epel.repoファイルを直接編集する
    • viエディタによる編集
    • sedコマンドによる編集
  • yum-config-managerにより指定する

なお、CentOS7でyum-config-managerを利用するには、予め、yum-utilsパッケージをインストールする必要があります。


# sedコマンドによる編集
sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/epel.repo

# yum-utilsをインストール
yum install yum-utils
# 有効化または無効化の切替え
yum-config-manager --enable remi-php70
yum-config-manager --disable remi-php70

ログ管理

ログ収集はjournaldとrsyslogdにより管理されています。

  • 各プロセスの標準出力/標準エラー出力はjournaldによってジャーナルに書き出される
  • ジャーナルを参照するにはjournalctlコマンドを使う
  • ジャーナルの情報は再起動により消去される
  • 恒久的にログを保存するためにrsyslogによるファイル出力が必要になる
  • loggerコマンドにより任意のログを出力できる
コラム - クラウド時代のオープンソース実践活用 | 第56回 RHEL7/CentOS7のjournaldでシステムログを一元管理|CTC教育サービス 研修/トレーニング
はじめに  RHEL7/CentOS7が公開されて数ヶ月が過ぎま&#...

rsyslogの設定

デフォルトのrsyslog.confは以下の通りです。行数が多いため[egrep]コマンドでコメント行と空行を非表示としています。


 cat /etc/rsyslog.conf | egrep -v '^#|^$'
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 :omusrmsg:*
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log
local4.*                                                /var/log/slapd

基本的には、FACILITY(ファシリティ)とPRIORITY(優先度)により制御されますが、プロパティベースおよびフィルタリングベースの制御も可能です。

プロパティ名説明
msg出力されたログ
hostname出力元のホスト名
fromhost-ip出力元のIPアドレス
programname出力元のプログラム
syslogfacility-text出力されたログのFacility
pri出力されたログのPriority
条件キーワード説明
contains指定した値を含むログ
isequal指定した値と一致するログ
startswith指定した値が先頭に含まれるログ
regex指定した正規表現と一致するログ

その他の補足事項は以下の通りです。

  • ログを二重で取得することを防ぐには次行に”$ ~”を追記する
  • ログファイル名の前に”-“を指定すると非同期でログを出力するためパフォーマンスが向上する

logrotate設定

主に以下の関連ファイルがあります。

  • /etc/logrotate.conf…設定ファイル(メイン)
  • /etc/logrotate.d/*…設定ファイル(個別設定)
  • /var/lib/logrotate/logrotate.status…来週ローテーション日時が記載
項目説明
daily日時ローテーション
weekly週時ローテーション
monthly月時ローテーション
routeteローテーション世代指定
missingokログファイルが存在しなくてもエラーとしない
notifemptyログファイルが空ならローテーションしない
ifemptyログファイルが空でもローテーションする
compress圧縮する
sharedscripts指定ログファイルに対してpostrotateまたはprerotateを実行させる
postrotate~endscriptローテーション後のコマンドを指定する
prerotate~endscriptローテーション前のコマンドを指定する
dateformatデータフォーマットを任意の形式に指定

cat /etc/logrotate.conf 
# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# use date as a suffix of the rotated file
dateext

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
    monthly
    create 0664 root utmp
        minsize 1M
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

# system-specific logs may be also be configured here.

cat /etc/logrotate.d/syslog 
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    missingok
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

logrotateはデーモンが存在しないため、crondによって実行されます。

RHEL6以降は多数のゲストOSを搭載した仮想環境上での運用を想定し、同じ時刻に一斉にログローテーションが実行されない仕様になっています。

anacronの設定内容によりログローテーションを実行することで複数サーバ間で実行時間(ランダム時間)をずらすことでリソースの負荷が集中することを防ぎます。

cronとanacron

crondにより実行されるcronには主に以下の3種類に分けられます。

  • /var/spool/cron/*…各ユーザごとに設定可(crontabコマンド)
  • /etc/crontab、/etc/cron.d/*…システム全体に影響
  • anacrontab…システム全体に影響

タスク実行時間にOS(またはcrond)が停止していた場合、cronではタスクの再実行を実施しませんが、anacronではOS(またはcrond)起動後に再実行が可能です。

一方、cronでは同一タスクを1日に複数回実行できますが、anacronでは同一タスクを1日複数回のタスク実行はできません。

anacronによりlogrotateが実行されるまでの流れは以下の通りです。

  1. crondが1秒毎に以下のcronジョブを実行する
    • /var/spool/cron/アカウト名(crontab -l)
    • /etc/crontab
    • /etc/cron.d/0hourly
  2. /etc/cron.d/0hourlyにより毎時1分に/etc/cron.hourly配下全スクリプトが実行される
    • /etc/cron.hourly/0anacronが実行される
  3. /etc/cron.hourly/0anacronによりanacronが実行される
  4. anacronにより/etc/cron.daily配下の全スクリプトが実行される
    • /etc/cron.daily/logrotateが実行される

# /etc/cron.d/配下の0hourlyが実行される
cat /etc/cron.d/0hourly 
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly

# /etc/cron.hourly/配下の0anacronが実行される
cat /etc/cron.hourly/0anacron 
#!/bin/sh
# Check whether 0anacron was run today already
if test -r /var/spool/anacron/cron.daily; then
    day=`cat /var/spool/anacron/cron.daily`
fi
if [ `date +%Y%m%d` = "$day" ]; then
    exit 0;
fi

# Do not run jobs when on battery power
if test -x /usr/bin/on_ac_power; then
    /usr/bin/on_ac_power >/dev/null 2>&1
    if test $? -eq 1; then
    exit 0
    fi
fi
/usr/sbin/anacron -s

# anacronが実行される
cat /etc/anacrontab 
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

# /etc/cron.daily/配下のlogrotate が実行される
 cat /etc/cron.daily/logrotate 
#!/bin/sh

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

以下のサイトが参考になりました。

CentOS7でジョブを定期実行する方法(anacronとcron)
CentOS7でジョブ(スクリプト)を定期的に実行する時に利用されるのが「anacron」です。CentOS5までは「cron」でしたが、CentOS6以降からは「anacron」が採用されています。ここでは、「cron」と「anacron
Cron と Anacron の違い - インフラまわりのプロになりたい
インフラ仕事のメモ書きでございます。
スポンサーリンク

基本的なコマンド

ファイルの内容を出力⇒バッククォートで(`)で囲みecho出力


echo `cat test2.txt`

重複行と空行を削除し、別ファイルにリダイレクトする


sort test1.txt | uniq | grep -v '^\s*$' > test2.txt

ファイルの行数を変数に格納


変数名=`wc -l test1.txt | cut -d ' ' -f1`

変数の値を標準出力


printf "変数の値は${変数名}です。\n"

タブを出力


echo $'\t'
echo test$'\t'test

プロンプトの表示に日付を追加


PS1='[\u@\h:\w \D{%F %T}]\$ '

ヒストリーコマンドに日付を追加


HISTTIMEFORMAT='%Y-%m-%d %T '

マッチする部分のみを表示する


grep -o

1列目のみを表示


awk '{print $1}'

行末の改行を行わない


echo -n

再帰的に階層の深いディレクトリを作成する


mkdir -p /dir1/dir2/dir3

2つのファイルを左右に列に並べて比較する


diff -ywB test01.txt test01.txt

変数に格納したコマンドを実行するコマンド


eval ${cmd}

findコマンドで抽出したファイルを削除する


find . -name "*.rb" -type f | xargs rm

findコマンドで抽出したファイルのパーミッションを変更する


find . -name "*.rb" -type f -exec chmod 600 () ¥;

プロキシサーバの設定


# profileを編集し以下の5行を追加する
vi /etc/profile
PROXY='プロキシサーバ:8080'
export http_proxy=$PROXY
export HTTP_PROXY=$PROXY
export https_proxy=$PROXY
export HTTPS_PROXY=$PROXY
# 設定を反映
source /etc/profile

mountコマンド(ISOファイルをマウントする)

オプション内容
-a/etc/fstabに記載されているファイルシステムをマウント
-tマウントするファイルシステムのタイプを指定
-r読み取り専用でマウント
-w書き込み可能でマウント

# UUIDとマウント先のパーティションを確認
cat /etc/fstab
# UUIDに対応するデバイスのディスクパーティションを確認
blkid
# ISOファイルをマウントする
mount -r -t iso9660 /dev/cdrom /mnt/cdrom
# マウント状態を確認
df
# ISOファイルをアンマウント
umount /mnt/cdrom

時刻同期

NTPサーバとの時刻同期の確認


# 時刻同期状況の確認(同期候補のNTPサーバ一覧)
chronyc sources
# 時刻設定の確認
timedatectl
スポンサーリンク

LVMとファイルシステムについて

LVM(Logical Volume Manager)とは

LVMを利用すると複数のHDDやパーティションにまたがった記憶領域を一つのボリュームグループにまとめて単一の論理ボリュームとして扱うことができます。

OSのインストール後にもパーティション構成の拡大や縮小が行えます。

LVMおよびその他に関連する基本用語

項目説明
物理ボリューム(PV)物理的なパーティションをLVM用のパーティション(物理ボリューム)に変換する
ボリュームグループ(VG)一つ以上のブル地ボリュームをまとめてプール化し物理エクステントとして論理ボリュームに割り当てる
論理ボリューム(LV)ボリュームグループともとに作成した論理ボリューム上にファイルシステムを作成しマウントする
物理エクステント(PE)LVMの扱うデータの最小単位
XFSファイルシステムRHEL7のデフォルトファイルシステム、最大ファイルサイズ/最大ボリュームサイズは500TiB

LVMおよびその他に関連するコマンド・ファイル

fdiskパーティションの作成/削除/システムタイプの変更/パーティションテーブルの書き込み
/etc/fstabOS起動時に自動でマウントする情報を記載したファイル
lsblkブロックデバイス情報を一覧表示(HDDに新規パーティションを作成するための残容量があるか確認)
blkidデバイスとUUIDの関連付け
lvmdiskscanLVM情報の表示
pvs / pvscan / pvdisply物理ボリューム情報の表示
vgs / vgscan / vgdisplyボリュームグループ情報の表示
lvs / lvscan / vldisply論理ボリューム情報の表示

LVMの注意点

XFSでは論理ボリュームの縮小ができないためパーティションサイズを縮小するには論理ボリュームの削除および再作成が必要になる。
ブートローダはLVMボリュームを読み込むことができないため/bootパーティションは標準パーティションになる。

LVMを利用するケース【HDDを追加して既存パーティション(/var)拡張する】

 


# HDDの空き容量に新規標準パーティションを作成しシステムタイプ(LVM:8e)を変更
fdisk /dev/sda
# パーティション追加を反映するためにOS再起動
reboot
# 新規パーティションをもとに物理ボリュームを作成
pvcreate /dev/sda3
# 物理ボリュームを既存のボリュームグループに統合
vgextend VolGroup /dev/sda3
# 論理ボリュームを拡張(最大サイズで拡張する場合)
lvextend -l +100%FREE /dev/VolGroup/var
# 論理ボリュームを拡張(サイズしていで拡張する場合)
lvextend -l L+5G /dev/VolGroup/var
# 拡張した論理ボリューム上のファイルシステムのサイズを拡張
xfs_growfs /var

LVMを利用するケース【既存パーティション(/home)の縮小】

 


# xfsdumpのインストール
yum install xfsdump
# psmiscパッケージをインストール(fuserコマンド利用のため)
yum install psmisc
# homeのダンプファイル(home.dump)を作成
cd /work
xfsdump -j -L home -M drive -f home.dump /home
# homeパーティションをアンマウント
umount /dev/VolGroup/home
# アンマウントが失敗した場合は依存プロセスを停止(killコマンドによる停止)
fuser -va /dev/VolGroup/home
kill XXXX
# アンマウントが失敗した場合は依存プロセスを停止(fuserコマンドによる停止)
fuser -km /dev/VolGroup/home
# 論理ボリューム(homeパーティション)の利用停止(非アクティブ化)および削除
lvchange -an /dev/VolGroup/home
lvmore /dev/VolGroup/home
# 論理ボリューム(homeパーティション)を再作成(新規作成)
lvcreate -L 500M -n home VolGroup
# 論理ボリュームにファイルシステムを新規作成しマウント
mkfs.xfs /dev/VolGroup/home
mount /dev/VolGroup/home /home
homeのダンプファイル(home.dump)のリストあ
cd /work
xfsrestore -J -L home -f home.dump /home
# OS再起動時に自動的にマウントするように設定
vi /etc/fstab

LVMの参考サイト

LVMで 論理ボリュームの作成、拡張、縮小、複製 - Qiita
前の記事 LVM 概要 構成概要 複数の物理ボリュームがあり、その上に複数のボリュームグループを作成することができ、その上に複数の論理ボリュームを作成することができます。 複数の物理ボリュームを使用する場合、その上に作...
CentOS 7(XFS)のパーティションを縮小する手順 - Qiita
XFSは論理ボリュームの縮小に対応していません。 パーティションの縮小をするには削除→作成の手順が必要になります。 ちょっと検索しても手順がみつからなかったのでまとめておきます。 環境 VirtualBoxにCentOS 7を最...
【Linux・CentOS7】 LVM によるディスクの管理について解説
レンタルサーバーに関連しているというよりは、VPS(バーチャル・プライベート・サーバー:Virtual Private Server)や自宅サーバー向けの話題です。 (adsbygoogle = window.adsbygoogle ||

コメント

タイトルとURLをコピーしました