##master-page:SlideShowTemplate #format wiki <> = LVM再考 = {{{#!wiki slidetitle slidemargin center large LVM再考 }}} {{{#!wiki slidetitle center larger ZFS(on Linux)があればLVMは不要か? }}} = LVMとは = * 複数のディスクにまたがるファイルシステムを作ったり出来るようにするもの * 構造としては、物理ボリューム(PV)を物理エクステント(PE)という単位に分割して、物理エクステントの組み合わせで論理ボリューム(LV)を構成するようになっている。 ~-{{{ Another way to look at is this (courtesy of Erik Bågfors on the linux-lvm mailing list): hda1 hdc1 (PV:s on partitions or whole disks) \ / \ / diskvg (VG) / | \ / | \ usrlv rootlv varlv (LV:s) | | | ext2 reiserfs xfs (filesystems) -- LVM HOWTOより引用 }}}-~ * 物理ボリュームの追加・削除や論理ボリュームのサイズ変更は後から可能 * ついでにストライピングやミラーリングも出来たりする = ZFS? = ZFSでもファイルシステムのサイズは可変だし、プールにパーティションを追加できるじゃない。 ZFSがあればLVMは要らない………… <
><
><
> {{{#!wiki center ~+そんな風に考えていた時期が私にもありました+~ }}} = あるシナリオ(1) = * 今、300GBのHDD(sda)と500GBのHDD(sdb)と2TBのHDD(sdc)がある。 * 300GBと2TBの間、500GBと2TBの間でミラーリングして連結すれば、ミラーリングされた800GBの領域が出来るはず。 {{{#!wiki center {{attachment:ZFS-expected.png|expected structure}} }}} * ZFSを使ってミラーリングされた800GBの領域を作りましょう。 = あるシナリオ(2) = sdaとsdbは一つのパーティションにして、sdcには300GBと500GBのパーティションを作成すればいいよね。 {{{ # zpool create ztank mirror /dev/sda1 /dev/sdc1 mirror /dev/sdb1 /dev/sdc2 }}} {{{#!wiki center {{attachment:ZFS-expected.png|expected structure|align="middle"}} }}} 本当にそれで良いのか? = あるシナリオ(3) = * zpoolは複数のパーティションをaddすると問答無用でストライピングするらしい。 * つまりsdc1とsdc2でストライピングすることに…… {{{#!wiki center {{attachment:ZFS-actual.png|actual structure|align="middle}} }}} * シーケンシャルアクセスもランダムアクセスになってるぞこれ * さらに、ZFSは一旦追加したパーティションを縮小・削除できない(交換は出来るが)。 * なお、attachと間違えてaddするとpoolごと作り直し。 * 要するにZFSは基本的に台数を減らせない設計 = LVMの基本操作 = 基本操作 * 物理ボリュームをLVM用に初期化する{{{ # pvcreate /dev/sd[abc]1 }}} * ボリュームグループを作成{{{ # vgcreate myvg /dev/sda[abc]1 }}} * 論理ボリューム作成{{{ # lvcreate -L 50GB -n test myvg }}} * `/dev/myvg/test`からアクセスできる。後はmkfsなりmountなり普通に操作する = 使用する物理エクステントを指定する = * 論理ボリュームを作成するときに、どの物理ボリューム・エクステントを割り付けるかは指定が可能{{{ # lvcreate -L12MB -ntest vgtest /dev/loop1:10- Logical volume "test" created # pvdisplay -m /dev/loop1 (略) --- Physical Segments --- Physical extent 0 to 9: FREE Physical extent 10 to 12: Logical volume /dev/vgtest/test Logical extents 0 to 2 Physical extent 13 to 94: FREE }}} = オンラインでエクステントを移動する = * 使用しているボリュームのエクステントを移動することも可能{{{ # pvmove /dev/loop1:11 /dev/loop0:0 # pvdisplay -m /dev/loop1 --- Physical Segments --- Physical extent 0 to 9: FREE Physical extent 10 to 10: Logical volume /dev/vgtest/test Logical extents 0 to 0 Physical extent 11 to 11: FREE Physical extent 12 to 12: Logical volume /dev/vgtest/test Logical extents 2 to 2 Physical extent 13 to 94: FREE }}} * これを用いて複数の物理ボリュームにまたがっていた論理ボリュームを一つのボリュームにまとめたり、逆に小さい複数の物理ボリュームに分けることが可能 = まとめ = * ZFSにだって……できないことくらい…ある… * かゆいところに手が届くLVM