Переглянути джерело

Merge pull request #16303 from coolljt0725/add_docker_info_show_base_size

Add docker info show base filesystem size of container/image when use devicemapper
Vincent Demeester 9 роки тому
батько
коміт
5ecbc9747f

+ 2 - 0
daemon/graphdriver/devmapper/README.md

@@ -49,6 +49,7 @@ will display something like:
 	Storage Driver: devicemapper
 	 Pool Name: docker-253:1-17538953-pool
 	 Pool Blocksize: 65.54 kB
+	 Base Device Size: 107.4 GB
 	 Data file: /dev/loop4
 	 Metadata file: /dev/loop4
 	 Data Space Used: 2.536 GB
@@ -69,6 +70,7 @@ Each item in the indented section under `Storage Driver: devicemapper` are
 status information about the driver.
  *  `Pool Name` name of the devicemapper pool for this driver.
  *  `Pool Blocksize` tells the blocksize the thin pool was initialized with. This only changes on creation.
+ *  `Base Device Size` tells the maximum size of a container and image
  *  `Data file` blockdevice file used for the devicemapper data
  *  `Metadata file` blockdevice file used for the devicemapper metadata
  *  `Data Space Used` tells how much of `Data file` is currently used

+ 11 - 0
daemon/graphdriver/devmapper/deviceset.go

@@ -146,6 +146,8 @@ type Status struct {
 	Data DiskUsage
 	// Metadata is the disk used for meta data.
 	Metadata DiskUsage
+	// BaseDeviceSize is base size of container and image
+	BaseDeviceSize uint64
 	// SectorSize size of the vector.
 	SectorSize uint64
 	// UdevSyncSupported is true if sync is supported.
@@ -833,6 +835,14 @@ func getDeviceUUID(device string) (string, error) {
 	return uuid, nil
 }
 
+func (devices *DeviceSet) getBaseDeviceSize() uint64 {
+	info, _ := devices.lookupDevice("")
+	if info == nil {
+		return 0
+	}
+	return info.Size
+}
+
 func (devices *DeviceSet) verifyBaseDeviceUUID(baseInfo *devInfo) error {
 	devices.Lock()
 	defer devices.Unlock()
@@ -2198,6 +2208,7 @@ func (devices *DeviceSet) Status() *Status {
 	status.DeferredRemoveEnabled = devices.deferredRemove
 	status.DeferredDeleteEnabled = devices.deferredDelete
 	status.DeferredDeletedDeviceCount = devices.nrDeletedDevices
+	status.BaseDeviceSize = devices.getBaseDeviceSize()
 
 	totalSizeInSectors, _, dataUsed, dataTotal, metadataUsed, metadataTotal, err := devices.poolStatus()
 	if err == nil {

+ 1 - 0
daemon/graphdriver/devmapper/driver.go

@@ -79,6 +79,7 @@ func (d *Driver) Status() [][2]string {
 	status := [][2]string{
 		{"Pool Name", s.PoolName},
 		{"Pool Blocksize", fmt.Sprintf("%s", units.HumanSize(float64(s.SectorSize)))},
+		{"Base Device Size", fmt.Sprintf("%s", units.HumanSize(float64(s.BaseDeviceSize)))},
 		{"Backing Filesystem", backingFs},
 		{"Data file", s.DataFile},
 		{"Metadata file", s.MetadataFile},