Login
Immutable PageDiscussionInfoAttachments
Diff for "ytoku/Slides/LVM再考"

MMA
Differences between revisions 11 and 12
Revision 11 as of 2011-07-23 18:17:12
Size: 4712
Editor: ytoku
Comment:
Revision 12 as of 2011-07-27 01:48:19
Size: 4722
Editor: ytoku
Comment:
Deletions are marked like this. Additions are marked like this.
Line 11: Line 11:
ZFSがあればLVMは不要か? ZFS(on Linux)があればLVMは不要か?

スライドショーの開始

LVM再考

LVM再考

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は要らない…………




そんな風に考えていた時期が私にもありました

あるシナリオ(1)

  • 今、300GBのHDD(sda)と500GBのHDD(sdb)と2TBのHDD(sdc)がある。
  • 300GBと2TBの間、500GBと2TBの間でミラーリングして連結すれば、ミラーリングされた800GBの領域が出来るはず。

expected structure

  • ZFSを使ってミラーリングされた800GBの領域を作りましょう。

あるシナリオ(2)

sdaとsdbは一つのパーティションにして、sdcには300GBと500GBのパーティションを作成すればいいよね。

# zpool create ztank mirror /dev/sda1 /dev/sdc1 mirror /dev/sdb1 /dev/sdc2

expected structure

本当にそれで良いのか?

あるシナリオ(3)

  • zpoolは複数のパーティションをaddすると問答無用でストライピングするらしい。
  • つまりsdc1とsdc2でストライピングすることに……

actual structure

  • シーケンシャルアクセスもランダムアクセスになってるぞこれ
  • さらに、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

ytoku/Slides/LVM再考 (last edited 2011-07-27 01:48:19 by ytoku)