我试图将块设备的主要和次要组件放入容器中(在Kubernetes中运行)。我首先获得设备ID:
stat /data
File: '/data'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 10005eh/1048670d Inode: 7854544 Links: 1
Access: (0775/drwxrwxr-x) Uid: ( 0/ root) Gid: ( 0/ root)
...
设备ID为1048670
。如果我尝试使用Golang Unix软件包将此数字转换为主要和次要组件:
package main
import (
"fmt"
"golang.org/x/sys/unix"
)
func main() {
devcont := uint64(1048670)
fmt.Printf("%d:%d\n", unix.Major(devcont), unix.Minor(devcont))
}
我得到的是0:350
,这对我来说似乎不正确。另外,0:350
中没有条目/sys/dev/block
。在我尝试过的每台计算机(某些VM和台式机)中,调用unix.Major()和unix.Minor()的结果都指向/sys/dev/block
中的现有目录。
我想念什么?容器中的设备ID是否不同?我应该在另一个目录中查找吗?我是否缺少类型为uint64
的东西?