Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Linuxの色々なブロックデバイス

 Linuxの色々なブロックデバイス

以下動画のテキストです。
https://youtu.be/bEogvqKvoIQ

Satoru Takeuchi
PRO

April 27, 2023
Tweet

More Decks by Satoru Takeuchi

Other Decks in Technology

Transcript

  1. Linuxの色々なブロックデバイス
    Apr. 27th, 2023
    Satoru Takeuchi
    twitter: satoru_takeuchi

    View Slide

  2. はじめに
    ● ブロックデバイスとは
    ○ ブロック単位でデータを読み書きする (最小単位は通常512バイト)
    ○ 「デバイス内のオフセット XX番からYYバイト読み出す」のようにランダムアクセス可能
    ● 一般的にはHDDやSSDのようなディスクデバイスだと思えばいい
    ○ /dev/sdaとか/dev/nvme0n1とか
    ● それ以外にもいろいろな種類のブロックデバイスがある
    ● よく使われるものからマイナーなものまでいろいろ紹介

    View Slide

  3. 物理ディスク
    ● HDD, SSD, NVMe SSD…
    /dev/sdX
    ユーザ空間
    カーネル空間
    物理世界
    /dev/nvmeXnY
    SCSIディスク
    /dev/hdX
    IDEディスク
    NVMe SSD

    View Slide

  4. 仮想ディスク
    ● VM上に存在する特殊なディスク
    ● /dev/vdXという名前
    ● 高速化のためにVMとホストOSとの間で特殊な通信をしている
    ユーザ空間
    (VM)
    カーネル空間
    (VM)
    カーネル空間
    (ホスト)
    /dev/vdX
    むずかしい
    しくみ

    View Slide

  5. ループデバイス
    ● /dev/loopXという名前
    ● ファイルをデバイスとして扱うために使う
    ● “mount test.iso /mnt”などによるisoイメージのマウントでは裏でloopデバイスを使

    /dev/loopX
    ファイルシステム
    ファイル
    ユーザ空間
    カーネル空間
    物理世界

    View Slide

  6. brd
    ● RAMの一部をブロックデバイスとして扱う
    ● /dev/ramXという名前
    /dev/ramX
    RAM
    ユーザ空間
    カーネル空間
    物理世界

    View Slide

  7. nbd
    ● ネットワークブロックデバイス
    ● /dev/ndbXという名前
    ● ネットワーク上の任意のデータをブロックデバイスとして見せられる
    ユーザ空間
    カーネル空間
    物理世界
    ネットワーク層
    NIC
    /dev/nbdX
    なんらかのもの

    View Slide

  8. rbd
    ● 分散ストレージCephのブロックデバイス
    ● /dev/rbdXという名前
    ユーザ空間
    カーネル空間
    物理世界
    ネットワーク層
    NIC
    /dev/rbdX
    Cephクラスタ
    ディスクイメージ
    CephのRBDドライバ

    View Slide

  9. multiple devices
    ● 複数のブロックデバイスから1つのブロックデバイスを構成
    ● /dev/mdXという名前
    ● RAID(mdraid)やmultipath deviceを実現
    ユーザ空間
    カーネル空間
    /dev/sdX /dev/sdY
    multiple device(md)層
    /dev/mdX
    /dev/sdaと/dev/sdbから
    構成されるRAID1デバイス
    (2) 作る
    物理世界
    ディスク ディスク
    (1) 束ねる

    View Slide

  10. device mapper
    ● 任意のものをブロックデバイスとして見せるしくみ
    ● /dev/dmXという名前
    ● 以後のページではdevice mapperを利用したさまざまなデバイスを紹介
    ユーザ空間
    カーネル空間
    /dev/dm-X
    device mapper(dm)層
    この先はなんでもいい

    View Slide

  11. device mapper: dm-raid
    ● 複数のデバイスから成るRAID構成のブロックデバイスを生成
    ● mdraidと混同しがちだが別物
    ユーザ空間
    カーネル空間
    /dev/sdX /dev/sdY
    device mapper(dm)層
    /dev/dm-X
    /dev/sdXと/dev/sdYから
    構成されるRAID1デバイス
    (2) 作る
    物理世界
    ディスク ディスク
    (1) 束ねる

    View Slide

  12. device mapper: dm-linear
    ● 様々なブロックデバイスの様々な範囲をリニアマップできる
    ● たとえばJBODのようなことをできる
    ● 200GiBのブロックデバイス
    ● オフセット < 100GiB: sdXへアクセス
    ● オフセット >= 100GiB: sdYへアクセス
    ユーザ空間
    カーネル空間
    /dev/sdX /dev/sdY
    multiple device(md)層
    /dev/mdX
    (2) 作る
    物理世界
    ディスク ディスク
    (1) 束ねる

    View Slide

  13. device mapper: dm-flakey
    ● 指定したデバイスにリニアマップされたブロックデバイスを生成
    ● 所定の条件でEIOを返すようにできる(疑似的にエラーを起こせる)
    ● 基本的にはsdXにそのままアクセス
    ● 所定の条件を満たすと EIOを返す
    ユーザ空間
    カーネル空間
    /dev/sdX
    multiple device(md)層
    /dev/mdX
    (2) 作る
    物理世界
    ディスク
    (1) 組み込む

    View Slide

  14. LVM(Logical Volume Manager)
    ● ボリューム管理ツール
    ● device mapperの仕組みを利用
    ● 3つの概念が存在
    ○ PV(Physical Volume): 後述のVGを構成する1つ以上のブロックデバイス
    ○ VG(Volume Group): PVを束ねて作るボリュームグループ。ストレージプールを構成
    ○ LV(Logical Volume): VGから好きなサイズを切り出せる
    ■ それぞれ/dev//という名前がつく
    ● 特徴
    ○ 無停止のVG/LV拡張/縮小
    ○ RAID組める
    ○ snapshot
    /dev/sdX /dev/sdY /dev/sdZ
    VG
    PV
    LV LV

    View Slide

  15. lvmthin
    ● シンプロビジョニングされたLVM logical volume
    a. ディスク利用効率が高い
    b. snapshotがLVMより優れている(通常のLVのsnapshotは採取後のI/O性能が大きく劣化)
    ● LVMとdm-thinというdevice mapperの合わせ技
    ● しくみ
    1. VGの上にthin poolと呼ばれる特別なLVを作る
    2. thin pool内にthin volume(mdデバイス)を作る
    3. thin volumeにアクセスされたらthin pool上のデータへのアクセスに変換
    VG
    LV(thinpool) LV(thin volume) LV(thin volume)
    1. 切り出し
    2. 切り出し

    View Slide