■はじめに
CentOS 6サーバのLogical Volume Manager(以下:LVMと表記)によるファイルシステム作成手順です。
CentOS 6のサーバに新しいハードディスク(以下:HDDと表記)をセットし、/dev/sdbとして認識されている状態で、LVMにより/dev/sdbにext4ファイルシステムを作成してマウントするまでの手順になります。
CentOS 6をインストールしたサーバに/dev/sdbが認識されている状態から作業を開始する前提で記述させて頂きます。
■コマンドを実行した環境について
・CentOS release 6.6 (2.6.32-504.3.3.el6.x86_64)
・HP ProLiant DL360p Gen8(HP DL360 G8)サーバにCentOS 6をインストールして試しました。
■LVMによるファイルシステム作成手順
・作業開始前の初期状態を確認します。
/dev/sdbにLVMによりファイルシステムを作成する前に、まず作業開始前の初期状態を確認します。
今回の例では、/(rootパーティション)はLVMにより作成された/dev/sdaに格納しております。
# cat /etc/redhat-release
CentOS release 6.6 (Final)
#
# df -Ph
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_privatednsunb-lv_root 259G 998M 245G 1% /
tmpfs 16G 0 16G 0% /dev/shm
/dev/sda1 477M 48M 405M 11% /boot
#
Physical Volume(PV)の初期状態を確認します。
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg_privatednsunb lvm2 a-- 278.88g 0
#
Volume Group(VG)の初期状態を確認します。
# vgs
VG #PV #LV #SN Attr VSize VFree
vg_privatednsunb 1 2 0 wz--n- 278.88g 0
#
Logical Volume(LV)の初期状態を確認します。
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_root vg_privatednsunb -wi-ao---- 263.15g
lv_swap vg_privatednsunb -wi-ao---- 15.73g
#
HDDデバイス認識の初期状態を確認します。
/dev/sdbが認識されている事、/dev/sdbは認識されているが、/dev/sdb1が存在しない事(/dev/sdbにファイルシステムはまだ未作成である事)を確認します。
# ls -lrta /dev/sda*
brw-rw---- 1 root disk 8, 0 1月 9 18:54 2015 /dev/sda
brw-rw---- 1 root disk 8, 2 1月 9 18:54 2015 /dev/sda2
brw-rw---- 1 root disk 8, 1 1月 9 18:54 2015 /dev/sda1
#
# ls -lrta /dev/sdb*
brw-rw---- 1 root disk 8, 16 1月 9 18:54 2015 /dev/sdb
#
fdiskでHDDのパーティション初期状態を確認します。
# fdisk -l
ディスク /dev/sda: 300.0 GB, 299966445568 バイト
ヘッド 255, セクタ 63, シリンダ 36468
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
ディスク識別子: 0x0007118c
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 1 64 512000 83 Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2 64 36469 292422656 8e Linux LVM
ディスク /dev/sdb: 300.0 GB, 299966445568 バイト
ヘッド 255, セクタ 63, シリンダ 36468
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
ディスク識別子: 0x0008ba94
デバイス ブート 始点 終点 ブロック Id システム
ディスク /dev/mapper/vg_privatednsunb-lv_root: 282.6 GB, 282553483264 バイト
ヘッド 255, セクタ 63, シリンダ 34351
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
ディスク識別子: 0x00000000
ディスク /dev/mapper/vg_privatednsunb-lv_swap: 16.9 GB, 16886267904 バイト
ヘッド 255, セクタ 63, シリンダ 2052
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
ディスク識別子: 0x00000000
#
・/dev/sdbの領域システムタイプをLVMパーティションに変更する。
# fdisk /dev/sdb
警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを
強く推奨します。 and change display units to
sectors (command 'u').
コマンド (m でヘルプ): m →「m」と入力してヘルプを表示する。
コマンドの動作
a ブート可能フラグをつける
b bsd ディスクラベルを編集する
c dos 互換フラグをつける
d 領域を削除する
l 既知の領域タイプをリスト表示する
m このメニューを表示する
n 新たに領域を作成する
o 新たに空の DOS 領域テーブルを作成する
p 領域テーブルを表示する
q 変更を保存せずに終了する
s 空の Sun ディスクラベルを作成する
t 領域のシステム ID を変更する
u 表示/項目ユニットを変更する
v 領域テーブルを照合する
w テーブルをディスクに書き込み、終了する
x 特別な機能 (エキスパート専用)
コマンド (m でヘルプ): n →「n」と入力して領域を作成する。
コマンドアクション
e 拡張
p 基本パーティション (1-4)
p →「p」と入力して基本パーティションとして作成する。
パーティション番号 (1-4): 1 →「1」と入力する。
最初 シリンダ (1-36468, 初期値 1): → Enterキーを押下してデフォルト値とする。
初期値 1 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-36468, 初期値 36468):
初期値 36468 を使います
コマンド (m でヘルプ): l
0 空 24 NEC DOS 81 Minix / 古い bf Solaris
1 FAT12 39 Plan 9 82 Linux スワッ c1 DRDOS/sec (FAT-
2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 40 Venix 80286 84 OS/2 隠し C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 41 PPC PReP Boot 85 Linux 拡張領 c7 Syrinx
5 拡張領域 42 SFS 86 NTFS ボリュ da 非 FS デー
6 FAT16 4d QNX4.x 87 NTFS ボリュ db CP/M / CTOS / .
7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux プレー de Dell ユーテ
8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt
9 AIX ブート 50 OnTrack DM 93 Amoeba e1 DOS access
a OS/2 ブート 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad eb BeOS fs
e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT
f W95 拡張領 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC
11 隠し FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
12 Compaq 診断 61 SpeedStor a9 NetBSD f4 SpeedStor
14 隠し FAT16 <3 63 GNU HURD また ab Darwin ブー f2 DOS セカン
16 隠し FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS
17 隠し HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 70 DiskSecure Mult b8 BSDI スワッ fd Linux raid 自
1b 隠し W95 FAT3 75 PC/IX bb 隠し Boot Wiz fe LANstep
1c 隠し W95 FAT3 80 古い Minix be Solaris ブー ff BBT
1e 隠し W95 FAT1
コマンド (m でヘルプ): t →「t」と入力して領域のシステムIDを変更する。
選択した領域 1
16進数コード (L コマンドでコードリスト表示): 8e →「8e」と入力してLinuxLVMを指定する。
領域のシステムタイプを 1 から 8e (Linux LVM) に変更しました
コマンド (m でヘルプ): p →「p」と入力する。
ディスク /dev/sdb: 300.0 GB, 299966445568 バイト
ヘッド 255, セクタ 63, シリンダ 36468
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
ディスク識別子: 0x0008ba94
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 1 36468 292929178+ 8e Linux LVM
Partition 1 does not start on physical sector boundary.
コマンド (m でヘルプ): w →「w」と入力して設定した内容を保存する。
パーティションテーブルは変更されました!
ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。
#
/dev/sdbの領域システムタイプが8e(LVM)に変更された事を確認します。
# fdisk -l
ディスク /dev/sda: 300.0 GB, 299966445568 バイト
ヘッド 255, セクタ 63, シリンダ 36468
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
ディスク識別子: 0x0007118c
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 1 64 512000 83 Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2 64 36469 292422656 8e Linux LVM
ディスク /dev/sdb: 300.0 GB, 299966445568 バイト
ヘッド 255, セクタ 63, シリンダ 36468
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
ディスク識別子: 0x0008ba94
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 1 36468 292929178+ 8e Linux LVM →「8e」(LVM)と表示されている事を確認する。
Partition 1 does not start on physical sector boundary.
ディスク /dev/mapper/vg_privatednsunb-lv_root: 282.6 GB, 282553483264 バイト
ヘッド 255, セクタ 63, シリンダ 34351
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
ディスク識別子: 0x00000000
ディスク /dev/mapper/vg_privatednsunb-lv_swap: 16.9 GB, 16886267904 バイト
ヘッド 255, セクタ 63, シリンダ 2052
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
ディスク識別子: 0x00000000
#
・/dev/sdb1が作成された事を確認します。
# ls -lrta /dev/sda*
brw-rw---- 1 root disk 8, 0 1月 9 18:54 2015 /dev/sda
brw-rw---- 1 root disk 8, 2 1月 9 18:54 2015 /dev/sda2
brw-rw---- 1 root disk 8, 1 1月 9 18:54 2015 /dev/sda1
#
# ls -lrta /dev/sdb*
brw-rw---- 1 root disk 8, 17 1月 13 11:22 2015 /dev/sdb1
brw-rw---- 1 root disk 8, 16 1月 13 11:22 2015 /dev/sdb
#
・/dev/sdb1にPhysical Volume(PV)を作成します。
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg_privatednsunb lvm2 a-- 278.88g 0
#
# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name vg_privatednsunb
PV Size 278.88 GiB / not usable 0
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 71392
Free PE 0
Allocated PE 71392
PV UUID (UUIDが表示される)
#
# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
#
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg_privatednsunb lvm2 a-- 278.88g 0
/dev/sdb1 lvm2 --- 279.36g 279.36g
#
# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name vg_privatednsunb
PV Size 278.88 GiB / not usable 0
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 71392
Free PE 0
Allocated PE 71392
PV UUID (UUIDが表示される)
"/dev/sdb1" is a new physical volume of "279.36 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 279.36 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID (UUIDが表示される)
#
・/dev/sdb1にVolume Group(VG)を作成します。
先ほど/dev/sdb1に作成したPhysical Volume(PV)を指定して、Volume Group(VG)を作成します。
Volume Group(VG)を別途最大2TBまで拡張するような場合は「-s」オプションで32MBを指定して作成します。
例として、Volume Group名はVolGroup01として作成します。
# vgs
VG #PV #LV #SN Attr VSize VFree
vg_privatednsunb 1 2 0 wz--n- 278.88g 0
#
# vgdisplay
--- Volume group ---
VG Name vg_privatednsunb
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 278.88 GiB
PE Size 4.00 MiB
Total PE 71392
Alloc PE / Size 71392 / 278.88 GiB
Free PE / Size 0 / 0
VG UUID (UUIDが表示される)
#
# vgcreate -s 32m VolGroup01 /dev/sdb1
Volume group "VolGroup01" successfully created
#
# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup01 1 0 0 wz--n- 279.34g 279.34g
vg_privatednsunb 1 2 0 wz--n- 278.88g 0
#
# vgdisplay
--- Volume group ---
VG Name VolGroup01
System ID
Format lvm2
Metadata Areas 1
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 1
Act PV 1
VG Size 279.34 GiB
PE Size 32.00 MiB
Total PE 8939
Alloc PE / Size 0 / 0
Free PE / Size 8939 / 279.34 GiB
VG UUID (UUIDが表示される)
--- Volume group ---
VG Name vg_privatednsunb
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 278.88 GiB
PE Size 4.00 MiB
Total PE 71392
Alloc PE / Size 71392 / 278.88 GiB
Free PE / Size 0 / 0
VG UUID (UUIDが表示される)
#
・Logical Volume(LV)を作成します。
先ほど作成したVolume Group(VG)を指定して、Logical Volume(LV)を作成します。
/dev/sdbに認識されているHDDのサイズが約260GBだとします。
今回の例では、Logical Volume(LV)のサイズを「-L」オプションで263.15Gと指定して作成します。
例として、Logical Volume名はLogVol00として作成します。
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_root vg_privatednsunb -wi-ao---- 263.15g
lv_swap vg_privatednsunb -wi-ao---- 15.73g
#
# lvdisplay
--- Logical volume ---
LV Path /dev/vg_privatednsunb/lv_root
LV Name lv_root
VG Name vg_privatednsunb
LV UUID (UUIDが表示される)
LV Write Access read/write
LV Creation host, time (ホスト名が表示される), 2015-01-07 10:30:48 +0900
LV Status available
# open 1
LV Size 263.15 GiB
Current LE 67366
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
--- Logical volume ---
LV Path /dev/vg_privatednsunb/lv_swap
LV Name lv_swap
VG Name vg_privatednsunb
LV UUID (UUIDが表示される)
LV Write Access read/write
LV Creation host, time (ホスト名が表示される), 2015-01-07 10:31:10 +0900
LV Status available
# open 1
LV Size 15.73 GiB
Current LE 4026
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
#
# lvcreate -L 263.15G -n LogVol00 VolGroup01
Rounding up size to full physical extent 263.16 GiB
Logical volume "LogVol00" created
#
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
LogVol00 VolGroup01 -wi-a----- 263.16g
lv_root vg_privatednsunb -wi-ao---- 263.15g
lv_swap vg_privatednsunb -wi-ao---- 15.73g
#
# lvdisplay
--- Logical volume ---
LV Path /dev/VolGroup01/LogVol00
LV Name LogVol00
VG Name VolGroup01
LV UUID (UUIDが表示される)
LV Write Access read/write
LV Creation host, time (ホスト名が表示される), 2015-01-13 12:25:53 +0900
LV Status available
# open 0
LV Size 263.16 GiB
Current LE 8421
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
--- Logical volume ---
LV Path /dev/vg_privatednsunb/lv_root
LV Name lv_root
VG Name vg_privatednsunb
LV UUID (UUIDが表示される)
LV Write Access read/write
LV Creation host, time (ホスト名が表示される), 2015-01-07 10:30:48 +0900
LV Status available
# open 1
LV Size 263.15 GiB
Current LE 67366
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
--- Logical volume ---
LV Path /dev/vg_privatednsunb/lv_swap
LV Name lv_swap
VG Name vg_privatednsunb
LV UUID (UUIDが表示される)
LV Write Access read/write
LV Creation host, time (ホスト名が表示される), 2015-01-07 10:31:10 +0900
LV Status available
# open 1
LV Size 15.73 GiB
Current LE 4026
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
#
・作成したLogical Volume(LV)にext4ファイルシステムを作成します。
今回の例では、/dev/sdbにセットした約260GBのHDDにext4ファイルシステムを作成します。
# ll /dev/VolGroup01/LogVol00
lrwxrwxrwx 1 root root 7 1月 13 12:25 2015 /dev/VolGroup01/LogVol00 -> ../dm-2
#
mkfsコマンドを実行し、先ほど作成したLogical Volume(LV)にext4ファイルシステムを作成します。
# mkfs -t ext4 /dev/VolGroup01/LogVol00
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=64 blocks, Stripe width=64 blocks
17252352 inodes, 68984832 blocks
3449241 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
2106 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
#
■LVMにより作成したファイルシステムのマウント手順
・ext4でフォーマットしたLogical Volume(LV)をマウントします。
今回の例では、/exampleパーティションとしてext4でフォーマットしたLogical Volume(LV)をマウントします。
# df -Ph
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_privatednsunb-lv_root 259G 998M 245G 1% /
tmpfs 16G 0 16G 0% /dev/shm
/dev/sda1 477M 48M 405M 11% /boot
#
# mkdir /example
#
# mount -o rw -t ext4 /dev/VolGroup01/LogVol00 /example
#
# df -Ph
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_privatednsunb-lv_root 259G 998M 245G 1% /
tmpfs 16G 0 16G 0% /dev/shm
/dev/sda1 477M 48M 405M 11% /boot
/dev/mapper/VolGroup01-LogVol00 259G 60M 246G 1% /example
#
・/example配下にファイル読み書き出来るかテストします。
# date >> /example/test.txt
# cat /example/test.txt
2015年 1月 13日 火曜日 12:37:45 JST
#
・サーバ起動時に自動的に/exampleをマウントさせたい場合、/etc/fstabにマウント設定を追加します。
# cp -p /etc/fstab /etc/fstab.ORG
# diff /etc/fstab /etc/fstab.ORG
#
# echo "/dev/VolGroup01/LogVol00 /example ext4 defaults 1 2" >> /etc/fstab
#
# diff /etc/fstab /etc/fstab.ORG
16d15
< /dev/VolGroup01/LogVol00 /example ext4 defaults 1 2
#
# tail -1 /etc/fstab
/dev/VolGroup01/LogVol00 /example ext4 defaults 1 2
#
# ll /example/
合計 20
drwx------ 2 root root 16384 1月 13 12:31 2015 lost+found
-rw-r--r-- 1 root root 43 1月 13 12:37 2015 test.txt
#
# umount /example
#
# ll /example/
合計 0
#
# df -Ph
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_privatednsunb-lv_root 259G 998M 245G 1% /
tmpfs 16G 0 16G 0% /dev/shm
/dev/sda1 477M 48M 405M 11% /boot
#
・サーバをリブートします。
# reboot
・サーバが起動してきたら、/exampleがマウントされている事を確認します。
/example配下にファイル読み書き出来るかテストして、問題なければ完了になります。
# df -Ph
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_privatednsunb-lv_root 259G 998M 245G 1% /
tmpfs 16G 0 16G 0% /dev/shm
/dev/sda1 477M 48M 405M 11% /boot
/dev/mapper/VolGroup01-LogVol00 259G 60M 246G 1% /example
#
# mount | grep example
/dev/mapper/VolGroup01-LogVol00 on /example type ext4 (rw)
#
# ll /example/
合計 20
drwx------ 2 root root 16384 1月 13 12:31 2015 lost+found
-rw-r--r-- 1 root root 43 1月 13 12:37 2015 test.txt
#
# cat /example/test.txt
2015年 1月 13日 火曜日 12:37:45 JST
#
# date >> /example/test2.txt
# date >> /example/test2.txt
#
# cat /example/test2.txt
2015年 1月 13日 火曜日 12:57:41 JST
2015年 1月 13日 火曜日 12:57:43 JST
#
以上になります。