ログイン
編集不可のページディスカッション情報添付ファイル
"ytoku/Slides/LVM再考"の差分

MMA
9と10のリビジョン間の差分
2011-07-22 01:10:30時点のリビジョン9
サイズ: 5644
編集者: ytoku
コメント:
2011-07-22 01:30:51時点のリビジョン10
サイズ: 4704
編集者: ytoku
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 129: 行 129:
 * これを用いて物理ボリュームから使用しているエクステントを無くしてディスクの交換が可能になる  * これを用いて複数の物理ボリュームにまたがっていた論理ボリュームを一つのボリュームにまとめたり、逆に小さい複数の物理ボリュームに分けることが可能
行 131: 行 131:
{{{{#!wiki comment
= LVMの使用方法(2) =
状態表示
 * ボリュームグループ一覧{{{
# vgs
  VG #PV #LV #SN Attr VSize VFree
  vg1 3 7 0 wz--n- 1.83t 762.25g
  vgtest 3 1 0 wz--n- 1.39g 1.36g
}}}
 * 物理ボリューム一覧{{{
# pvs
  PV VG Fmt Attr PSize PFree
  /dev/sda4 vg1 lvm2 a- 211.31g 111.28g
  /dev/sdb1 vg1 lvm2 a- 298.08g 3.06g
  /dev/sdc2 vg1 lvm2 a- 1.33t 647.91g
}}}
 * 論理ボリューム一覧{{{
  LV VG Attr LSize Origin Snap% Move Log Copy% Convert
  test vgtest -wi-a- 32.00m
}}}

= LVMの使用方法(3) =
 * 論理ボリューム拡大{{{
# lvextend -L +10GB myvg/test
}}}
 * 論理ボリューム縮小{{{
# lvreduce -L -10GB myvg/test
}}}
  * 縮小するときはファイルシステムに対する縮小操作を先にやっておく
 * 物理ボリュームの追加{{{
# vgextend myvg /dev/sdc2
}}}
 * 物理ボリュームの除去{{{
# vgreduce myvg /dev/sdc2
}}}
 * 物理ボリュームのリサイズ{{{
# pvresize /dev/sdc2
}}}
}}}}
= まとめ =
 * ZFSにだって……できないことくらい…ある…
 * かゆいところに手が届くLVM

LVM再考

LVM再考

ZFSがあれば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再考 (最終更新日時 2011-07-27 01:48:19 更新者 ytoku)