dmsetup 命令
一、Device Mapper 介紹
參考: Device Mapper
二、dmsetup介紹
根據官方解釋,說dmsetup 是low level logical volume management 。我理解的意思是,這是一個更加底層的邏輯卷管理工具。平時我們管理linux 上的邏輯卷,使用lvm相關的工具即可。lvs是更高級的管理邏輯卷的命令,但是,有時候會出現類似lvm 刪除不掉的lvm分區。我們可以使用dmsetup 去刪除。
下圖可以看到其實lvm 所管理的邏輯卷,是dm設備的軟鏈接,而直接操作dm設備,我們就可以用dmsetup。
三、dmsetup 命令語法格式
dmsetup + <command> + <device_name> or <uuid>
# command 常見的有 remove 、 ls 、status 等
# device_name: 可以是/dev/sd*,或者是物理卷的名稱
四、常用命令
顯示當前devicemapper 的信息
demsetup ls #列出所有邏輯設備
demsetup status # 列出所有邏輯設備的狀態信息
desetup remove # 移除邏輯設備
顯示設備依賴關系
dmsetup deps
五、案例
下面將演示一個lv程序無法處理的問題。必須使用dmsetup來處理
1、創建lv邏輯卷。
# 創建邏輯卷
[root@seed-84 ~]# vgcreate vg-test /dev/sdb
Physical volume "/dev/sdb" successfully created.
Volume group "vg-test" successfully created
[root@seed-84 ~]# lvcreate -n vg-lv -l 100%FREE vg-test
Logical volume "vg-lv" created.
# 查看邏輯卷
[root@seed-84 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
vg-lv vg-test -wi-a----- <16.00g
2、查看lvm路徑
[root@seed-84 ~]# ll /dev/mapper/vg--test-vg--lv
lrwxrwxrwx. 1 root root 7 May 27 11:51 /dev/mapper/vg--test-vg--lv -> ../dm-0
3、rm 刪除 dm-0(這里為非正常刪除,為了演示現象)
[root@seed-84 ~]# rm /dev/dm-0
rm: remove block special file ‘/dev/dm-0’? y
4、刪除/dev/mapper/下的vg-test目錄。
rm /dev/mapper/vg--test-vg--lv -rf
5、使用sgdisk 格式化磁盤信息
[root@seed-84 ~]# sgdisk -z /dev/sdb
Creating new GPT entries.
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.
[root@seed-84 ~]# sgdisk -Z /dev/sdb
Creating new GPT entries.
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.
6、執行wipefs -a 嘗試擦該設備,卻一直提示磁盤正在使用。
[root@seed-84 ~]# wipefs -a /dev/sdb
wipefs: error: /dev/sdb: probing initialization failed: Device or resource busy
7、使用dmsetup 查看lv卷,使用dmsetup移除該卷
[root@seed-84 ~]# dmsetup ls
vg--test-vg--lv (253:0)
[root@seed-84 ~]# dmsetup remove vg--test-vg--lv
8、再次執行wipefs -a /dev/sdb。