LVMを使ったディスクの切り出し
KVMつかってqcow形式使ってたらどうも調子悪いので、達人おすすめのLVMからパーティションを切り出して使う方式に切り替えようと思い立った。
3TBのUSB HDDをつないでそいつを切り出して使おうって寸法。Windowsでの利用を前提として売られている市販品です。
手順は次のようになります。
3TBのUSB HDDをつないでそいつを切り出して使おうって寸法。Windowsでの利用を前提として売られている市販品です。
手順は次のようになります。
- fdisk or gparted
- PV (pvcreate)
- LG (vgcreate)
- LV (lvcreate)
- mkfs (NetBSDでマウントして)
■ fdisk or parted
まずはfdiskですね。USBディスクは/dev/sddで見えています。
root@t105:~# fdisk /dev/sdd
WARNING: GPT (GUID Partition Table) detected on '/dev/sdd'! The util fdisk doesn't support GPT. Use GNU Parted.
WARNING: The size of this disk is 3.0 TB (3000592982016 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).
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p
Disk /dev/sdd: 3000.6 GB, 3000592982016 bytes
256 heads, 63 sectors/track, 363376 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdd1 1 266306 2147483647+ ee GPT
Command (m for help):
あらま。3TBだとfdiskでは扱えないようです。partedを使えとのことなので、そのとおり使ってみます。root@t105:~# parted /dev/sdd GNU Parted 2.3 Using /dev/sdd Welcome to GNU Parted! Type 'help' to view a list of commands. (parted)まずはヘルプを見てみます。
(parted) help align-check TYPE N check partition N for TYPE(min|opt) alignment check NUMBER do a simple check on the file system cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another partition help [COMMAND] print general help, or help on COMMAND mklabel,mktable LABEL-TYPE create a new disklabel (partition table) mkfs NUMBER FS-TYPE make a FS-TYPE file system on partition NUMBER mkpart PART-TYPE [FS-TYPE] START END make a partition mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system move NUMBER START END move partition NUMBER name NUMBER NAME name partition NUMBER as NAME print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or a particular partition quit exit program rescue START END rescue a lost partition near START and END resize NUMBER START END resize partition NUMBER and its file system rm NUMBER delete partition NUMBER select DEVICE choose the device to edit set NUMBER FLAG STATE change the FLAG on partition NUMBER toggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBER unit UNIT set the default unit to UNIT version display the version number and copyright information of GNU Parted (parted)状態を表示させるprintを実行してみます。
(parted) print Model: I-O DATA HDCA-U (scsi) Disk /dev/sdd: 3001GB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 17.4kB 134MB 134MB Microsoft reserved partition msftres 2 135MB 3001GB 3000GB ntfs Basic data partition (parted)Windows向けにあらかじめ準備されていたパーティション1と2があります。まったく使わないので削除してしまいましょう。
ただし、この操作は実行したとたんに反映されます。戻せませんのでご注意。
(parted) rm 2 (parted) rm 1 (parted)なんという寡黙なコマンド。ちゃんと消えているか確認してみます。
(parted) p Model: I-O DATA HDCA-U (scsi) Disk /dev/sdd: 3001GB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags (parted)はい。見事に消えています。
では、LVM用のパーティションを作りましょう。
単位をMiBにします。参考にしたWebページがそうしていたからですけど。
(parted) unit MiBパーティションのサイズを確認します。 Disk /dev/sdd: 2861588MiBと書かれている部分をみると全体が2861588MiBだとわかります。この数字を覚えておきます。
(parted) p Model: I-O DATA HDCA-U (scsi) Disk /dev/sdd: 2861588MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags (parted)いよいよmkpartでパーティションを作ります。パーティションタイプはprimaryで、パーティションのSTARTとENDをそれぞれ1と(先ほど覚えておいた)2861588にします。
ちなみに、スタートを1にしているのは0にすると Warning: The resulting partition is not properly aligned for best performance. という警告が出たからです。
(parted) mkpart primary 1 2861588 (parted)確認してみます。
(parted) p Model: I-O DATA HDCA-U (scsi) Disk /dev/sdd: 2861588MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 1.00MiB 2861588MiB 2861587MiB primary (parted)作成したパーティション1をLVMにセットします。ちょっと呪文っぽいset 1 lvm onというコマンドです。mkpartのhelpにもうすこし書いて欲しいものです。
(parted) set 1 lvm on (parted)確認してみましょう。Flagsにlvmと記載されています。
(parted) p Model: I-O DATA HDCA-U (scsi) Disk /dev/sdd: 2861588MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 1.00MiB 2861588MiB 2861587MiB primary lvm (parted)そういえば、そもそもGPTとして見えていたので、mklabelはしませんでした。した方がよかったかな。
■ PVを作る
PVを作るコマンドはpvcreateです。先ほど作ったパーティションをPVにします。root@t105:~# pvcreate /dev/sdd1 Physical volume "/dev/sdd1" successfully created確認のコマンドはpvscanです。一行目のものはシステムディスクのPVで二行目のものが先ほど作ったPVです。
root@t105:~# pvscan PV /dev/sda3 VG t105 lvm2 [1.82 TiB / 132.00 MiB free] PV /dev/sdd1 lvm2 [2.73 TiB] Total: 2 [4.55 TiB] / in use: 1 [1.82 TiB] / in no VG: 1 [2.73 TiB]
■ VGを作る
vgcreateでVGをつくります。KVMのVMを置く場所なのでVG-vmpoolという名前にします。
引数の-s 64mはエクステントの指定です。VGに作成可能なエクステント数の最大は65536という制限があるので、ディスクのサイズを最大エクステント数つまり65536で割ればエクステントサイズが求まるわけです。で、参考にしたWebページに早見表があって2TBだと32MBで4TBだと64MBだそうな。こいつは3TBだから64MBにしとけば(ムダは出るかもしれんが)安心でしょう。
root@t105:~# vgcreate -s 64m VG-vmpool /dev/sdd1 Volume group "VG-vmpool" successfully created作成したVGを表示します。vgdisplayというコマンドです。vgscanじゃないところがなんとも。
root@t105:~# vgdisplay -C VG #PV #LV #SN Attr VSize VFree VG-vmpool 1 0 0 wz--n- 2.73t 2.73t t105 1 2 0 wz--n- 1.82t 132.00mvgdisplayにVG名を与えると詳しい情報が出ます。
root@t105:~# vgdisplay VG-vmpool --- Volume group --- VG Name VG-vmpool 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 2.73 TiB PE Size 64.00 MiB Total PE 44712 Alloc PE / Size 0 / 0 Free PE / Size 44712 / 2.73 TiB VG UUID sfxf8p-nCr7-suHe-JxpA-Sk9C-AsBa-s2TNE5
■ LVを作る
VG-vmpoolからLVを切り出します。1TiBのサイズで名前をvol1とします。root@t105:~# lvcreate -L 1TiB -n vol1 VG-vmpool Logical volume "vol1" createdもうひとつvol2という名前で切り出してみます。
root@t105:~# lvcreate -L 1TiB -n vol2 VG-vmpool Logical volume "vol2" created確認してみます。vgdisplayをもう一度使います。lvdisplayがあればわかりやすいのに。
root@t105:~# vgdisplay -v VG-vmpool
Using volume group(s) on command line
Finding volume group "VG-vmpool"
--- Volume group ---
VG Name VG-vmpool
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 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 2.73 TiB
PE Size 64.00 MiB
Total PE 44712
Alloc PE / Size 32768 / 2.00 TiB
Free PE / Size 11944 / 746.50 GiB
VG UUID sfxf8p-nCr7-suHe-JxpA-Sk9C-AsBa-s2TNE5
--- Logical volume ---
LV Name /dev/VG-vmpool/vol1
VG Name VG-vmpool
LV UUID lmE2r2-GvBd-bBUO-19VF-9JRs-XGSz-XsG0hM
LV Write Access read/write
LV Status available
# open 0
LV Size 1.00 TiB
Current LE 16384
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 251:2
--- Logical volume ---
LV Name /dev/VG-vmpool/vol2
VG Name VG-vmpool
LV UUID FvDTk8-TvaJ-cDcZ-7Rq1-D7ef-2M3v-PmdDzx
LV Write Access read/write
LV Status available
# open 0
LV Size 1.00 TiB
Current LE 16384
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 251:3
--- Physical volumes ---
PV Name /dev/sdd1
PV UUID 228TBz-9i9u-e0ie-xoWe-1TD5-CX31-P4IfuP
PV Status allocatable
Total PE / Free PE 44712 / 11944
root@t105:~#
これで、/dev/mapperの下にvol1, vol2に相当するパーティションができています。root@t105:~# ls -l /dev/mapper total 0 crw------- 1 root root 10, 236 2012-01-18 19:27 control lrwxrwxrwx 1 root root 7 2012-01-18 19:26 t105-root -> ../dm-0 lrwxrwxrwx 1 root root 7 2012-01-18 19:27 t105-swap_1 -> ../dm-1 lrwxrwxrwx 1 root root 7 2012-01-18 19:27 VG--vmpool-vol1 -> ../dm-2 lrwxrwxrwx 1 root root 7 2012-01-18 19:27 VG--vmpool-vol2 -> ../dm-3/dev/mapper/VG--vmpool-vol1は普通のディスクとして扱うことができるので、mke2fsして使うなり、KVMのゲストOS向けのディスクとして見せるなり、お好きにお使いください。
コメント(0件)
- TB-URL http://www.tokuda.net/diary/0767/tb/