读
来源:互联网 发布:淘宝类目007是什么牌子 编辑:程序博客网 时间:2024/05/01 17:19
1. 读文件:
1) 打开文件
n 根据传入的文件信息和inode号打开文件-----------BlockStream::Open
Ø 根据inode号获取文件的路径------PathMgr::GetPath(inode)
Ø CheckMoving()检查该文件是否正在被移动
Ø 申请StoreLogic大小空间,然后StoreLogic::Open()打开文件的路径
Ø 异步写下去放在里面:LRUCache<int64_t,ChunkInfo_t*>* WriteDoneMap
n 根据传入的ino号获取相应的文件信息------DataOpr::OpenData()
2) 读取数据
3) 关闭文件
1. 文件系统的挂载:
n FileSystem::CheckSanity() //检查文件系统数据的完整
Ø 首先获取adfs的路径
Ø TryLockFS():给adfs加锁,根据返回值判断其加锁的情况
Ø 检查超级块的信息是否正确CheckSuperBlock()
ü 先将超姐块的信息读取到内存中
ü 然后检测超级块中chunksize、blocksize、compress的信息
ü 读取BackUpDedupPath里面的东西到内存中
Ø 给文件系统解锁
n FileSystem::Mount()//挂载文件系统
Ø 初始化数据处理对象
ü 开启消冗库:
ü 首先设置adfs消冗库的参数:
ü 然后设置在消冗库中同步刷新和延迟关闭的参数
ü 最后初始化adfs消冗库,创建延迟关闭功能-----AdfsOpr::Init(),并开启延迟关闭。
Ø TryLockFS():给adfs加锁,根据返回值判断其加锁的情况
Ø 如果当前没有定义_LICENSE,则按没有license处理,有的话继续下一步
Ø 在挂载时判断空间,如果没有空间把系统变为NOSPACE状态
ü CheckDataSpace():检测数据卷的大小,在挂载时使用
ü CheckReserveSpace():和CheckDataSpace函数一样。
Ø 开启Util进程通信功能
ü new MsgServer
ü 初始化消息队列
ü 开启监听线程
n MetaManagerImpl::Init() //初始化
Ø 先将持久化存储和目录存储关联起来
Ø 初始化日志文件
Ø 然后将该日志文件与持久化存储和目录存储关联起来
Ø 初始化元数据,并整理所有日志
Ø 设置元数据的状态,更新数据
Ø 读取total值(在系统启东时,读取上次保存的total值,如果找不到对应的文件,说明上次没有正确卸载,需要从持久话化中恢复)
Ø 然后将所有inode使用情况更新到位图中,加载指定数量loadNum与inode元数据到内存
Ø 然后初始换线程,加锁,并创建一个定期执行的一个线程
Ø 最后,设置文件系统是否启动
2. 文件系统的卸载:(卸载+释放资源)
n 保存系统的状态
n DDFSOpr::Destroy()
n FileSystem::Umount():
Ø 先结束监听线程-----MsgServer::Stop()
Ø 保存系统状态
Ø 将超级块的信息写到磁盘上
Ø 然后看有没有定义LICENSE,然后进行不同的操作
Ø 关闭相应的对象-----DestroyRes()
ü 关闭adfs消冗库----- AdfsOpr::Destroy()
FSClear::Stop()
² 关闭守护进程
² 关闭线程
² 关闭缓冲文件
关闭所有的文件句柄----- DataOpr::CloseAll()
释放资源----- DataOpr::Destroy()
Ø 文件系统解锁,remove()函数删除一些文件
Ø 保存total的值------MetaManagerImpl::StoreTotalSize()
Ø LRUDentryStore::~LRUDentryStore():释放掉缓冲里面的东西
n FileSystem::DelStore:释放资源
- 读
- 读
- 读
- 读
- 读
- 读
- 读
- 读
- 读
- 读
- 读
- 读
- 读
- 读
- 读
- 读文件,读一行
- 读研究生读什么?
- 物理读&逻辑读&即时读&一致读&读一致性
- android笔记
- Oracle学习笔记20150908权限与角色的管理
- Android五大存储---(四大组件之一)ContentProvider(字段)
- 二叉搜索树转为双向链表(算法)
- MyBatis接口的简单实现原理
- 读
- 通过struts2.3.24实现登陆操作
- SVN命令使用详解
- hdu 2846 Repository
- Android之URI简介
- [Android]使用webview模拟textview显示两端对齐
- 数据结构---线性顺序表操作(c++)
- HDU_1532 && HDU_3549(最大流EK算法模板)
- Mac 搭建nginx+tomcat 实现负载均衡