mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
organize a bit better for temp file directory
This commit is contained in:
parent
e8b7d4ad64
commit
2f136a04a1
|
@ -6,7 +6,6 @@ import (
|
||||||
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
|
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
@ -24,14 +23,6 @@ type TempFileDirtyPages struct {
|
||||||
replication string
|
replication string
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
|
||||||
tmpDir = filepath.Join(os.TempDir(), "sw")
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
os.Mkdir(tmpDir, 0755)
|
|
||||||
}
|
|
||||||
|
|
||||||
func newTempFileDirtyPages(file *File, writeOnly bool) *TempFileDirtyPages {
|
func newTempFileDirtyPages(file *File, writeOnly bool) *TempFileDirtyPages {
|
||||||
|
|
||||||
tempFile := &TempFileDirtyPages{
|
tempFile := &TempFileDirtyPages{
|
||||||
|
@ -49,7 +40,7 @@ func (pages *TempFileDirtyPages) AddPage(offset int64, data []byte) {
|
||||||
defer pages.pageAddLock.Unlock()
|
defer pages.pageAddLock.Unlock()
|
||||||
|
|
||||||
if pages.tf == nil {
|
if pages.tf == nil {
|
||||||
tf, err := os.CreateTemp(tmpDir, "")
|
tf, err := os.CreateTemp(pages.f.wfs.option.getTempFilePageDir(), "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Errorf("create temp file: %v", err)
|
glog.Errorf("create temp file: %v", err)
|
||||||
pages.lastErr = err
|
pages.lastErr = err
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
|
"path/filepath"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -54,6 +55,9 @@ type Option struct {
|
||||||
VolumeServerAccess string // how to access volume servers
|
VolumeServerAccess string // how to access volume servers
|
||||||
Cipher bool // whether encrypt data on volume server
|
Cipher bool // whether encrypt data on volume server
|
||||||
UidGidMapper *meta_cache.UidGidMapper
|
UidGidMapper *meta_cache.UidGidMapper
|
||||||
|
|
||||||
|
uniqueCacheDir string
|
||||||
|
uniqueCacheTempPageDir string
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ = fs.FS(&WFS{})
|
var _ = fs.FS(&WFS{})
|
||||||
|
@ -98,14 +102,12 @@ func NewSeaweedFileSystem(option *Option) *WFS {
|
||||||
signature: util.RandomInt32(),
|
signature: util.RandomInt32(),
|
||||||
}
|
}
|
||||||
wfs.option.filerIndex = rand.Intn(len(option.FilerAddresses))
|
wfs.option.filerIndex = rand.Intn(len(option.FilerAddresses))
|
||||||
cacheUniqueId := util.Md5String([]byte(option.MountDirectory + option.FilerGrpcAddresses[0] + option.FilerMountRootPath + util.Version()))[0:8]
|
wfs.option.setupUniqueCacheDirectory()
|
||||||
cacheDir := path.Join(option.CacheDir, cacheUniqueId)
|
|
||||||
if option.CacheSizeMB > 0 {
|
if option.CacheSizeMB > 0 {
|
||||||
os.MkdirAll(cacheDir, os.FileMode(0777)&^option.Umask)
|
wfs.chunkCache = chunk_cache.NewTieredChunkCache(256, option.getUniqueCacheDir(), option.CacheSizeMB, 1024*1024)
|
||||||
wfs.chunkCache = chunk_cache.NewTieredChunkCache(256, cacheDir, option.CacheSizeMB, 1024*1024)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wfs.metaCache = meta_cache.NewMetaCache(path.Join(cacheDir, "meta"), util.FullPath(option.FilerMountRootPath), option.UidGidMapper, func(filePath util.FullPath) {
|
wfs.metaCache = meta_cache.NewMetaCache(path.Join(option.getUniqueCacheDir(), "meta"), util.FullPath(option.FilerMountRootPath), option.UidGidMapper, func(filePath util.FullPath) {
|
||||||
|
|
||||||
fsNode := NodeWithId(filePath.AsInode())
|
fsNode := NodeWithId(filePath.AsInode())
|
||||||
if err := wfs.Server.InvalidateNodeData(fsNode); err != nil {
|
if err := wfs.Server.InvalidateNodeData(fsNode); err != nil {
|
||||||
|
@ -271,6 +273,20 @@ func (wfs *WFS) getCurrentFiler() string {
|
||||||
return wfs.option.FilerAddresses[wfs.option.filerIndex]
|
return wfs.option.FilerAddresses[wfs.option.filerIndex]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (option *Option) setupUniqueCacheDirectory() {
|
||||||
|
cacheUniqueId := util.Md5String([]byte(option.MountDirectory + option.FilerGrpcAddresses[0] + option.FilerMountRootPath + util.Version()))[0:8]
|
||||||
|
option.uniqueCacheDir = path.Join(option.CacheDir, cacheUniqueId)
|
||||||
|
option.uniqueCacheTempPageDir = filepath.Join(option.uniqueCacheDir, "sw")
|
||||||
|
os.MkdirAll(option.uniqueCacheTempPageDir, os.FileMode(0777)&^option.Umask)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (option *Option) getTempFilePageDir() string {
|
||||||
|
return option.uniqueCacheTempPageDir
|
||||||
|
}
|
||||||
|
func (option *Option) getUniqueCacheDir() string {
|
||||||
|
return option.uniqueCacheDir
|
||||||
|
}
|
||||||
|
|
||||||
type NodeWithId uint64
|
type NodeWithId uint64
|
||||||
|
|
||||||
func (n NodeWithId) Id() uint64 {
|
func (n NodeWithId) Id() uint64 {
|
||||||
|
|
Loading…
Reference in a new issue