partedコマンドでパーティッションを作成してLVMを構築した時の備忘録です。

■説明
昨今では、3TBのHDDが出てきており簡単に手に入る時代になってきました。
ただ、従来のMBR(fdiskで作成するパーティッション)では2TBHDDまでしか認識できないという仕様がありましたが、GPTを用いれば2TB以上8ZBの容量が扱えるようになります。
そのGPTを使用できるのが、「parted」コマンドです。
ここでは、「parted」コマンドを使用してパーティッションを作成しLVMを構築する簡単な手順を書いておきます。

■使用OS
CentOS 5.6 64bit

■追加ディスク
/dev/sdb 8GB
/dev/sdc 8GB

この追加ディスクをLVMの対象とします。
# 3TBのディスク2つは用意できなかった・・・orz

■作成するLVM Group名
VolGroup01

■作成するLVM デバイスファイル名
vol01

■使用ファイルシステム
ext3

■vol01のマウント先
/vol01

■partedのヘルプ

  check NUMBER                  ファイルシステムの簡単なチェックする
  cp [転送元デバイス] 転送元NUMBER 転送先NUMBER
                    ファイルシステムを他のパーティションにコピーする
  help [コマンド]               ヘルプ表示。コマンド指定でそのヘルプを表示
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
  mkfs NUMBER ファイルシステムの種類
                    指定した種類のファイルシステムを作る
  mkpart パーティションの種類 [ファイルシステムの種類] 開始 終了
                    パーティションを作る
  mkpartfs パーティションの種類 ファイルシステムの種類 開始 終了
                    パーティションとファイルシステムを作る
  move NUMBER 開始 終了         パーティションを移動する
  name NUMBER 名前              パーティションに名前をつける
  print [free|NUMBER|all]       パーティションテーブルを表示する
  quit                          プログラムを終了する
  rescue 開始 終了              開始、終了で指定した範囲付近にあるパーティションを復活させる
  resize NUMBER 開始 終了       パーティションとその中のファイルシステムをリサイズする
  rm NUMBER                     パーティションを削除する
  select デバイス               操作するデバイスを選択
  set NUMBER フラグ 状態        ファイルシステムのフラグと状態を設定する
  toggle [NUMBER [FLAG]]        パーティションのフラグの状態を反転する
  unit UNIT                     デフォルトの単位を UNIT にする
  version                       GNU Parted のバージョンと著作権情報を表示

(1)fdiskコマンドでHDDが認識されているか確認
[root@example ~]# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        1044     8281507+  8e  Linux LVM

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

ディスク /dev/sdb は正常な領域テーブルを含んでいません

Disk /dev/sdc: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
「/dev/sdb」と「/dev/sdc」が認識されていることを確認。

(2)「/dev/sdb」のパーティッションを作成
[root@example ~]# parted /dev/sdb
GNU Parted 1.8.1
/dev/sdb を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) mklabel gpt
(parted) mkpart primary 0 8590
(parted) set 1 lvm on
※LVMフラグを立てること

(3)パーティッションが作成されたか確認
(parted) print

モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 8590MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

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

(parted) quit
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。
同じ手順で「/dev/sdc」のパーティッションも作成する。

(4)物理ボリューム(PV)を作成
[root@example ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created
[root@example ~]# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created
[root@example ~]# pvscan
  PV /dev/sda2   VG VolGroup00      lvm2 [7.88 GB / 0    free]
  PV /dev/sdb1                      lvm2 [8.00 GB]
  PV /dev/sdc1                      lvm2 [8.00 GB]
  Total: 3 [23.87 GB] / in use: 1 [7.88 GB] / in no VG: 2 [16.00 GB]
※pvscanで追加したpvを確認する。上記では「/dev/sda2」が表示されているがデフォルトで作成されたもの。

(5)ボリュームグループ(VG)を作成
[root@example ~]# vgcreate -s 8m VolGroup01 /dev/sdb1 /dev/sdc1
  /dev/cdrom: open failed: 読み込み専用ファイルシステムです
  /dev/cdrom: open failed: 読み込み専用ファイルシステムです
  /dev/cdrom: open failed: 読み込み専用ファイルシステムです
  Volume group "VolGroup01" successfully created
※VGを作成する時はPE(Physical Extent)を考慮する必要があります。PEとはVGで扱える1ブロック(最小の記憶領域)の容量です。最終的にLVMをどれだけ拡張するかによってPEを調整する必要があります。
※また、PEには上限(65,536)があります。

簡単な計算方法
・VG作成時のデフォルトPE容量は4MBです。これを例にすると以下の計算式で上限が求められます。
65536 × 1024 × 1024 × 4 = 2.748779e11 byte (256GB)

紐付表

PE容量 LVMで扱える最大容量
4MB 256GB
8MB 512GB
16MB 1TB
32MB 2TB
64MB 4TB
128MB 8TB
256MB 16TB
512MB 32TB
1024MB 64TB


もし、「/dev/cdrom: open failed: 読み込み専用ファイルシステムです」と出力されるのが気になるのであれば以下のように修正する。

[root@example ~]# vi /etc/lvm/lvm.conf
    # By default we accept every block device:
    filter = [ "a/.*/" ]
  ↓ # コメントアウト
    # By default we accept every block device:
    #filter = [ "a/.*/" ]

    # Exclude the cdrom drive
    #  filter = [ "r|/dev/cdrom|" ]
  ↓ # コメントアウト削除
    # Exclude the cdrom drive
    filter = [ "r|/dev/cdrom|" ]
※以下手順からは、この修正を加えたものとしています。
※vgscanで作成されたVGを確認する。

(6)LVで作成できる最大容量を確認
[root@example ~]# vgdisplay -v VolGroup01
    Using volume group(s) on command line
    Finding volume group "VolGroup01"
  --- Volume group ---
  VG Name               VolGroup01
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               15.98 GB # 最大容量
  PE Size               8.00 MB
  Total PE              2046
  Alloc PE / Size       0 / 0
  Free  PE / Size       2046 / 15.98 GB
  VG UUID               yIfmxh-tEjB-VAuX-4rhp-neHe-E1Qn-eLYXHk

  --- Physical volumes ---
  PV Name               /dev/sdb1
  PV UUID               bniqs9-9odI-EunP-uIma-reyt-0LsC-csROOC
  PV Status             allocatable
  Total PE / Free PE    1023 / 1023

  PV Name               /dev/sdc1
  PV UUID               SCPiwk-Qwn7-hh1W-OIB8-AZeq-gLkf-u9NpMY
  PV Status             allocatable
  Total PE / Free PE    1023 / 1023
※VG Sizeを見る。

(7)LVを作成
[root@example ~]# lvcreate -L 15.98G -n vol01 VolGroup01
  Rounding up size to full physical extent 15.98 GB
  Logical volume "vol01" created
※作成されたかlvscanで確認する。

(8)ext3でフォーマット
[root@example ~]# mkfs.ext3 /dev/VolGroup01/vol01
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2097152 inodes, 4190208 blocks
209510 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4290772992
128 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.


(9)マウント
[root@example ~]# mkdir /vol01
[root@example ~]# mount -t ext3 /dev/VolGroup01/vol01 /vol01
[root@example ~]# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                      5.8G  2.1G  3.4G  38% /
/dev/sda1              99M   20M   75M  21% /boot
tmpfs                 502M     0  502M   0% /dev/shm
/dev/mapper/VolGroup01-vol01
                       16G  173M   15G   2% /vol01

(10)再起動時にも自動でマウントするように設定
[root@example ~]# vi /etc/fstab
# 最終行にでも追加
/dev/VolGroup01/vol01   /vol01                  ext3    defaults        0 0


5月 11, 2011 at 11:22 pm by 黒ぶちメガネ
Category: Linux