// thin device数据结构
type DevInfo struct {
Hash string `json:"-"`
DeviceId int `json:"device_id"`
Size uint64 `json:"size"`
TransactionId uint64 `json:"transaction_id"`
Initialized bool `json:"initialized"`
devices *DeviceSet `json:"-"`
mountCount int `json:"-"`
mountPath string `json:"-"`
lock sync.Mutex `json:"-"`
}
// thin pool数据结构
type DeviceSet struct {
MetaData
//根目录,默认为/var/lib/docker/devicemapper
root string
//创建thin device名字使用的前缀,`docker-${major}:${minor}-${inode}`
devicePrefix string
TransactionId uint64
NewTransactionId uint64
nextDeviceId int
//选项
dataLoopbackSize int64 ///var/lib/docker /devicemapper/devicemapper/data稀疏文件大小
metaDataLoopbackSize int64 ///var/lib/docker/devicemapper/devicemapper/metadata稀疏文件大小
baseFsSize uint64 //base image之上格式化的文件系统大小
filesystem string //base image之上格式化的文件系统类型
mountOptions string
mkfsArgs []string //格式化base image文件系统时的选项
dataDevice string //指定使用哪个设备作为data device,eg,/dev/sda
metadataDevice string //指定使用哪个设备作为metadata device,eg,/dev/sda
doBlkDiscard bool
thinpBlockSize uint32 //thin pool block size
}
// devmapper的driver数据结构
type Driver struct {
*DeviceSet
home string //home默认为/var/lib/docker/devicemapper
}