2020年3月25日水曜日

【LVM入門】LinuxのLVMでディスク容量を拡張する

本記事ではLVM拡張手順の例として、2GBの容量を持つ/dev/sdbを拡張して5GBに拡張してみる。なお、LVMの領域はマウントした状態のままオンラインで拡張を行う。
※今までのLVM関連記事はこちら。↓
手順 記事
LVM領域作成 【LVM入門】LinuxのLVM領域を最短で作成する
LVM領域削除 【LVM入門】LinuxのLVMで作成したディスクを削除する
LVM領域拡張 【LVM入門】LinuxのLVMでディスク容量を拡張する←★本記事
LVM領域縮小 【LVM入門】LinuxのLVMでディスク容量を縮小する
VG・LV名前変更 【LVM入門】LinuxのLVMで作成済みのVGやLVの名前を変更する

環境

環境情報は以下の通り。下から順に削除していくイメージとなる。
  • OS : Red Hat Enterprise Linux 7.6
  • PV : /dev/sdb1
  • VG : vg_sdb1
  • LV : lv_sdb1
  • マウントポイント : /mnt
作業前のdfコマンドの状態を以下に記載しておく。/dev/mapper/vg_sdb1-lv_sdb1となっている2GBの領域を拡張し4GBにする。
[root@localhost ~]# df -h
ファイルシス                サイズ  使用  残り 使用% マウント位置
/dev/mapper/rhel-root          14G  1.4G   13G   11% /
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/vg_sdb1-lv_sdb1   2.0G   33M  2.0G    2% /mnt

LVM容量拡張手順

1. 拡張前のディスク状態を確認

[root@localhost ~]# fdisk -l /dev/sdb
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: gpt
Disk identifier: B383352C-EF95-49AC-AA28-A6A99BB2A11C


#         Start          End    Size  Type            Name
 1         2048      4192255      2G  Linux LVM

[root@localhost ~]# ls -l /mnt/
合計 0
-rw-r--r--. 1 root root 0  2月  8 19:55 test.txt

2. ストレージやVMware上でディスクを拡張

ストレージやVMwareの仮想マシンの設定などで、ディスクの拡張を行う。今回はVMware Host Clientにて拡張作業を実施した。


拡張しただけでは容量を認識しないので、ディスク容量は変わらず2GBのままとなる。
[root@localhost ~]# fdisk -l /dev/sdb
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: gpt
Disk identifier: B383352C-EF95-49AC-AA28-A6A99BB2A11C


#         Start          End    Size  Type            Name
 1         2048      4192255      2G  Linux LVM

3. 拡張後OSでリスキャンし、容量を認識させる

リスキャンコマンドはecho 1 > /sys/class/block/_device-name_/device/rescanとなる。_device-name_は今回の場合はsdbとなる。
[root@localhost ~]# echo 1 > /sys/class/block/sdb/device/rescan
リスキャンしてfdisk -lで確認すると、「Disk label type」がgptではなくdosとなり表示がおかしくなるが、これは次の手順で修正する。
[root@localhost ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 4294 MB, 4294967296 bytes, 8388608 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos ←★gptではなくdosになっている
ディスク識別子: 0x00000000

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1               1     4194303     2097151+  ee  GPT

4. GPTテーブルの修復

リスキャンし、parted -lコマンドで確認しようとすると、「あるべき GPT テーブルのバックアップがディスクの最後にありません」というエラーが表示される。そのまま修正することができるので「F」を入力して修正すること。
[root@localhost ~]# parted -l
モデル: VMware Virtual disk (scsi)
ディスク /dev/sda: 17.2GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:

番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
 1    1049kB  1075MB  1074MB  primary  xfs               boot
 2    1075MB  17.2GB  16.1GB  primary                    lvm


エラー: あるべき GPT テーブルのバックアップがディスクの最後にありません。他の OS
がディスクはもっと小さいものだと思っているのかもしれません。バックアップを最後に持ってきて(古いバックアップを削除して)修復しますか?
修正/Fix/無視(I)/Ignore/取消(C)/Cancel? F ←★Fを入力
警告: /dev/sdb で利用可能な領域の一部が利用されていません。GPT を修正して全ての 領域を利用可能にするか(4194304
ブロック増えます)、このままで続行することができますが、どうしますか?
修正/Fix/無視(I)/Ignore? F ←★Fを入力
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 4295MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
 1    1049kB  2146MB  2145MB                          lvm


~(以下略)~
fdiskコマンドも表示が正常に戻る。
[root@localhost ~]# fdisk -l /dev/sdb
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/sdb: 4294 MB, 4294967296 bytes, 8388608 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: gpt
Disk identifier: B383352C-EF95-49AC-AA28-A6A99BB2A11C


#         Start          End    Size  Type            Name
 1         2048      4192255      2G  Linux LVM

5. パーティションの拡張

partedコマンドでパーティションを拡張する。
[root@localhost ~]# parted /dev/sdb
GNU Parted 3.1
/dev/sdb を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) p ←★現在のパーティション情報を確認
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 4295MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
 1    1049kB  2146MB  2145MB                          lvm

(parted) p free ←★現在のパーティションの空き容量を確認
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 4295MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
      17.4kB  1049kB  1031kB  空き容量
 1    1049kB  2146MB  2145MB                          lvm
      2146MB  4295MB  2149MB  空き容量

(parted) resizepart ←★パーティション容量拡張
パーティション番号? 1
終了?  [2146MB]? 100%
(parted) p free
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 4295MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
      17.4kB  1049kB  1031kB  空き容量
 1    1049kB  4295MB  4294MB                          lvm

(parted) q ←★parted終了
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。
なお、resizeコマンドは、RHEL 7.6に付属しているpartedコマンドのバージョン3.0では使えなくなったので注意。
(parted) resize
エラー: The resize command has been removed in parted 3.0

6. PV容量拡張

pvresizeコマンドでPVの容量を拡張する。
[root@localhost ~]# pvdisplay /dev/sdb1
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vg_sdb1
  PV Size               <2.00 GiB / not usable 2.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              511
  Free PE               0
  Allocated PE          511
  PV UUID               pmrFQB-o1oh-VGLc-Aogy-tOoC-PYdz-qizm2I

[root@localhost ~]# pvresize /dev/sdb1
  Physical volume "/dev/sdb1" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized

[root@localhost ~]# pvdisplay /dev/sdb1
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vg_sdb1
  PV Size               <4.00 GiB / not usable 1.98 MiB ←★容量が4.00GiBに増えている
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              1023
  Free PE               512
  Allocated PE          511
  PV UUID               pmrFQB-o1oh-VGLc-Aogy-tOoC-PYdz-qizm2I

7. VG確認

PVの容量が拡張されれば、自動的にVGの容量も増えるので、確認だけしておく。
[root@localhost ~]# vgdisplay vg_sdb1
  --- Volume group ---
  VG Name               vg_sdb1
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <4.00 GiB ←★容量が4.00GiBに増えている
  PE Size               4.00 MiB
  Total PE              1023
  Alloc PE / Size       511 / <2.00 GiB
  Free  PE / Size       512 / 2.00 GiB
  VG UUID               rV0GBn-DK2o-5STl-LJCX-y3yF-1kB0-eoqTP9

8. LV容量拡張

lvextendコマンドで容量を拡張する。空き容量をすべて拡張するので**+100%FREEを指定して拡張する(+を付けないと拡張されないので注意)**。
[root@localhost ~]# lvdisplay /dev/vg_sdb1/lv_sdb1
  --- Logical volume ---
  LV Path                /dev/vg_sdb1/lv_sdb1
  LV Name                lv_sdb1
  VG Name                vg_sdb1
  LV UUID                WBUK0w-La44-rff0-DLIY-QpWK-a72w-cfzOEF
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2020-02-08 19:53:50 +0900
  LV Status              available
  # open                 1
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

[root@localhost ~]# lvextend -l +100%FREE /dev/vg_sdb1/lv_sdb1
  Size of logical volume vg_sdb1/lv_sdb1 changed from 2.00 GiB (512 extents) to <4.00 GiB (1023 extents).
  Logical volume vg_sdb1/lv_sdb1 successfully resized.

[root@localhost ~]# lvdisplay /dev/vg_sdb1/lv_sdb1
  --- Logical volume ---
  LV Path                /dev/vg_sdb1/lv_sdb1
  LV Name                lv_sdb1
  VG Name                vg_sdb1
  LV UUID                WBUK0w-La44-rff0-DLIY-QpWK-a72w-cfzOEF
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2020-02-08 19:53:50 +0900
  LV Status              available
  # open                 1
  LV Size                <4.00 GiB ←★容量が4.00GiBに増えている
  Current LE             1023
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

9. ファイルシステム拡張

xfsの領域は、xfs_growfsコマンドで拡張する。xfs_growfsコマンドはファイルシステムをマウントした状態で実行すること。また、xfs_growfsコマンドでは、デバイス名ではなくマウントポイントを指定すること。
[root@localhost ~]# xfs_growfs /mnt
meta-data=/dev/mapper/vg_sdb1-lv_sdb1 isize=512    agcount=4, agsize=130816 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=523264, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 523264 to 1047552
dfコマンドで確認すると、/mnt領域の容量が4.0GBに拡張していることが確認できる。
[root@localhost ~]# df -h
ファイルシス                サイズ  使用  残り 使用% マウント位置
/dev/mapper/rhel-root          14G  1.4G   13G   11% /
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/vg_sdb1-lv_sdb1   4.0G   33M  4.0G    1% /mnt ←★容量が4.00GiBに増えている

ちなみに、xfs_growfsを実行した際に、マウントポイントではなくデバイス名をした場合、「デバイス is not a mounted XFS filesystem」のエラーが出る場合がある (成功する場合もある)。

[root@localhost ~]# xfs_growfs /dev/mapper/rhel-root
xfs_growfs: /dev/mapper/rhel-root is not a mounted XFS filesystem

この場合は、デバイスではなくマウントポイントを指定して再実行してみよう。以下は「/」を拡張する際のコマンド実行例となる。

[root@localhost ~]# xfs_growfs /
meta-data=/dev/mapper/cl-root    isize=512    agcount=4, agsize=839424 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=3357696, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 3357696 to 14892032
なお、xfsの領域拡張はresize2fsではできないので注意。resize2fsで実施しようとすると、「Bad magic number in super-block」というエラーで失敗する。
[root@localhost ~]# resize2fs /dev/vg_sdb1/lv_sdb1
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block while trying to open /dev/vg_sdb1/lv_sdb1
Couldn't find valid filesystem superblock.
以上で作業は完了となる。
2020年3月18日水曜日

【LVM入門】LinuxのLVMで作成したディスクを削除する

Windowsなどでは、ディスクを追加・削除をするとOSが何も言わず自動で処理してくれる(実際はストレージのデバイスが残ったりする)が、Red Hat Enterprise LinuxやCentOSなどのLinuxの場合は、単純にディスクを削除するだけではゴミ設定が残るため、少し複雑な手順が必要となる。

Red Hat Enterprise Linux 7に付けたLVMで構成済みとなる物理ディスクをLVMの設定と合わせてOS上から削除する手順を記載する。

※今までのLVM関連記事はこちら。↓

手順 記事
LVM領域作成 【LVM入門】LinuxのLVM領域を最短で作成する
LVM領域削除 【LVM入門】LinuxのLVMで作成したディスクを削除する←★本記事
LVM領域拡張 【LVM入門】LinuxのLVMでディスク容量を拡張する
LVM領域縮小 【LVM入門】LinuxのLVMでディスク容量を縮小する
VG・LV名前変更 【LVM入門】LinuxのLVMで作成済みのVGやLVの名前を変更する

環境

環境情報は以下の通り。下から順に削除していくイメージとなる。
  • OS : Red Hat Enterprise Linux 7.6
  • PV : /dev/sdb1
  • VG : vg_sdb
  • LV : lv_sdb
  • マウントポイント : /mnt
作業前のdfコマンドの状態を以下に記載しておく。/dev/mapper/vg_sdb-lv_sdbとなっている5GBの領域を削除する。
[root@localhost ~]# df -h
ファイルシス              サイズ  使用  残り 使用% マウント位置
/dev/mapper/rhel-root        14G  1.4G   13G   11% /
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/vg_sdb-lv_sdb   5.0G   33M  5.0G    1% /mnt

LVMの削除手順

1. ファイルシステムをアンマウント

[root@localhost ~]# umount /mnt/

2. VGおよびLVを削除する。

削除前にデバイスファイルやVGの状態を確認しておく。
[root@localhost ~]# ls -ld /dev/vg_sdb/
drwxr-xr-x. 2 root root 60  2月  4 07:12 /dev/vg_sdb/
[root@localhost ~]# ls -l /dev/mapper/
合計 0
crw-------. 1 root root 10, 236  2月  3 12:59 control
lrwxrwxrwx. 1 root root       7  2月  3 13:02 rhel-root -> ../dm-0
lrwxrwxrwx. 1 root root       7  2月  3 13:02 rhel-swap -> ../dm-1
lrwxrwxrwx. 1 root root       7  2月  4 07:12 vg_sdb-lv_sdb -> ../dm-2
[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  rhel     1   2   0 wz--n- <15.00g    0
  vg_sdb   1   1   0 wz--n-  <5.00g    0
vgremoveコマンドでVGを削除を実行するとLVも一緒に削除することができるので、特に理由がなければVGをいきなり削除してしまえばよい。
[root@localhost ~]# vgremove vg_sdb
Do you really want to remove volume group "vg_sdb" containing 1 logical volumes? [y/n]: y
Do you really want to remove active logical volume vg_sdb/lv_sdb? [y/n]: y
  Logical volume "lv_sdb" successfully removed
  Volume group "vg_sdb" successfully removed
削除後にデバイスファイルとVGの状態を確認し、問題なく削除されていることを見ておこう。
[root@localhost ~]# ls -ld /dev/vg_sdb/
ls: /dev/vg_sdb/ にアクセスできません: そのようなファイルやディレクトリはありま せん
[root@localhost ~]# ls -l /dev/mapper/
合計 0
crw-------. 1 root root 10, 236  2月  3 12:59 control
lrwxrwxrwx. 1 root root       7  2月  3 13:02 rhel-root -> ../dm-0
lrwxrwxrwx. 1 root root       7  2月  3 13:02 rhel-swap -> ../dm-1
[root@localhost ~]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  rhel   1   2   0 wz--n- <15.00g    0

3. PVを削除する。

PVを削除する前に確認しておく。
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize   PFree
  /dev/sda2  rhel lvm2 a--  <15.00g     0
  /dev/sdb1       lvm2 ---   <5.00g <5.00g
PV削除はpvremoveコマンドとなる。
[root@localhost ~]# pvremove /dev/sdb1
  Labels on physical volume "/dev/sdb1" successfully wiped.
以下のようにPVが削除されていればOK。
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize   PFree
  /dev/sda2  rhel lvm2 a--  <15.00g    0

4. ストレージデバイスの削除

fdiskコマンドで削除対象を確認しておく。
[root@localhost ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Red Hat社のマニュアル通りecho 1 > /sys/block/_device-name_/device/deleteのコマンドで、ストレージデバイスを削除する。_device-name_は今回の場合/dev/sdbを指定する。
[root@localhost ~]# echo 1 > /sys/block/sdb/device/delete
削除後、以下の通り/dev/sdbがなくなっていれば削除完了となる。
[root@localhost ~]# fdisk -l /dev/sdb
fdisk: /dev/sdb を open できません: そのようなファイルやディレクトリはありません
以上で作業は完了となる。

参考

2020年3月12日木曜日

【LVM入門】LinuxのLVM領域を最短で作成する

以前以下記事で、partedコマンドを使ったLVM領域を作成する方法を記載した。

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

上記と流れは同一となるが、可能な限り効率化して短い手順でLVM領域を作成する方法を検討したので、以下に記載する。

その他、LVMを使った各種作業手順を確認してみたので、数回に分けて記載していくことにする。

手順 記事
LVM領域作成 【LVM入門】LinuxのLVM領域を最短で作成する←★本記事
LVM領域削除 【LVM入門】LinuxのLVMで作成したディスクを削除する
LVM領域拡張 【LVM入門】LinuxのLVMでディスク容量を拡張する
LVM領域縮小 【LVM入門】LinuxのLVMでディスク容量を縮小する
VG・LV名前変更 【LVM入門】LinuxのLVMで作成済みのVGやLVの名前を変更する

partedコマンドを使って1行でパーティションを作成

今回の肝は、partedコマンドを使って1行でLVMのパーティションを作成することだ。以下のように-sオプションを付与して、設定に必要なコマンドを羅列する。
[root@localhost ~]# parted -s /dev/sdb "mklabel gpt mkpart ' ' 0% 100% set 1 lvm on print"
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 2147MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
 1    1049kB  2146MB  2145MB                          lvm

LVMとファイルシステムの設定

上記partedコマンドを考慮しつつ、最短でLVMとファイルシステムの設定を行い、マウントまで行うことを目標とする。

結果、以下7行のコマンドとなった。devは変数とし、設定したいディスクデバイスを指定する。
dev="/dev/sdb"
parted -s ${dev} "mklabel gpt mkpart ' ' 0% 100% set 1 lvm on print"
pvcreate "${dev}1"
vgcreate "vg_${dev##*/}1" "${dev}1"
lvcreate -n "lv_${dev##*/}1" -l 100%FREE "vg_${dev##*/}1"
mkfs.xfs /dev/"vg_${dev##*/}1"/"lv_${dev##*/}1"
mount /dev/mapper/"vg_${dev##*/}1"-"lv_${dev##*/}1" /mnt/
実際の実行結果は以下となる。
[root@localhost ~]# dev="/dev/sdb"

[root@localhost ~]# parted -s ${dev} "mklabel gpt mkpart ' ' 0% 100% set 1 lvm on print"
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 2147MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
 1    1049kB  2146MB  2145MB                          lvm

[root@localhost ~]# pvcreate "${dev}1"
  Physical volume "/dev/sdb1" successfully created.

[root@localhost ~]# vgcreate "vg_${dev##*/}1" "${dev}1"
  Volume group "vg_sdb1" successfully created

[root@localhost ~]# lvcreate -n "lv_${dev##*/}1" -l 100%FREE "vg_${dev##*/}1"
  Logical volume "lv_sdb1" created.

[root@localhost ~]# mkfs.xfs /dev/"vg_${dev##*/}1"/"lv_${dev##*/}1"
meta-data=/dev/vg_sdb1/lv_sdb1   isize=512    agcount=4, agsize=130816 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=523264, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

[root@localhost ~]# mount /dev/mapper/"vg_${dev##*/}1"-"lv_${dev##*/}1" /mnt/
一通り確認コマンドを打っておく。
[root@localhost ~]# pvs
  PV         VG      Fmt  Attr PSize   PFree
  /dev/sda2  rhel    lvm2 a--  <15.00g    0
  /dev/sdb1  vg_sdb1 lvm2 a--   <2.00g    0

[root@localhost ~]# vgs
  VG      #PV #LV #SN Attr   VSize   VFree
  rhel      1   2   0 wz--n- <15.00g    0
  vg_sdb1   1   1   0 wz--n-  <2.00g    0

[root@localhost ~]# lvs
  LV      VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root    rhel    -wi-ao---- 13.39g                                             
  swap    rhel    -wi-ao----  1.60g                                             
  lv_sdb1 vg_sdb1 -wi-ao---- <2.00g                                             

[root@localhost ~]# df -h
ファイルシス                サイズ  使用  残り 使用% マウント位置
/dev/mapper/rhel-root          14G  1.2G   13G    9% /
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/vg_sdb1-lv_sdb1   2.0G   33M  2.0G    2% /mnt
以上となる。
2020年3月4日水曜日

Windows Server 2016をインストール直後の状態から累積パッチを適用して最新化する

Windows Server 2016では、各種不具合によりWindows Updateが失敗することがある。特に初期状態や古い状態からパッチを適用する場合に以下のような事象が発生することがある。
  • 0%のままダウンロードが進まない
  • エラーコードが表示されてダウンロードやインストールができない
失敗する原因は各種存在するようだが、いまひとつ決め手に欠けるものが多く、場合によっては累積パッチをダウンロードしてオフラインでパッチを適用する方が手っ取り早いこともあるだろう。

ただ、この累積パッチには前提パッチなどがあって、順番を守らないと「この更新プログラムはお使いのコンピュータには適用できません」といったエラーで失敗するので注意が必要となる。

今回、Windows Server 2016に累積パッチを適用する最小手順を検証してみた

環境

Windows Server 2016のビルド番号はwinverコマンドで確認できる。今回は、以下バージョンのOSを最新化(2020年2月までのパッチを適用)することを目標とする。
  • バージョン 1607 (OSビルド 14393.693)


Windows Server 2016 累積パッチ適用手順

1. 「Microsoft Update カタログ」パッチをダウンロード

上記URLにて、以下2種類を検索ワードとして検索し、最新版を見つければよい。
  1. 「Windows Server 2016 サービス スタック更新プログラム」
  2. 「Windows Server 2016 の累積更新プログラム」
今回は、2020年2月時点の最新版である以下をダウンロードした。
  1. 2019-11x64 ベース システム用 Windows Server 2016 サービス スタック更新プログラム (KB4520724)
    http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/11/windows10.0-kb4520724-x64_97604f0b532d6da814b4120fc43b2d9f6fd0b356.msu
  2. 2020-02 x64 ベース システム用 Windows Server 2016 の累積更新プログラム (KB4537806)
    http://download.windowsupdate.com/d/msdownload/update/software/updt/2020/02/windows10.0-kb4537806-x64_232200bc7c98be6ccc8307c4d2bf70cf93d264c4.msu

2. 「サービススタック更新プログラム」を適用

サービススタック更新プログラムは(SSU)と呼ばれ、Windowsの更新プログラムをインストールするためのコンポーネントに対する更新プログラムとなる。累積更新プログラムを適用する前の前提パッチだと思ってもらえればよい。

サービススタック更新プログラムは、12MB程度の容量であり、数分程度で適用は完了する。

3. 「累積更新プログラム」を適用

累積更新プログラムは、1.5GB程度と大容量であり、適用は1時間程度必要となる。

最終的にOSのビルド番号は以下となった。
  • バージョン 1607 (OSビルド 14393.3542)


当然だが、適用したパッチは2つのみとなる。


参考

人気の投稿