您的位置:

/dev/mapper的全面解析

一、devmapper满了

当使用/dev/mapper创建虚拟块设备时,可能会出现/dev/mapper满了的情况。这是因为虚拟块设备会预留空间,导致/dev/mapper分区的可用空间减少。解决方法是清理虚拟块设备或者增加/dev/mapper的分配空间。


# 清理虚拟块设备
$ dmsetup ls 
$ dmsetup remove [device-name]

# 增加/dev/mapper的分配空间
$ lvextend -l +100%FREE /dev/mapper/vg01-lv01 

二、devmappercentos-root满了

当/dev/mapper/centos-root满了,会导致系统无法启动或无法正常工作。此时可以使用如下命令来排查磁盘空间占用情况。


$ df -h

文件系统              容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root 48G   48G  0    100% /

如果是由于日志文件过多导致的磁盘空间不足,可以通过清空日志文件来释放磁盘空间。


# 查看日志文件大小
$ sudo du -sh /var/log/

# 清空日志文件
$ sudo truncate -s 0 /var/log/*

三、devmapperr shm

当使用内存共享或IPC时,可以创建/devmapperr shm设备来实现高效的内存共享。


# 创建/devmapperr shm设备
$ sudo ipcmk -M 512000 -Q -name my_shared_memory 

这样就会在/dev/mapper目录下创建名为my_shared_memory的设备。

四、devmapperroot满了

如果/dev/mapper/root满了,那么可能是由于日志文件或者系统更新文件导致的。


# 查找最大的文件
$ sudo find / -size +1G

# 清理不需要的文件
$ sudo rm -rf /path/to/unneeded/file

五、devmapper thin pool

Thin pool是指一种可以节省磁盘空间的LVM,其原理是在thin pool创建时,只占用少量空间,随着数据的写入需要,再分配磁盘空间。


# 创建thin pool
$ lvcreate -L 100G -T vgpool/thinpool

# 创建逻辑卷
$ lvcreate -n lv1 -V 10G vgpool/thinpool

# 卸载逻辑卷
$ umount /dev/mapper/vgpool-lv1

# 删除逻辑卷
$ lvremove /dev/mapper/vgpool-lv1

# 删除thin pool
$ lvremove /dev/mapper/vgpool-thinpool

六、devmapper not config

当/dev/mapper未配置时,无法使用虚拟块设备。


# 查看未配置的虚拟块设备
$ dmsetup ls

# 配置虚拟块设备
$ vgscan 
$ lvscan 

七、devmappear not configured

当/dev/mapper未配置的虚拟块设备被删除后,需要重新配置。


# 查看未配置的虚拟块设备
$ dmsetup ls

# 配置虚拟块设备
$ vgscan 
$ lvscan 

八、devmappercentosroot满了

当/dev/mapper/centos-root满了,可能是由于log和cache文件过多,可以通过清理log和cache文件来解决。


# 查看log和cache文件
$ sudo du -sh /var/log/ 
$ sudo du -sh /var/cache/

# 清理log和cache文件
$ sudo rm -rf /var/log/* 
$ sudo rm -rf /var/cache/*