LVMのPEのサイズをデフォルトの4MBと16MBでパフォーマンスを測定してみましたが、あまり違いはありませんでした。
物理的なハードディスクのパーティションをPEに分割するので、余は使われない領域となってしまいます。
使われない領域は、最大でPEのサイズとなるるわけですがpvdisplayコマンドで確認することができます。
PEが4MBと16MBのLVを準備する
vgcreateコマンドの-sオプションでPEのサイズを指定します。
16MBにするとLVで2GBのサイズをとれなかったので1GBにしてみました。
$ sudo pvscan PV /dev/sdb1 lvm2 [2.00 GB] PV /dev/sdc1 lvm2 [2.00 GB] Total: 2 [4.00 GB] / in use: 0 [0 ] / in no VG: 2 [4.00 GB] $ sudo vgcreate vgsdb1 /dev/sdb1 Volume group "vgsdb1" successfully created $ sudo vgcreate -s 16m vgsdc1 /dev/sdc1 Volume group "vgsdc1" successfully created $ sudo pvscan PV /dev/sdc1 VG vgsdc1 lvm2 [1.98 GB / 1.98 GB free] PV /dev/sdb1 VG vgsdb1 lvm2 [2.00 GB / 2.00 GB free] Total: 2 [3.98 GB] / in use: 2 [3.98 GB] / in no VG: 0 [0 ] $ sudo lvcreate -n lv4m --size 2G vgsdc1 Insufficient free extents (127) in volume group vgsdc1: 128 required $ sudo lvcreate -n lv4m --size 1G vgsdc1 Logical volume "lv4m" created $ sudo lvcreate -n lv4m --size 1G vgsdb1 Logical volume "lv4m" created $ sudo lvcreate -n lv16m --size 1G vgsdc1 Logical volume "lv16m" created $
測定
hdparmコマンドで簡単に測定してみました。
デフォルトの4MBの方が若干早いようです。
/dev/sda1は、rootパーティションです。
$ sudo hdparm -t /dev/vgsdb1/lv4m /dev/vgsdb1/lv4m: Timing buffered disk reads: 50 MB in 3.12 seconds = 16.01 MB/sec $ sudo hdparm -t /dev/vgsdc1/lv16m /dev/vgsdc1/lv16m: Timing buffered disk reads: 44 MB in 3.03 seconds = 14.53 MB/sec $ sudo hdparm -t /dev/sda1 /dev/sda1: Timing buffered disk reads: 48 MB in 3.07 seconds = 15.64 MB/sec $
使われない領域
pvdisplayのnot usableが利用されない領域です。
PEが16MBの領域は、15.32MB利用されない領域があります。
PEを大きくすると大きなサイズのLVをとれますが、無駄な領域が多くなるのでバランスが大事ということでしょうか。
$ sudo pvdisplay --- Physical volume --- PV Name /dev/sdc1 VG Name vgsdc1 PV Size 2.00 GB / not usable 15.32 MB Allocatable yes PE Size (KByte) 16384 Total PE 127 Free PE 63 Allocated PE 64 PV UUID --- Physical volume --- PV Name /dev/sdb1 VG Name vgsdb1 PV Size 2.00 GB / not usable 3.32 MB Allocatable yes PE Size (KByte) 4096 Total PE 511 Free PE 255 Allocated PE 256 PV UUID $