SSD盘符漂移怎么办
问题背景
一般来说存储集群的存储服务器上会插很多块盘,Linux系统启动时会为每块盘分配一个盘符,比如/dev/nvme0、/dev/nvme1、/dev/nvme2等。
通常在分布式存储的架构里,每块盘都是一个独立的存储单元对应一个独立的进程,上层会有一些路由信息,能把用户的一个逻辑分片的数据映射到一个特定的盘上。
在很多场景下,某块盘的盘符可能会变,比如刚启动时盘符是/dev/nvme1,过了一会掉盘了(可能是连接线不牢固或者人为把盘拔下来都有可能),在插上去按照Linux的机制就可能会变成/dev/nvme11之类的。
这会导致chunk_server找不到这块盘,持续不能提供服务,或者是另外的chunk_server读到了这个盘的数据,最终引起了数据错误,这些后果都是不能接受的。
解决方法
udev提供了一种机制能按照指定的规则生成软链接,比如可以做一个软链接,/dev/nvme0n1 -> /dev/disk/by-id/nvme-sn-PHLJ9355013R4P0DGN
chunk_server在配置文件协商带有盘符的路径就可以了,这样既不会找不到盘,也不会找错盘。
最后更新于