Slide 1

Slide 1 text

lsblkのTYPEフィールドの値を 自由に変更 Nov. 28th, 2023 Satoru Takeuchi X: satoru_takeuchi 1

Slide 2

Slide 2 text

今回話すこと ● 「その59 lsblkのtypeフィールドのしくみ」の続き ● lsblkのtypeフィールドの値を自由に変更する方法 2

Slide 3

Slide 3 text

lsblkコマンドのtypeフィールド 3

Slide 4

Slide 4 text

TYPEフィールドでたまに困ることがある ● ブロックデバイスを扱うコマンドが特定のTYPEを受け付けないことがある ○ e.g. ceph-volume lvm preapreコマンドはdisk, part, lvmなど一部しか使えない ● 本番環境はさておきテスト用には任意のデバイスを使いたい 4

Slide 5

Slide 5 text

lsblkのソース ● util-linuxの中にある ● githubだとgithub.com/util-linux/util-linux ● typeを判定しているのはmisc_utils/lsblk.c#get_type() ○ https://github.com/util-linux/util-linux/blob/master/misc-utils/lsblk.c#L456-L469 ● dmデバイスの場合 ○ UUIDは/sys/block//dm/uuidファイルの値で判断 ○ UUIDが”-”という形式ならTYPEフィールドの値はを小文字にしたもの ■ が”part”で始まっていれば例外的に ”part”になる ○ そうでなければ”dm” 5

Slide 6

Slide 6 text

linearターゲットの場合 6 cat test-linear.txt sudo dmsetup create test-linear test-linear.txt lsblk cat /sys/block/dm-X/dm/uuid sudo dmsetup remove test-linear

Slide 7

Slide 7 text

linearターゲットの場合 7 cat test-linear.txt sudo dmsetup create test-linear test-linear.txt lsblk cat /sys/block/dm-X/dm/uuid sudo dmsetup remove test-linear NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 1G 0 loop └─test-linear 253:0 0 1G 0 dm

Slide 8

Slide 8 text

dmデバイスのuuidは作成時に自分で設定できる ● dmsetup createに-u オプションを渡せばいい ● 例: linearデバイスをdiskとして認識させる 8 sudo dmsetup create -u disk-foobar test-linear test-linear.txt lsblk sudo dmsetup remove test-linear

Slide 9

Slide 9 text

dmデバイスのuuidは作成時に自分で設定できる ● dmsetup createに-u オプションを渡せばいい ● 例: linearデバイスをdiskとして認識させる 9 sudo dmsetup create -u disk-foobar test-linear test-linear.txt lsblk sudo dmsetup remove test-linear NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 1G 0 loop └─test-linear 253:0 0 1G 0 disk

Slide 10

Slide 10 text

悪ふざけもできる 10 sudo dmsetup create -u helpme...-foobar test-linear test-linear.txt lsblk sudo dmsetup remove test-linear

Slide 11

Slide 11 text

悪ふざけもできる 11 sudo dmsetup create -u helpme...-foobar test-linear test-linear.txt lsblk sudo dmsetup remove test-linear NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 1G 0 loop └─test-linear 253:0 0 1G 0 helpme...

Slide 12

Slide 12 text

まとめ ● lsblkコマンドのTYPEフィールドの値は自由に書き換えられる ● 適当にソースコードを読むとちょっとしたハックの方法がわかってうれしい 12