NTFS学习笔记(1):DBR

与MBR在FAT文件系统中的作用相同,DBR在NTFS文件系统中也起着定义分区参数和引导系统的作用,本篇将介绍DBR中几个重要的参数,下图是我电脑上虚拟分区的DBR:

图片

 

1、0X03-0X0A,OEM标志,但是在Windows系统中一般都为0X4E544653,ASCII码显示的话就是NTFS。

2、0X0B-0X0C,定义了分区中每个扇区的字节数,图示为0X0002,由于采用的是little endian,所以实际上是0x0200,转换为十进制就是512,所以图示NTFS分区的每扇区字节数就是512字节。

3、0X0D,定义了分区中每个簇的扇区数,图示为0X04,转换为十进制为4,所以图示NTFS分区的每个簇包含4个扇区,结合之前的每扇区字节数,我们就可以计算出每个簇的字节数为512*4=2048。

4、0X38-0X3F,定义了分区的扇区数,图示为0X0F87FF,换算为十进制为1017855,得出图示分区中有1017855个扇区。

5、0X30-0X37,定义了$MFT的起始簇号,图示为0X014B55,换算为十进制为84821,所以跳转到84821簇的话,我们就能找的$MFT。

6、0X40,定义了$MFT中每条文件记录的大小,图示为0XF6,注意这是一个有符号数,我们需要二进制取反之后再+1,将图示0XF6转换为二进制为11110110,取反为0000 1001,再加1即为0000 1010,转换为十进制就是10,因为是有符号数实际为-10,这里文件记录的大小实际是2(-1)*(-10)=210=1024,所以图示分区$MFT中每条文件记录的大小就是1024字节。

7、0X1FE-0X1FF,和MBR一样,定义的是DBR的结束标志,显示为0X55AA。

其实用WinHex的模板管理器,选择BootSector NTFS就能直接看到我们需要了解的内容,如下图。

图片

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要配置 PostgreSQL 实现多主同步,可以使用 dbr 这个工具来帮助实现。下面是具体的步骤: 1. 安装 dbr 工具: ``` go get github.com/mailgun/dbr/v3 ``` 2. 配置 PostgreSQL 数据库的主从复制,确保所有主库和从库都已正确设置。 3. 在应用程序使用 dbr 连接到所有主库,并将它们分配给 dbr 的 Cluster: ```go import ( "github.com/mailgun/dbr/v3" _ "github.com/lib/pq" ) func main() { // 连接到所有主库 conn1, err := dbr.Open("postgres", "postgres://user:password@host1/dbname", nil) conn2, err := dbr.Open("postgres", "postgres://user:password@host2/dbname", nil) conn3, err := dbr.Open("postgres", "postgres://user:password@host3/dbname", nil) if err != nil { panic(err) } // 创建 Cluster,将所有主库都添加进去 cluster := dbr.NewCluster() cluster.AddMaster(conn1) cluster.AddMaster(conn2) cluster.AddMaster(conn3) // ... } ``` 4. 确定主库和从库的映射关系。这可以通过在应用程序手动指定每个从库的主库来实现,也可以在数据库存储映射关系并在应用程序动态读取。 5. 将 dbr 的 Cluster 传递给应用程序的其他部分,以便在需要执行数据库查询时使用。例如: ```go func getUsers(db *dbr.Session) ([]User, error) { var users []User _, err := db.Select("*").From("users").Load(&users) return users, err } func main() { // ... // 获取一个主库的连接 master, err := cluster.Master() if err != nil { panic(err) } // 获取一个从库的连接 slave, err := cluster.Slave() if err != nil { panic(err) } // 为主库和从库创建 Session masterSession := master.NewSession(nil) slaveSession := slave.NewSession(nil) // 在主库上执行查询 users, err := getUsers(masterSession) if err != nil { panic(err) } // 在从库上执行查询 users, err = getUsers(slaveSession) if err != nil { panic(err) } // ... } ``` 通过这些步骤,你就可以在 PostgreSQL 配置 dbr 实现多主同步了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值