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
 ↑★追記
以上で作業は完了となる。

0 件のコメント:

コメントを投稿

人気の投稿