2019年9月4日水曜日

RHEL 7やCentOS7でPolicy Based Routing (PBR)を設定する

RHELのサーバにてNICを複数持つ場合、両方のNICから適切に通信できるよう設定しないと、通信の行きと戻りが異なる「非対称ルーティング」となる場合がある。非対称ルーティングの場合、途中にファイアウォール等があると正常に通信を許可することができず、想定した通信ができない。

このような状況を解消するため、RHELにてPolicy Based Routing (PBR)を設定し検証してみた。以下に検証内容と設定手順を記載する。

環境

  • OS : RHEL 7
  • NIC1 (ens192) : 192.168.11.191/24
  • NIC2 (ens224) : 192.168.33.191/24

通信要件

以下通信要件を実現するルーティングテーブルを作成する。
  • NIC1で受けた通信はNIC1から返す
  • NIC2で受けた通信はNIC2から返す
  • 対象サーバから送信する通信はNIC1側から行う
通信概要図を以下に記載する。図示されているすべての矢印で問題なく通信できるようにすることが目的となる。


Policy Based Routing設定手順

  1. デフォルトゲートウェイの設定
    デフォルトゲートウェイは「サーバ自身から通信を行うNIC」に対して設定する。今回はNIC1 (ens192)で設定しておく。
# ip route show
default via 192.168.11.31 dev ens192 proto static metric 100    ←★NIC1 (ens192)にデフォルトゲートウェイを設定
192.168.11.0/24 dev ens192 proto kernel scope link src 192.168.11.191 metric 100
192.168.33.0/24 dev ens224 proto kernel scope link src 192.168.33.191 metric 101
  1. NIC2用のルーティングテーブルを追加
    NIC1用のIPアドレスから送信する場合のルーティングテーブルを作成する。
# ip rule add from 192.168.33.191 table 100 prio 100
# ip rule show
0:      from all lookup local
100:    from 192.168.33.191 lookup 100    ←★追加されたテーブル
32766:  from all lookup main
32767:  from all lookup default
  1. NIC2用のルーティングテーブルにルーティングを設定
    NIC1用のテーブルにデフォルトゲートウェイと同セグのルーティングテーブルを追加する。
# ip route add 192.168.33.0/24 dev ens224 proto kernel scope link metric 100 table 100
# ip route add default via 192.168.33.31 table 100
# ip route show table 100
default via 192.168.33.31 dev ens224
192.168.33.0/24 dev ens224 proto kernel scope link metric 100
  1. NIC1用のルーティングテーブルを追加
    NIC2用のIPアドレスから送信する場合のルーティングテーブルを作成する。
# ip rule add from 192.168.11.191 table 101 prio 101
# ip rule show
0:      from all lookup local
100:    from 192.168.33.191 lookup 100
101:    from 192.168.11.191 lookup 101    ←★追加されたテーブル
32766:  from all lookup main
32767:  from all lookup default
  1. NIC1用のルーティングテーブルにルーティングを設定
    NIC2用のテーブルにデフォルトゲートウェイと同セグのルーティングテーブルを追加する。
# ip route add 192.168.11.0/24 dev ens192 proto kernel scope link metric 100 table 101
# ip route add default via 192.168.11.31 table 101
# ip route show table 101
default via 192.168.11.31 dev ens192
192.168.11.0/24 dev ens192 proto kernel scope link metric 100
これで完了となる。

一見すると、NIC1とNIC2の両方にデフォルトゲートウェイが設定されているため、通常のルーティングテーブル(ip route showで表示されるテーブル)は不要となるように見えるが、サーバ自身から通信を行う場合は、通常のルーティングテーブルを使用するようなので、設定は必要となる。試しに通常のデフォルトゲートウェイを設定せずにpingを実行してみると、ルーティングがないためネットワークに到達できない旨のエラーが表示された。
[root@localhost ~]# ping 192.168.55.1
connect: ネットワークに届きません

動作確認

NIC1側のクライアントからping

192.168.11.0/24のセグメントにいるクライアントからpingを実施して確認してみる。
# ping -c 1 192.168.11.191
PING 192.168.11.191 (192.168.11.191) 56(84) bytes of data.
64 bytes from 192.168.11.191: icmp_seq=1 ttl=64 time=0.114 ms    ←★OK!

--- 192.168.11.191 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.114/0.114/0.114/0.000 ms

# ping -c 1 192.168.33.191
PING 192.168.33.191 (192.168.33.191) 56(84) bytes of data.
64 bytes from 192.168.33.191: icmp_seq=1 ttl=63 time=0.365 ms    ←★OK!

--- 192.168.33.191 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.365/0.365/0.365/0.000 ms

NIC2側のクライアントからping

192.168.33.0/24のセグメントにいるクライアントからpingを実施して確認してみる。
# ping -c 1 192.168.11.191
PING 192.168.11.191 (192.168.11.191) 56(84) bytes of data.
64 bytes from 192.168.11.191: icmp_seq=1 ttl=63 time=0.219 ms    ←★OK!

--- 192.168.11.191 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.219/0.219/0.219/0.000 ms

# ping -c 1 192.168.33.191
PING 192.168.33.191 (192.168.33.191) 56(84) bytes of data.
64 bytes from 192.168.33.191: icmp_seq=1 ttl=64 time=0.110 ms    ←★OK!

--- 192.168.33.191 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.110/0.110/0.110/0.000 ms

再起動してもルーティングテーブルが消えないようにする

  1. NetworkManager-dispatcher-routing-rulesをインストール
    NetworkManager-dispatcher-routing-rulesは、以前はNetworkManager-config-routing-rulesと呼ばれていたパッケージとなるが、以下にある通り、パッケージ名が変更されているだけで同じものになるようだ。 NetworkManager-dispatcher-routing-rulesは、RHELのインストールISOイメージに含まれていないので、RHELのサイトからRPMファイルをダウンロードしてインストールする。インストール後、NetworkManager-dispatcher.serviceが自動起動するよう設定する。
# rpm -ivh NetworkManager-dispatcher-routing-rules-1.18.0-5.el7.noarch.rpm
警告: NetworkManager-dispatcher-routing-rules-1.18.0-5.el7.noarch.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID fd431d51: NOKEY
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:NetworkManager-dispatcher-routing################################# [100%]
# systemctl enable NetworkManager-dispatcher.service
# systemctl start NetworkManager-dispatcher.service
  1. NIC1用のルーティング設定を追加
    以下のようにrule-<デバイス名>route-<デバイス名>のファイルを作成する。先ほど手動で設定する際に使ったコマンドから、ip rule addip route addを省略して書けばよい。
# cat /etc/sysconfig/network-scripts/rule-ens192
from 192.168.11.191 table 101 prio 101
# cat /etc/sysconfig/network-scripts/rule-ens192
default via 192.168.11.31 table 101
192.168.11.0/24 dev ens192 proto kernel scope link metric 100 table 101
  1. NIC2用のルーティング設定を追加
    同様にNIC2用のファイルを作成する。
# cat /etc/sysconfig/network-scripts/rule-ens224
from 192.168.33.191 table 100 prio 100

# cat /etc/sysconfig/network-scripts/route-ens224
default via 192.168.33.31 table 100
192.168.33.0/24 dev ens224 proto kernel scope link metric 100 table 100
  1. OS再起動
    OS再起動してルーティングテーブルを確認すると、以下の通り問題なく設定されていることがわかる。
# ip rule show
0:      from all lookup local
100:    from 192.168.33.191 lookup 100
101:    from 192.168.11.191 lookup 101
32766:  from all lookup main
32767:  from all lookup default

# ip route show table 100
default via 192.168.33.31 dev ens224
192.168.33.0/24 dev ens224 proto kernel scope link metric 100

# ip route show table 101
default via 192.168.11.31 dev ens192
192.168.11.0/24 dev ens192 proto kernel scope link metric 100

(参考) 削除コマンド

参考までに、削除コマンドは以下の通りとなる。
# ip route del default table 100
# ip route del 192.168.33.0/24 table 100
# ip rule del table 100

# ip route del default table 101
# ip route del 192.168.11.0/24 table 101
# ip rule del table 101

参考

2019年8月21日水曜日

最小インストールしたRHEL 7に、GUI環境 (Gnome)を追加インストールする方法

個人的にRed Hat Enterprise Linux 7 (以降、(RHEL 7))を使う場合、ほとんどGUI環境 (Gnome)をインストールして使うことはないのだが、今回使う必要性がでてきたため、最小インストールした状態のRHEL 7に対して、後からGUI環境をインストールする手順を確認してみた。

環境

  • RHEL 7.6

手順

  1. DVDのOSイメージをマウント
# mount /dev/cdrom /mnt
  1. マウントしたイメージをレポジトリとして設定
# vi /etc/yum.repos.d/dvd.repo

[dvd]
baseurl=file:///mnt/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
  1. yumでインストールを実施
    dvd.repoファイルを作成することで、yumが使えるようになる。982件のパッケージが追加インストールされる。
# yum groupinstall "Server with GUI"
読み込んだプラグイン:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
リポジトリー 'dvd' は構成中に名前がありませんので ID を使います
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
dvd                                                      | 4.3 kB     00:00
(1/2): dvd/group_gz                                        | 146 kB   00:00
(2/2): dvd/primary_db                                      | 4.2 MB   00:00
パッケージ 1:NetworkManager-config-server-1.12.0-6.el7.noarch はインストール済みか最新バージョンです
Warning: Group core does not have any packages to install.
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ ModemManager.x86_64 0:1.6.10-1.el7 を インストール
--> 依存性の処理をしています: ModemManager-glib(x86-64) = 1.6.10-1.el7 のパッケ ージ: ModemManager-1.6.10-1.el7.x86_64
--> 依存性の処理をしています: libmbim-utils のパッケージ: ModemManager-1.6.10-1.el7.x86_64

~(中略)~

トランザクションの要約
================================================================================
インストール  275 パッケージ (+707 個の依存関係のパッケージ)

総ダウンロード容量: 701 M
インストール容量: 2.1 G
Is this ok [y/d/N]:y   ←★yを入力
Downloading packages:
警告: /mnt/Packages/GConf2-3.2.6-8.el7.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID fd431d51: NOKEY
GConf2-3.2.6-8.el7.x86_64.rpm の公開鍵がインストールされていません
--------------------------------------------------------------------------------
合計                                                43 MB/s | 701 MB  00:16
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release から鍵を取得中です。
Importing GPG key 0xFD431D51:
 Userid     : "Red Hat, Inc. (release key 2) <security@redhat.com>"
 Fingerprint: 567e 347a d004 4ade 55ba 8a5f 199e 2f91 fd43 1d51
 Package    : redhat-release-server-7.6-4.el7.x86_64 (@anaconda/7.6)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
上記の処理を行います。よろしいでしょうか? [y/N]y   ←★yを入力
Importing GPG key 0x2FA658E0:
 Userid     : "Red Hat, Inc. (auxiliary key) <security@redhat.com>"
 Fingerprint: 43a6 e49c 4a38 f4be 9abf 2a53 4568 9c88 2fa6 58e0
 Package    : redhat-release-server-7.6-4.el7.x86_64 (@anaconda/7.6)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
上記の処理を行います。よろしいでしょうか? [y/N]y   ←★yを入力
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告: RPMDB は yum 以外で変更されました。
  インストール中          : atk-2.28.1-1.el7.x86_64                       1/982
  インストール中          : fontpackages-filesystem-1.44-8.el7.noarch     2/982

~(中略)~

  1. ランレベル変更
    RHEL 6では/etc/inittabを変更してランレベルを変更していたが、RHEL 7ではコマンドで変更する。
# systemctl get-default
multi-user.target

# systemctl set-default graphical.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
  1. OS再起動
# reboot
  1. 再起動後確認
    再起動すると無事GUI環境で起動してくる。初回起動時は、初期セットアップウィザードが表示されるので、適宜設定する。なお、root以外のアカウントが設定されていない場合は、新規に1つユーザ作成が必要となるので注意。
初期セットアップウィザードの画面。言語やタイムゾーンなどを選択する。

ウィザードが終了すると、ようやくGUI環境が使えるようになる。

ログイン後の画面。特にエラーもなく、問題なく動作しているようだ。


2019年8月14日水曜日

Red Hat Enterprise Linux 8をインストールして、動作確認してみた

とうとうRed Hat Enterprise Linux 8 (以降RHEL 8)が2019年5月7日にリリースされた。忙しくて試すことができていなかったが、ようやく評価ライセンスとISOをダウンロードして試すことができたので、インストール手順と簡単に動作確認をした結果を記載する。

インストール手順はRHEL 7と大差ない

ESXi 6.7 Update 1環境にインストールしてみる。
  1. ESXiで仮想マシン作成時に「Red Hat Enterprise Linux 8 (64ビット)」を選択しておく。


  2. ISOイメージから起動させ、「Install Red Hat Enterprise Linux 8.0.0」を選択する。デフォルトでは、「Test this media 8 install Red Hat Enterprise Linux 8.0.0」が選ばれているが、メディアスキャンが必要な場合はほとんどないし、時間もかかるのでお勧めしない。


  3. 言語はいつも通り日本語を選ぶ。


  4. RHEL 7に比べて、設定画面は見やすくなった。


  5. RHEL 7はデフォルトで「最小限のインストール」だったが、RHEL 8ではデフォルトが「サーバー (GUI使用)」なので注意。GUI環境が不要な場合は、必ず変更しよう。今回は「最小限のインストール」でインストールすることにし、仮想環境なので「ゲストエージェント」のみにチェックを入れてみた。


  6. インストールが開始される。



    最小限のインストールであれば、10分もかからないで完了するはず。
  7. 特にエラーもなく起動できた。

設定コマンド等もRHEL 7と大差ない

基本的なコマンドはRHEL 7と変更になっていないようだ。以下、変更がなかったコマンドを列挙する。
設定項目 コマンド
サービス設定 systemctl
パッケージ管理 yum (後述するが実態はdnfへのシンボリックリンク)
リソース確認 top, vmstat
NIC設定 nmcli, nmtui
ネットワーク確認 ip a, ip r, ss, ping, tracepath
ディスク設定 fdisk, parted, pvcreate, vgcreate, lvcreate
ディスク確認 df, pvdisplay, vgdisplay, lvdisplay

OS基本情報を確認

カーネルバージョンが4.x台になっている。
[root@localhost ~]# uname -a
Linux localhost.localdomain 4.18.0-80.el8.x86_64 #1 SMP Wed Mar 13 12:02:46 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.0 (Ootpa)

ファイルシステムを確認

RHEL 7をvSphere環境で作る際はBIOSが選択されていたが、RHEL 8の場合はUEFIが選択されるようになる。それによるディスクパーティション構成に差異があるようだ。
最も大きな違いは、パーティションテーブルが「GPT」になっていることだと思う。
[root@localhost ~]# df -h
ファイルシス          サイズ  使用  残り 使用% マウント位置
devtmpfs                900M     0  900M    0% /dev
tmpfs                   915M     0  915M    0% /dev/shm
tmpfs                   915M  8.7M  907M    1% /run
tmpfs                   915M     0  915M    0% /sys/fs/cgroup
/dev/mapper/rhel-root    13G  1.3G   12G   11% /
/dev/sda2              1014M  158M  857M   16% /boot
/dev/sda1               599M  6.6M  593M    2% /boot/efi
tmpfs                   183M     0  183M    0% /run/user/0

[root@localhost ~]# parted /dev/sda p
モデル: VMware Virtual disk (scsi)
ディスク /dev/sda: 17.2GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前                  フラグ
 1    1049kB  630MB   629MB   fat32             EFI System Partition  boot, esp
 2    630MB   1704MB  1074MB  xfs
 3    1704MB  17.2GB  15.5GB                                          lvm

YumがDNFになった

Yumが後継のDNFに代わっている。yumコマンドはdnfコマンドのシンボリックリンクとなっている。なお、DNFは「Dandified Yum」の略称。「ダンディーなYum」ってこと?
[root@localhost ~]# yum
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
usage: dnf [options] COMMAND

~(以下略)~

2019年7月31日水曜日

Windows ServerにVMware Toolsをサイレントインストールする方法

Windows版のVMware Toolsは、昔からGUIによるインストーラが提供されており、GUIによるインストール操作が必要となっていた。

しかし、仮想マシンの台数が増えるとGUIで操作するのは手間となるので、サイレントインストールする手順を調べてみた。

VMware Toolsサイレントインストール手順

結論から言うと以下をコマンドプロンプトまたはPowerShellで実行すればよい。

PS C:\> D:\setup.exe /S /v "/qn"

なお、VMwareのKBなどでは、/vオプションの後の""はスペースなしで実行しているが、なぜかPowerShellでは実行できない(GUIのウィザードが表示される)。上記で示したコマンドのように、/vオプションの後にスペースを入れれば、コマンドプロンプトでもPowerShellでも、どちらでも問題なく実行できるようだ。

実際に試してみよう。

DドライブにVMware Toolsのメディアがマウントされた状態となる。

PowerShellを「管理者として実行」で開く。


先ほどのコマンドを実行してインストールを開始する。タスクマネージャーを開くと、「VMware installation launcher」などが実行されていることがわかる。


インストール終了後、自動でOSが再起動される。


OS再起動後、問題なければESXiにてVMware Toolsがインストール済み状態となる。


なお、インストール後に自動再起動を抑制したい場合は、以下コマンドを実行すればよい。
PS C:\> D:\setup.exe /S /v "/qn REBOOT=ReallySuppress"

参考

Windows 仮想マシンに VMware Tools をインストールする (1018377)
https://kb.vmware.com/s/article/1018377?lang=ja

2019年7月24日水曜日

RHEL 7でpartedコマンドを使って、2TB以上のディスクをLVMとして使えるようにする

RHEL 7で2TB以上のサイズのディスクを使用する場合、fdiskでパーティション作成をしようとすると、以下のようにWARNINGメッセージで怒られる。
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x5a730435.

WARNING: The size of this disk is 3.2 TB (3221225472000 bytes).
DOS partition table format can not be used on drives for volumes
larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID
partition table format (GPT).
どうやらディスクサイズが2TB以上の場合は、DOS partition (いわゆるMBR)形式ではフォーマットできないので、partedコマンドを使ってGPT形式でフォーマットせよ、とのことらしい。

といわけで、partedコマンドでパーティション作成を実施してみよう。

環境

OSはRHEL 7.6となる。fdisk -lで確認したディスクの認識状況は以下の通り。
[root@localhost ~]# fdisk -l

Disk /dev/sda: 17.2 GB, 17179869184 bytes, 33554432 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x000b36a6

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    33554431    15727616   8e  Linux LVM

Disk /dev/sdb: 3221.2 GB, 3221225472000 bytes, 6291456000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
/dev/sdbが、3221GBほどあるので、これを「GPT形式」で「LVM」のディスクとして使えるようにする。

partedでパーティションを作成

1. パーティション作成前の状況を確認

作業前にpartedコマンドを使ってディスクの状況を確認する。操作体系はfdiskと似ており、「p」コマンドにて確認できる。
[root@localhost ~]# parted /dev/sdb
GNU Parted 3.1
/dev/sdb を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) p   ←★pで状況表示
エラー: /dev/sdb: ディスクラベルが認識できません。
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 3221GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: unknown
ディスクフラグ:

2. GPT形式に設定

mklabelでGPT形式に設定する。
(parted) mklabel gpt   ←★GPTに設定
(parted) p
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 3221GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt   ←★GPTになっている
ディスクフラグ:

番号  開始  終了  サイズ  ファイルシステム  名前  フラグ

3. パーティション作成

mkpartでパーティションを作成する。「パーティションの名前」や「ファイルシステムの種類」は空白で問題ないようだ。
ただし、設定値を誤ると「アライメントが正しくないためにパフォーマンスがでません」という警告が出る。以下に実行例を記載する。
(parted) mkpart
パーティションの名前?  []?      ←★空白でOK
ファイルシステムの種類?  [ext2]?   ←★空白でOK
開始? 0
終了? 3221G
警告: 操作の結果できるパーティションはアライメントが正しくないためにパフォーマンスがでません。
   ↑★警告が表示される
無視(I)/Ignore/取消(C)/Cancel? I
(parted) p
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 3221GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
 1    17.4kB  3221GB  3221GB
警告を出さないようにするには、単位を「%」で指定すればよい。これでエラーなくパーティション「1」が作成された。
(parted) mkpart
パーティションの名前?  []?      ←★空白でOK
ファイルシステムの種類?  [ext2]?   ←★空白でOK
開始? 0%
終了? 100%
(parted) p
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 3221GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
 1    1049kB  3221GB  3221GB

4. LVMに設定

パーティション番号「1」に対して、LVMを有効に設定する。
(parted) set 1 lvm on
(parted) p
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 3221GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
 1    1049kB  3221GB  3221GB                          lvm
↑★フラグに「lvm」と表示されている

(parted)

5. partedを終了

これでパーティション作成は終了となる。partedを終了すると、「/etc/fstabの更新を忘れないように」と、親切に表示される。
(parted) q
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。

PV・VG・LVを作成

PV・VG・LV作成は、MBRと同様の手順で実施できる。簡単に作業結果のみ記載する。ちなみに、確認系コマンドはコマンドが短くて打ちやすかったので以下を使ってみた。
確認対象 定番コマンド 今回コマンド
PV pvdisplay pvs
VG vgdisplay vgs
LV lvdisplay lvs

1. PV作成

[root@localhost ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize   PFree
  /dev/sda2  rhel lvm2 a--  <15.00g     0
  /dev/sdb1       lvm2 ---   <2.93t <2.93t

2. VG作成

LVMの時代はPEの個数に65536個上限の制約があり、-sオプションでPEサイズを大きく指定する必要があったようだが、現在はLVM2が使われており、PE個数の上限の心配はしなくてよい
[root@localhost ~]# vgcreate data /dev/sdb1
  Volume group "data" successfully created
[root@localhost ~]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  data   1   0   0 wz--n-  <2.93t <2.93t
  rhel   1   2   0 wz--n- <15.00g     0

3. LV作成

[root@localhost ~]# lvcreate -n data -l 100%FREE data
  Logical volume "data" created.
[root@localhost ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data data -wi-a----- <2.93t                                                   
  root rhel -wi-ao---- 13.39g                                                   
  swap rhel -wi-ao----  1.60g                                                   

4. ファイルシステム作成

RHEL 7だったのでxfsにする。
[root@localhost ~]# mkfs.xfs /dev/data/data
meta-data=/dev/data/data         isize=512    agcount=4, agsize=196603904 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=786415616, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=383992, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

5. マウント

試しに手動でマウントしてみる。
[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/mapper/data-data /data
[root@localhost ~]# df -h
ファイルシス          サイズ  使用  残り 使用% マウント位置
/dev/mapper/rhel-root    14G  1.1G   13G    8% /
devtmpfs                908M     0  908M    0% /dev
tmpfs                   920M     0  920M    0% /dev/shm
tmpfs                   920M  8.9M  911M    1% /run
tmpfs                   920M     0  920M    0% /sys/fs/cgroup
/dev/sda1              1014M  146M  869M   15% /boot
tmpfs                   184M     0  184M    0% /run/user/0
/dev/mapper/data-data   3.0T   33M  3.0T    1% /data

6. OS起動時の自動マウント設定

partedコマンド終了時に親切に言われているので、/etc/fstabにマウント設定を追記しておこう。
[root@localhost ~]# cat /etc/fstab

/dev/mapper/rhel-root   /                       xfs     defaults        0 0
UUID=1b3eb24d-7d2c-4023-9d4d-933bea63cd3f /boot                   xfs     defaults        0 0
/dev/mapper/rhel-swap   swap                    swap    defaults        0 0
/dev/mapper/data-data   /data                   xfs     defaults        0 0
 ↑★追記
以上で作業は完了となる。

人気の投稿