From 66f2c598005299c0ad6fa102d19747df064fefe3 Mon Sep 17 00:00:00 2001 From: gojoy <729324352@qq.com> Date: Tue, 8 May 2018 22:21:15 +0800 Subject: [PATCH] run test --- api/grpc/server/server.go | 2 +- supervisor/migration.go | 38 ++--- supervisor/migration/containerUtils.go | 38 ++--- supervisor/migration/fdsSync.go | 57 ++++--- supervisor/migration/image.go | 80 +++++---- supervisor/migration/lazycopydir/merge.go | 4 +- supervisor/migration/localMigration.go | 197 +++++++++++----------- supervisor/migration/memprecopy.go | 83 +++++---- supervisor/migration/preMigration.go | 14 +- supervisor/migration/remoteMigration.go | 2 +- supervisor/migration/utils_test.go | 27 ++- supervisor/preMigration.go | 6 +- 12 files changed, 279 insertions(+), 269 deletions(-) diff --git a/api/grpc/server/server.go b/api/grpc/server/server.go index 70f27e1..1ee5b2c 100644 --- a/api/grpc/server/server.go +++ b/api/grpc/server/server.go @@ -530,7 +530,7 @@ func (s *apiServer) PreMigration(ctx context.Context, r *types.PreMigrationReque e.Vol = append(e.Vol, struct { Src, Dst string IsWrite bool - }{Src:v.Src , Dst:v.Dst , IsWrite:v.Iswrite }) + }{Src:v.Src, Dst:v.Dst, IsWrite:v.Iswrite}) } s.sv.SendTask(e) if err := <-e.ErrorCh(); err != nil { diff --git a/supervisor/migration.go b/supervisor/migration.go index b548816..ac3e2be 100644 --- a/supervisor/migration.go +++ b/supervisor/migration.go @@ -142,13 +142,11 @@ func (t *MigrationTask) startMigrationTask(c *containerInfo) error { var ( e = make(chan error) err error - st time.Time + st time.Time ) start := time.Now() log.Printf("start migration task at %v\n", start.String()) - - log.Println("new local") l, err := migration.NewLocalMigration(c.container) if err != nil { @@ -157,12 +155,12 @@ func (t *MigrationTask) startMigrationTask(c *containerInfo) error { } log.Println("test getmem!") - mem,err:=l.GetContainerMem() - if err!=nil { + mem, err := l.GetContainerMem() + if err != nil { log.Println(err) return err } - log.Printf("mem is %v\n",mem) + log.Printf("mem is %v\n", mem) //panic("test finish!") log.Println("new remote") @@ -176,26 +174,26 @@ func (t *MigrationTask) startMigrationTask(c *containerInfo) error { go r.PreLoadImage(e, l.Imagedir) log.Println("copy readonly to remote") - if err=l.CopyReadVolToRemote(r);err!=nil { + if err = l.CopyReadVolToRemote(r); err != nil { log.Println(err) return err } log.Println("start watch write vol") - vwather,err:=l.Watchwritevol() - if err!=nil { + vwather, err := l.Watchwritevol() + if err != nil { log.Println(err) return err } log.Println("copy write vol to remote") - if err=l.CopyWriteVolToRemote(r);err!=nil { + if err = l.CopyWriteVolToRemote(r); err != nil { log.Println(err) return err } log.Println("start precopy mem") - time.Sleep(10*time.Second) + time.Sleep(20 * time.Second) //TODO 将hostpath的目录nfs到远程挂载 准备在本机的工作 log.Println("start nfs hostpath") @@ -226,33 +224,33 @@ func (t *MigrationTask) startMigrationTask(c *containerInfo) error { } log.Println("get stable filelist") - stablemap,err:=l.Getstablefiles(vwather) - if err!=nil { + stablemap, err := l.Getstablefiles(vwather) + if err != nil { log.Println(err) return err } log.Println("save openfile json") - if err=l.SaveOpenFile();err!=nil { + if err = l.SaveOpenFile(); err != nil { log.Println(err) return err } log.Println("fdsync files!") - st=time.Now() - if err=l.SyncWriteFd(r,stablemap);err!=nil { + st = time.Now() + if err = l.SyncWriteFd(r, stablemap); err != nil { log.Println(err) return err } - log.Printf("fdsync time:%v\n",time.Since(st)) + log.Printf("fdsync time:%v\n", time.Since(st)) log.Println("directrsync!") - st=time.Now() - if err=l.DirectRsync(r);err!=nil { + st = time.Now() + if err = l.DirectRsync(r); err != nil { log.Println(err) return err } - log.Printf("direct time:%v\n",time.Since(st)) + log.Printf("direct time:%v\n", time.Since(st)) panic("test done!") diff --git a/supervisor/migration/containerUtils.go b/supervisor/migration/containerUtils.go index e4b0bba..3904e97 100644 --- a/supervisor/migration/containerUtils.go +++ b/supervisor/migration/containerUtils.go @@ -501,51 +501,51 @@ func GetMotifyFiles(path string, ctx context.Context, res motifyvols) error { for { select { - case events:=<-w.Events: - if _,ok:=res[events.Name];!ok { - res[events.Name]=events.Op.String() + case events := <-w.Events: + if _, ok := res[events.Name]; !ok { + res[events.Name] = events.Op.String() } case <-ctx.Done(): goto END } } - END: - log.Printf("end monitor %v\n",path) +END: + log.Printf("end monitor %v\n", path) return nil } -func getmap(files []string) map[string]bool { +func getmap(files []string) map[string]bool { var ( - res=make(map[string]bool) + res = make(map[string]bool) ) - for _,v:=range files { - if _,ok:=res[v];!ok { - res[v]=true + for _, v := range files { + if _, ok := res[v]; !ok { + res[v] = true } } - - if _,ok:=res["ib_logfile1"];!ok { - if _,ok:=res["ib_logfile0"];ok { - delete(res,"ib_logfile0") + + if _, ok := res["ib_logfile1"]; !ok { + if _, ok := res["ib_logfile0"]; ok { + delete(res, "ib_logfile0") } } return res } -func getstablerelatepath(files []string,vol Volumes) []string { +func getstablerelatepath(files []string, vol Volumes) []string { var ( - res=make([]string,0) + res = make([]string, 0) ) - if len(files)==0 { + if len(files) == 0 { panic("files len is 0") } - for _,v:=range files { + for _, v := range files { right := strings.TrimPrefix(v, vol.src) if len(right) != len(v) { res = append(res, right[1:]) } } return res -} \ No newline at end of file +} diff --git a/supervisor/migration/fdsSync.go b/supervisor/migration/fdsSync.go index 0ccdfd3..7fe5d71 100644 --- a/supervisor/migration/fdsSync.go +++ b/supervisor/migration/fdsSync.go @@ -8,11 +8,10 @@ import ( "os" "os/exec" "strings" - "errors" + "sync" + "time" ) - - //首先把数据卷拷贝到对应的远程upper目录,然后根据crit x fds文件列表,同步这些文件 //在本地监控数据卷,生成map 所有变更都存在其中,然后把上次同步过的文件从map中删除, // 之后在目的主机的upper目录,文件只有在map中,表示以及不是最新版本,就删除 @@ -25,7 +24,7 @@ type allpath [2]string type volpath []allpath // remoteVolumesDirs:代表每个write数据卷在目的主机的拷贝目录 -func fdsSync(checkpointDir string, remoteVolumesDirs string, vols Volumes, ip string,smap map[string]bool) error { +func fdsSync(checkpointDir string, remoteVolumesDirs string, vols Volumes, ip string, smap map[string]bool) error { files, err := getFiles(checkpointDir) if err != nil { log.Println(err) @@ -37,9 +36,9 @@ func fdsSync(checkpointDir string, remoteVolumesDirs string, vols Volumes, ip st return err } - log.Printf("before delete,len is %v,syncfiles is %v",len(syncfiles),syncfiles) - syncfiles=deletefromstablemap(syncfiles,smap) - log.Printf("now len is %v,syncfiles is %v\n",len(syncfiles),syncfiles) + log.Printf("before delete,len is %v,syncfiles is %v", len(syncfiles), syncfiles) + syncfiles = deletefromstablemap(syncfiles, smap) + log.Printf("now len is %v,syncfiles is %v\n", len(syncfiles), syncfiles) if err = fastCopy(syncfiles, ip, remoteVolumesDirs, vols); err != nil { log.Println(err) @@ -50,17 +49,17 @@ func fdsSync(checkpointDir string, remoteVolumesDirs string, vols Volumes, ip st func deletefromstablemap(files []string, stmap map[string]bool) []string { - if len(files)==0 { + if len(files) == 0 { panic("files is 0") } - if len(stmap)==0 { + if len(stmap) == 0 { log.Println("stmap is 0") } - for i:=0;i