diff --git a/weed/storage/volume_loading.go b/weed/storage/volume_loading.go index 6e9b2f623..077ce43c6 100644 --- a/weed/storage/volume_loading.go +++ b/weed/storage/volume_loading.go @@ -123,9 +123,17 @@ func (v *Volume) load(alsoLoadIndex bool, createDatIfMissing bool, needleMapKind return fmt.Errorf("cannot write Volume Index %s: %v", v.FileName(".idx"), err) } } - if v.lastAppendAtNs, err = CheckAndFixVolumeDataIntegrity(v, indexFile); err != nil { - v.noWriteOrDelete = true - glog.V(0).Infof("volumeDataIntegrityChecking failed %v", err) + // Do not need to check the data integrity for remote volumes, + // since the remote storage tier may have larger capacity, the volume + // data read will trigger the ReadAt() function to read from the remote + // storage tier, and download to local storage, which may cause the + // capactiy overloading. + if !v.HasRemoteFile() { + glog.V(0).Infof("checking volume data integrity for volume %d", v.Id) + if v.lastAppendAtNs, err = CheckAndFixVolumeDataIntegrity(v, indexFile); err != nil { + v.noWriteOrDelete = true + glog.V(0).Infof("volumeDataIntegrityChecking failed %v", err) + } } if v.noWriteOrDelete || v.noWriteCanDelete {