数据库分区技术(共7篇)
数据库分区技术 篇1
0引言
随着智能化配电网的发展,配电终端具备了自动采集和远程上传数据的功能,采集频率可达到秒级,上传周期通常为每分钟1次。配网终端 主要有以 下4种:TTU、 FTU、DCU和DTU。对于普通规模配网区域,各类终端 的数量大约为1 000台,每天产生 的数据量 约为600万条。随着系统运行,配电终端的运行数据不断积累形成海量数据。本文通过ORACLE数据库分区技术对海量数据进行管理,对提高系统访问响应速度、稳定性、用户满意度有重要意义。
1Oracle分区技术
1.1定义
Oracle分区技术于1997年在Oracle8.0中首次引入, 它是Oracle数据库最重要的功能之一,可以提高应用程序的性能、可管理性和可用性。利用Oracle分区技术,可以很好地解决数据集中带来的性能问题,并且在逻辑上是透明的,最终用户感觉不到分区的存在[1]。
Oracle分区(Partitioning Option)是一种处理超大型数据表的技术,是一种“分而治之”的技术,它将大表和索引分成可以管理的小块,无需对每个表视为一个大的、单独的对象进行管理,从而提供了可伸缩性能。通过分区将操作分配给更小的存储单元,节省了操作管理时间,并通过增强的并行处理提高性能,通过屏蔽故障数据分区增强可用性[2]。
1.2Oracle分区类型
Oracle分区主要有4种类型:范围分区、哈希分区、列表分区和组合分区。具体如下:1范围分区。将数据基于范围映射到每一个分区,此范围由创建分区时指定的分区键决定的。这种分区方式最为常用,并且分区键经常采用日期;2hash分区。对于无法有效划分范围的表,可以使用hash分区,对提高性能有一定帮助。hash分区将表中的数据平均分配到指定的分区中,依据分区列的hash值自动分配,用户不能控制也不知道记录会被放到哪个分区中,hash分区可以支持多个依赖列;3列表分区。List分区需要明确指定列的值,该分区列只能有一个,不像range或hash分区可以同时指定多个列作为分区依赖列,但其单个分区对应值可以是多个;4组合分区。如果某表按照某列分区后仍较大,可以采用 在分区内 再建子分 区的方式,即为组合分区[3,4]。上述分区 类型优缺 点比较如 表1所示。
2Oracle分区意义
(1)提高查询效率。对于全表扫描,如查找某年度所有电力终端上报数据,Oracle需要在整张大表上进行逐条扫描,如果该表按年度进行了分区,通过分区裁减功能(无需手动选择,数据库会智能使用)Oracle只对该年度的分区段进行扫描。
(2)降低数据维护成本。智能配网系统数据库中通常保存近3年配电网历史运行数据,过期历史数据需要作清除处理。传统DELETE操作不仅效率低,并且会产生大量碎片与日志记录,若回滚段设置不当,会导致宕机。如按年度分区,通过简单的命令“alter table <表名> drop partition < 分区名称 >”,即可完成 清理 (仅修改数 据字典),并不产生碎片,更不会因此而宕机。
(3)提高数据可用性。一般情况下,一张大表只能作为一个段放在一个表空间中。当出现物理或逻辑坏块时, 整张大表都不可访问。在分区情况下,由于每个分区作为一个段,有独立的物理属性,坏块出现只会影响其所在分区,其它分区数据依然可以正常访问。
3智能配网系统数据库分区策略
3.1建立分区表
配网数据时间分布特点比较明显,范围分区是最合适的分区方式。可对电压、电流数据表按照时间字段进行范围分区。
建立分区后,通过测试语句select ge.deviceid,ge.devicetype,ge.sdate,ge.stime from t_gis_his_electric ge,t_ gis_his_voltage gv where ge.sdate='2011-03-16'and gv.sdate='2011-03-16'and gv.deviceid=ge.deviceid,分区前后电压电流表连接查询性能对比如表2所示。可以看出,建立分区 后,数据库查 询时间从31.51s增加到40.02s,数据请求总数在回滚段Buffer中的数据一致性读取数(consistent gets)以及物理读取数(physical reads)都有所增加,表明建立分区表后,数据库查询性能不但没有提高反而降低了。进一步分析可知,导致表分区后性能降低的主要原因为只对表作了分区而索引没作分区。大多情况下,特别是OLPT系统通常用索引访问数据库,如果索引没有分区,索引树的高度不会降低,与未分区表索引毫无区别,而管理对象由一个表对象变为多个分区对象, 造成访问性能不仅无提高反而下降。
3.2建立局部前缀分区索引
3.2.1普通索引与局部前缀分区索引的区别
假设表A是一个范围分区的分区表,普通索引和局部前缀分区索引(简称分区索引)与分区表之间的关系分别如图1、图2所示。通过图1、图2可以看出,普通索引是以分区表为基础,而分区索引是以分区表的具体分区为基础。当需要查询的数据在某个分区内时,只需扫描某个分区的分区索引即可,查询性能大幅提高。
3.2.2分区索引特点及使用场合
建立索引可以在查询时只扫描相关的分区,不扫描无关记录数据。对某个分区进行删除或合并操作后,oracle自动对所对应的索引分区进行相同的操作,整个分区索引依然有效,不需要进行重建操作,可保障索引的可用性。
建立索引有其局限性,只能对分区字段建立索引。对于复合索引需将分区字段作为前缀。如果表分区字段正好是索引字段或者是其前缀,则应建立分区索引。
3.2.3分区索引的建立
表分区后,如未建立合适的分区索引会导致数据库查询性能降低,为解决此问题,需要在分区表上建立分区索引。以电压、电流表为例创建索引,创建方式如下:
create index T_POWER_IDX on T_GIS_HIS_ELECTRIC(tdate)local;
create index T_POWER_IDX on T_GIS_HIS_VOLTAGE(tdate)local;
建立分区索引后,执行3.1章节中的测试语句,执行结果统计信息如表3所示。
表2表明,在分区表上建立分区索引后,测试SQL语句的执行 时间大幅 缩短,同时consistent gets、physical reads两个统计指标也大幅下降。对海量数据表采用合适的分区,同时建立配套的分区索引,可以大幅缩短数据库响应时间,提升用户体验。
4结语
本文以智能配网系统为研究对象,分析配电网络运行数据特点,通过实验分析得出,ORACLE范围分区技术是建立智能配网系统分区表最合适的技术。通过ORACLE范围分区,同时建立分区索引,能大幅提高智能配网系统数据库访问性能,缩短数据库响应时间,对提供用户满意度有十分重要的意义。
摘要:智能电网的快捷发展使得配网数据极速增长,智能配网系统运行压力加大,如何够满足用户的访问响应成为当前急需解决的问题。探讨了数据库分区技术,实现了智能配网系统数据库分区策略。
关键词:智能电网,数据库分区技术,分区策略
数据库分区技术 篇2
随着信息化技术的飞速发展, 计算机的使用越来越普及, 几乎每一位上班族都有自己
的电脑, 里面通常存储了或多或少的公司业务数据, 当然也包括自己的一些私人的信息或文件。那么, 考虑这样一种情况, 如果某天电脑被偷了, 可能在当今这个信息化的时代, 电子产品越来越便宜, 硬件被偷了并不会给人们带来多大的损失, 大不了再买一台。但是, 里面的数据才是最宝贵的, 当然, 对于一些机密数据, 特别是涉及到公司业务数据, 大多做过备份了, 倒不至于丢失。但是关键问题是, 电脑被偷, 意味着里面的数据也会外泄, 一旦是公司的机密数据或涉及到个人的隐私数据, 后果就不堪设想了。
那么, 有没有一种方法会使得即使电脑被偷了, 偷电脑的人也看不了里面硬盘上的机密数据呢?这样一来, 也顶多损失硬件而已, 而不会带来更大的损失, 即避免因数据外泄而承担很大的责任。这种技术就是分区加密, 对那些存有机密数据的分区进行加密, 如果要查看那些分区中的信息, 必须输入密码。
一旦给分区加密之后, 是无法破解的, 因为分区加密发生在分区格式化之前, 是对分区所做的操作, 而不是针对文件系统所做的, 更确切地说, 这个操作是在文件系统之下的。
2 在Linux系统中为分区加密
目前, 有很多的分区加密软件可以实现分区加密。但是, 在Linux系统下, 可以通过命
令行方式直接为某个分区加密, 而无需第三方工具来实现。下面举例说明在Linux系统下为分区加密的整个过程。
由于分区加密技术是针对某个分区的, 所以如果该分区已建立了文件系统, 那么就不能加密了, 此时, 进行加密操作将会覆盖分区中的数据。所以必须是对一个新的干净的分区, 并在对其格式化之前才能做加密。为了说明方便, 假设现在对一个新的分区进行加密。
2.1给硬盘分一个新的分区, 注意不要格式化
在Linux系统下, 分区采用“fdisk/dev/sda”命令, 假设目前的硬盘名称为/dev/sda。
然后输入“n”表示分一个区, 再选择分区编号、起始柱面号以及分区大小, 然后输入“w”保存。接下来要让新的分区生效, 可以“reboot”重启计算机, 当然如果在实际工作中, 为了防止计算机上的业务中断, 一般不建议重启, 而可以执行“partx-a/dev/sda”命令表示重新读取分区表到内核, 这样新的分区 (假设新的分区为/dev/sda6) 就生效了。
2.2为分区添加加密密码
执行命令“cryptsetup luks Format/dev/sda6”来为分区/dev/sda6添加密码。系统提
示是否要进行加密, 如果确认要加密, 则输入大写的“YES”, 系统这样做的目的也是为了让用户看清楚, 因为一旦加密是无法破解的。接着再提示输入加密密码, 假设密码为“redhat”。
2.3启用加密
加密之后需启用, 才会生效。启用加密的命令为“cryptsetup luks Open/dev/sda6
data”, 这里的data只是一个名字而已, 执行这条命令将会把分区/dev/sda6映射为一个设备文件/dev/mapper/data。
2.4格式化加密分区
此时由于呈现给用户的不再是/dev/sda6了, 而是经过映射之后的设备/dev/mapper/data,
所以应执行这样的命令“mkfs.ext4/dev/mapper/data”, 该命令将分区/dev/sda6格式化为ext4文件系统类型。注意, 这个工作是在加密之后进行的。
2.5将加密后的分区挂载选项写入/etc/fstab文件, 以使得下次开机生效。
用“vim/etc/fstab”命令将/etc/fstab文件打开, 并写入以下条目:
/dev/mapper/data/mnt/data ext4 defaults0 0
以上“/mnt/data”表示挂载点, 系统中必须存在该目录。然后执行“mount-a”命令,
立即挂载该条目。
2.6添加条目到文件/etc/crypttab中, 以确保下次重启时会提示输入加密密码。
用“vim/etc/fcrypttab”命令将/etc/crypttab文件打开, 并写入以下条目:
data/dev/sda6
至此, 整个分区加密工作就做完了。下次重启机器时, 会提示用户输入该分区的密码,
若输入了正确的密码, 则启动进入系统后, 该分区就已经自动挂载了, 用户可以正常访问。但是如果不知道该分区密码, 按三次“ctrl+c”跳过, 则也可以进入系统, 但是会发现该分区没有挂载, 也不能访问, 这样就达到了防止机密数据外泄的目的。
3总结
Linux下的分区加密技术可以通过命令行来实现, 不用借助第三方工具, 因此比较简单
易行。但是由于分区加密技术本身是基于分区来做的, 而不是针对文件系统, 所以不具备可逆性, 即无法破解。也就是说, 如果用户自己忘记了分区密码, 那么这个分区也将是无法访问的。所以, 一旦选择通过分区加密的方式保护数据, 则用户本人务必记住这个分区的密码。
另外, 这种分区加密技术只能防止关键数据外泄, 即防止电脑被盗而产生的数据外泄, 主要用于PC机或移动硬盘等设备数据。但不具备数据恢复的功能, 一旦数据丢失了, 则这种技术就无能为力了, 那么还需采用一些数据备份和数据恢复技术来实现。
摘要:随着信息技术的飞速发展, 用户的计算机中越来越多地存储一些涉及公司业务的数据和个人隐私数据。如果用户的机器一旦被盗, 则可能会导致机密数据外泄, 从而会给公司或个人带来一些严重的后果。分区加密正是为了防止这种情况下的数据外泄的一种技术。本文详细阐述了Linux系统下的分区加密技术, 并举例说明了整个加密过程。
数据库表分区的方法 篇3
一、避免表连接查询中的物理竞争
现有2个数据库表 (orders和stock) , 其中orders有10个在不同磁盘上的数据库表分区, 这些分区分别有一个工作进程需与数据库表stock连接。在这种情况下, 每一个工作进程都需要访问数据库表orders, 然后扫描数据库表stock进行连接。当一个工作进程运行时, 其访问数据库表orders的数据是容易的, 但必须等待其他进程释放表stock资源时才能访问数据库表stock, 这就出现了I/O竞争。为了减少或者消除I/O竞争, 我们可分区数据库表stocks, 且让每一分区分布在不同的数据库设备上。
二、分区数据库表的命令
用于分区数据库表的常用命令包括:分区 (partition) 和未分区 (unpartition) 数据库表命令、将数据均衡分布到不同数据库设备上的删除和重新创建聚族索引 (clustered indexes) 的命令、将数据恢复到指定分区的并行块复制 (bcp) 命令、显示数据分布在不同分区或设备上有关信息的命令、更新分区统计信息的命令。
(一) 分区和未分区命令
改变数据库表分区的alter table命令格式为:
alter table table_name partition n
其中, table_name是被分区的数据库表的名称, n为数据库表分区的数目。
数据库表被分区之前拥有的数据保留在第一个分区, alter table命令分区一个数据库表并没有移动其原有的数据。为了创建用于并行查询的数据库表, 可通过创建聚族索引或者bcp方法重新分布分区数据库表的数据。使用未分区从句取消数据库表分区的alter table命令格式为:
alter table table_name unpartition
(二) 将数据均衡地分布到各分区的命令
将数据均衡地分布到各分区的方法包括创建聚族索引和bcp方法。使用create clustered index命令创建索引的命令格式为:
create clustered index index_name on table_name key_colume) on segment_name
其中, index_name是索引名称, table_name是数据库表名称, segment_name为片断 (segment) 名称。
通过对含有数据的分区数据库表创建索引可以将数据均衡地分布到数据库表各分区。
使用drop index命令删除索引的命令格式为:
drop index index_name
(三) 将数据恢复到指定分区的并行bcp命令
使用并行bcp命令能将数据恢复到指定的分区数据库表分区, 使用bcp时应注意以下问题。第一, 在执行bcp前, 数据库表必须在指定的数据库片断上且被分区 (此数据库片断跨越多个数据库设备从而使数据库表的不同分区在不同的数据库设备上) 。第二, 为了避免数据库表索引引起的意外, 应删除数据库表的各种索引。第三, 使用alter table…disable trigger命令保证bcp以快速的方式恢复数据。第四, 设置数据库操作“turn log on chkpt”为“ture”。第五, 可以利用操作系统命令将数据文件分解为多个独立的文件进行恢复, 也可以使用带有“-F” (开始行) 和“-L” (结束行) 标志的命令行恢复。
bcp命令的格式为:
bcp database._name..table_name:n in file_name
(四) 其他命令
为了显示数据库表每一分区中的数据页数和数据分布信息的概况, 我们可使用sp_helpartition命令, 其命令格式为:
sp_helpartition table_name
数据库服务器将数据库分区表中的各分区的数据页分布统计到一个统计表中, 该统计表的信息会因为以下情况而不准确:第一, 数据库表分区被取消后, 紧接着被重新分区;第二, 数据库表中大量的数据行被删除;第三, 数据库表中大量的数据行被更新且被更新的数据行不在原位置;第四, bcp命令将数据文件的数据拷贝到数据库表中;第五, 插入操作被频繁地回滚。
为了更新数据库表的分区统计信息, 可使用update partition statistics命令。其命令格式为:
update partition statistics table_name[partition_number]
其中, partition_number为分区号。
三、分区数据库表的步骤
分区数据库表的步骤取决于初始时数据库表的位置, 比如数据库表不存在、数据库表存在但不在指定位置、在指定位置数据库表的设备添加等情况。
(一) 数据库表不存在情况下的数据库表分区步骤
1. 在指定的数据库设备片断上创建数据库表。
2. 使用alter table命令创建数据库表的分区, 使每一分区位于不同数据库的设备使用bcp命令, 将数据均衡恢复到各分区。
3. 使用sp_helpartition命令检查数据分布情况, 必要时可创建数据库表聚族索引使得数据均衡分布。
4. 创建非聚族索引。
5. 使用dump命令备份数据库。
(二) 在指定位置数据库表的设备添加而进行的数据库表分区步骤
1. 使用sp_helpsegment查看数据库设备片断的使用情况。
2. 使用disk init创建新数据库设备, 使用alter database命令将数据库设备赋给数据库。
3. 使用sp_extendsegmentsegment_name, device_name扩展片断, 同时删除新数据库设备的系统和缺省片断。
4. 使用alter table命令删除数据库表的分区。
5. 使用alter table命令创建数据库表分区, 使分区数目为原分区数与新添设备数之和。
6. 如果数据库表原先已存在聚族索引, 则先使用drop index命令删除数据库表索引。
7. 在目标数据库片断上创建数据库表的聚族索引, 使数据库表的数据均衡地分布到目标数据库片断上的各数据库表分区。
大型数据库分区表研究 篇4
分区表应用在大型的分布数据库中, 分区是一种“分而治之”的技术, 通过将大表引分成可以管理的小块, 从而避免了对每个表作为一个大的、单独的对象进行管理, 为大量数据提供了可伸缩的性能, 提高了巨型数据库的读写和查询速度。
分区表是将一个大的表分割成较小的片段 (分区) , 在实际应用中, 分区表的操作是在独立的分区上, 但是对用户而言是透明的[1][2]。Oracle提供了分区技术以支持VLDB (Very Large Data Base) 。分区表通过对分区列的判断, 把分区列不同的记录, 放到不同的分区中。分区完全对应用透明。Oracle的分区表可以包括多个分区, 每个分区都是一个独立的段 (SEGMENT) , 可以存放到不同的表空间中。查询时可以通过查询表来访问各个分区中的数据, 也可以通过在查询时直接指定分区的方法来进行查询。
分区表的主要优点为:
(1) 由于将数据分散到各个分区中, 减少了数据损坏的可能性; (2) 可以对单独的分区进行备份和恢复; (3) 可以将分区映射到不同的物理磁盘上, 来分散IO; (4) 提高可管理性、可用性和性能。
什么时候需要分区表, 官网给出了2个建议:
(1) Tables greater than 2GB should always be considered for partitioning.
(2) Tables containing historical data, in which new data is added into the newest partition.A typical example is a historical table where only the current month’s data is updatable and the other 11 months are read only.
二、分区表的创建和应用
Oracle 10g以上版本提供了以下几种分区类型:
(1) 范围分区 (range) ; (2) 哈希分区 (hash) ; (3) 列表分区 (list) ; (4) 范围-哈希复合分区 (range-hash) ; (5) 范围-列表复合分区 (range-list) 。
这里以应用广泛的list分区和range分区为例说明分区表的应用。
2.1 list分区表
List分区 (列表分区) :通过列表方法 (指定字符串值方法) 进行分区。List分区表需要考虑分区的依据, 分区的名字, 分区值 (或者值的区域) 每个分区所在的表空间。在分区时必须确定分区列可能存在的值, 一旦插入的列值不在分区范围内, 则插入/更新就会失败, 因此通常建议使用list分区时, 要创建一个default分区存储那些不在指定范围内的记录, 类似range分区中的maxvalue分区。
创建或修改分区时, 可以指定default, 把非分区规则的数据, 全部放到这个default分区, 如除了’清华大学出版社’, ‘教育出版社’之外的出版社, 放到分区表part_book1的part3分区中。
SQL>alter table part_book1 add partition part3values (default) tablespace system;
与分区表相关的数据字典:dba_part_tables, dba_tab_partitions等等。
2.2 range分区表
Range分区表是应用范围比较广的表分区方式[3][4], 范围分区就是对数据表中的某个值的范围进行分区, 根据某个值的范围, 决定将该数据存储在哪个分区上。它是以列的值的范围来做为分区的划分条件, 将记录存放到列值所在的range分区中。
比如按照时间划分, 某大型企业的数据2015年1季度的数据放到a分区, 2015年2季度的数据放到b分区, 因此在创建的时候, 需要指定基于的列, 以及分区的范围值。若某些记录暂无法预测范围, 可创建maxvalue分区, 所有不在指定范围内的记录会存储maxvalue区。
建立range分区表分区表需要考虑分区的依据, 分区的名字, 分区值 (或者值的区域) 每个分区所在的表空间。values less than:后跟分区范围值 (如果依赖列有多个, 范围对应值也应是多个, 中间以逗号分隔) ;
Range分区表用过一段时间之后, 若需要增加新的分区, 可以对range分区表进行切割[5]。Range分区切割的位置为在分区表中间或者开始处或者带有maxvalue值的尾处增加分区。其语法格式如下:
ALTER TABLE表名SPLIT PARTITION分区的名字AT (值) INTO (PARTITION新分区的名字1, PARTITION新分区的名字2)
分区表的切割举例:将part3分区切割为两个新的分区, 名字为part3、part4, 分区的的依据值为20140101.
alter table part_book4
s p l i t p a r t i t i o n p a r t 3 a t (t o_date (‘20140101’, ’yyyymmdd’) )
into (partition part3, partition part4) ;
Range分区表的插入和查询操作同list分区表, 在这里不再赘述。另外对于组合分区:如果某表按照某列分区之后, 仍然较大, 或者是一些其它的需求, 还可以通过分区内再建子分区的方式将分区再分区, 即组合分区的方式。
三、总结
分区表提高了大型、巨型数据库的读写和查询速度, 为大量数据的存储、读取提供了可伸缩性能, 本文主要研究了分布式数据库Oracle中的List分区表和Range分区表的创建与应用, 探讨了其切割和分区表的修改技术。
参考文献
[1]王立君.并行多媒体数据库中基于内容的高效检索的数据分配方法的研究.[J]科学技术与工程, 2013.13 (9) , 2544-2548
[2]郭晋秦, 韩焱.大型数据库聚类中伪装危险数据识别方法研究.计算机仿真2015.433-436 32 (11)
[3]徐洪丽, 王志军.认知策略与知识结构化的研究与应用-以大型数据库学习为例.高教学刊.2016.3 73-74.
[4]李亚龙, 朱岩.表分区在分界开关监控系统数据库的应用.2016 (25) 2:P235-237
硬盘分区数据文件的寻簇链计算 篇5
硬盘的组织结构,应该包括五部分:MBR、DBR、FAT、DIR区和DATA区。硬盘的组织分柱面(Cylinder)、磁头(Head)和扇区(Sector)。在BIOS设置中,可以查看指定硬盘的参数,柱面数、磁头数和每道扇区数等三个参数。为此分别记为C、H、S。
在实际使用时,将硬盘扇区看成一个一维数据。即将整个硬盘看成逻辑扇区的一个线性序列。这个逻辑扇区的序列从该硬盘上的第一个扇区(0柱0头1扇)开始,即第一物理扇区为(C1,H1,S1)=(0,0,1)。按照扇区、磁头和柱面的顺序依次连续循环。为了方便计算,我们将第一个扇区记为逻辑0扇区,其余扇区的位置均相对逻辑0扇区而言,称作相对扇区。相对扇区号之值正好等于此扇区之前的扇区总数。
2 硬盘的数据结构
设当前柱面号为CC(Current Cylinder)、当前磁头号为CH(Current Head)、当前扇区号为CS(Current Sector),则相对扇区号L(Logical Sector/Length of Sectors)可表示为:
由于上式可以得到逻辑扇区的位置(div表示整除、mod表示整除后取余):
当前柱面号也可以表达为CC=L div(S*H)+C1
式中C1、H1、S1分别表示起始柱面、起始磁头、起始扇区。
硬盘数据的结构可以简单地分为两个部分:其一,各分区公用的部分;其二,各分区本身。硬盘上第一个扇区被称为主引导扇区,其间保存着主引导记录(MBR)和分区表;随后为隐藏扇区,直到0柱0头S扇,计S-1个。此前S个扇区便是各个分区公用的部分。分区表之后为系统扇区(分区引导)标志字节序列55AA,它位于系统扇区结尾(见图1)。如果此字节序列被更改。系统将不能正常工作。
3 MBR的组成
MBR(Main Boot Record)即主引导记录区,它位于整个硬盘的0柱面0磁头1扇区,包括硬盘引导程序和分区表。主引导区记录MBR主要由三个部分组成:硬盘启动程序、硬盘分区表、结束标记。
硬盘启动程序就是硬盘用来启动所需的程序。当你打开计算机的电源后,计算机就会进行自检,然后就会到柱面0、磁头0、扇区1的位置处寻找MBR中的硬盘启动程序,并运行硬盘启动程序。
硬盘分区表(Partition Table)记录着硬盘的分区情况,一个硬盘最多能分成4个主分区,分配地址(见表1)。每个硬盘分区表占有16Bytes。
结束标志表示MBR的结束,其位置一般位于MBR的最后两位。结束标志为55AA。
4 分区表的组成
磁盘上每个分区的信息,存储在每个分区开始位置的分区(或驱动器)引导记录中。主分区引导记录(或主引导扇区)总是放在整个磁盘的第一个扇区(柱面0、磁头0、扇区1)内,其结构由主分区表和主引导码组成。
主分区表是包含在磁盘上各分区的列表及各分区引导记录的位置,一般仅包含四个表项。为了容纳更多的分区,诸如DOS之类的操作系统可以将单个扩展分区分成多个逻辑驱动器。主引导码是由系统BIOS执行的小程序,主要功能是将相同的控制传递给已设置成活动的(或可引导的)分区。主分区C的数据位于主引导扇区偏移1BEh~1CDh处,该段为分区表项的结构,见图1。
5 DBR的结构
DBR(DOS Boot Record)即操作系统引导记录区,又称为BOOT区,是DOS启动记录的意思。通常紧接在MBR之后,位于硬盘0柱面1磁头1扇区,是操作系统可直接访问的第一个扇区。其实硬盘的每个逻辑分区的逻辑0扇区都有一个DBR,经由Format高级格式化写到逻辑盘0扇区的,活动的主分区的启动盘(通常为C:盘)的DBR扇区主要功能是完成DOS相同的自举。DBR是由MBR的引导程序读入内存的并把控制权转交给DBR的。DBR主要由三个部分组成:BIOS参数区、DOS引导程序、结束标志。
6 文件分配表FAT
FAT(File Allocation Table,文件分配表)是一个数字表项的列表,描述分区上的每一簇是如何分配的。分区的数据区在表中有单个表项指向它的每一个簇。存放FAT的扇区在由FAT控制的扇区范围之外。
FAT表紧接在DBR之后,也就是位于0柱面1磁头2扇区。FAT的大小依据硬盘的容量而定,硬盘容量愈大,FAT也就愈大。FAT表记录硬盘中所有文件的分配情况,是硬盘文件管理中最重要的部分。硬盘中的每个磁簇,在FAT表中都有一个对应的FAT编号。每个FAT编号又都有一个FAT记录,该记录记载着下一个FAT编号。
FAT记录中所记录的几种数据:0表示此磁簇未被使用;BAD表示此磁簇已经损坏,不再使用;编号表示文件下一个磁簇所在FAT编号;FF表示此磁簇是文件的最后一个磁簇。
7 FAT的格式
硬盘经过格式化后,Format会自动建立空的FAT,并将坏扇区做出标志,建立文件时系统会在FAT对应簇号处记载下一个簇的值或标示文件在此簇结束。用16-bit表项值为例来说明FAT的组成格式。FAT表中的每一个项对应文件区域的一个簇,一个FAT项可以包含从[0]000h到[F]FFFh之间的值,其中[0]000h代表未用的簇,[F]FF0h~[F]FF6h代表保留的簇,[F]FF7h代表坏簇,[F]FF8h~[F]FFFh代表文件的最后一个簇。FAT中的头2簇(即第0和第1簇)被系统预留使用,其中首字节为介质描述符(对于硬盘,为F8h),所以,簇号2对应于在文件区域中的可用磁盘空间的首簇。
对于硬盘上某一分区,无论大小和FAT格式,FAT总是以F8FFh开头,这就是FAT首扇区的特征。
8 FAT文件寻簇链的计算步骤
以FAT16文件系统为例:
1)倘若已经从FDT中查到该文件的起始簇号;
2)将该起始簇号转换为10进制数m,这个m就是查找下一簇号的本簇号;
3)将乘积2m作为FAT中的相对位移n,该位置即为存放文件簇链的下一个簇号;
4)从该相对位移n开始取一个字,低位在前,高位在后;
5)重复以上簇链的查找过程,直至遇到簇号的值为FFF8h-FFFFh为止。
9 FAT文件寻簇链的计算实例
为了便于理解文件簇链的计算应用,下面用简单的FAT16分区文件实例来说明其计算过程。已知某硬盘16-bit FAT分区的文件分配表开始部分(见表2),依此例讲解查找文件簇链的过程。
1)假设从FDT表中查得某个文件的起始簇号为2。
2)设定该文件的起始簇号m=2为本簇号,则有2m=4,即FAT表中从第4字节开始的一个字中存放的值(000Ch)是下一簇号。
3)再设定m=000Ch=12为本簇号,2m=24,即FAT表中从第24字节开始的一个字中存放的值(0005h)是下一簇号。
4)再设定m=0005h=5为本簇号,2m=10,即FAT表中从第10字节开始的一个字中存放的值(000Dh)是下一簇号。
5)再设定m=000Dh=13为本簇号,2m=26,即FAT表中从第26字节开始的一个字中存放的值(000Eh)是下一簇号。
6)再设定m=000Eh=14为本簇号,2m=28,即FAT表中从第28字节开始的一个字中存放的值(000Fh)是下一簇号。
7)再设定m=000Fh=15为本簇号,2m=30,即FAT表中从第30字节开始的一个字中存放的值(0010h)是下一簇号。
8)再设定m=0021h=33为本簇号......
重复以上步骤,直至查找到文件结束簇(其值为FFF8h-FFFFh)。
该文件的簇号链为:2→12→5→13→14→15→33→......
1 0 小结
为了便于理解,以FAT16系统为例来说明硬盘文件系统的数据结构,以及文件寻簇链的计算过程。随着硬盘的容量增大,原有的FAT文件系统所形成的磁盘管理空间浪费严重,所以操作系统现已采用FAT32文件系统,即簇号用32bit的数来表示。理论上的最大簇号为232=4,294,967,296个簇,因此理论上FAT32可管理128PB(1PB=1024TB)的逻辑分区。FAT32文件系统提供了比FAT文件系统更为先进的文件管理特性,例如,支持超过32GB的卷,以及通过使用更小的簇来,更有效率地使用磁盘空间。但根据硬盘技术现状,目前FAT32文件系统仅能支持容量到2TB的硬盘。
摘要:该文介绍了硬盘分区的组织结构和数据结构,阐述了硬盘分区表的组织结构以及组成,并用实例说明FAT文件寻簇链的计算过程。
关键词:FAT,数据结构,硬盘分区表,寻簇链
参考文献
[1]王恒青.计算机硬盘分区与维护实用技术[M].北京:机械工业出版社,2005.
[2]杨正.磁记录物理[M].甘肃:兰州大学出版社,1986.
数据库分区技术 篇6
海南电网综合业务数据网络承载着内部OA系统、安全生产系统、财务系统、营销系统等多项应用。《信息安全等级保护管理办法》公通字[2007]43号对信息系统的安全保护等级分为5级,海南电网非调度生产控制类综合业务信息系统分布在第一级到第三级安全保护等级范围内。为了实现业务终端与业务服务器之间进行路由控制,并建立安全的访问路径,从网络安全的角度对综合业务数据网络进行了合理规划,采用MPLS VPN组网技术,结合使用IPS、防火墙等信息安全设备,将综合数据网络划分为4个不同的安全控制区域,不同安全等级的信息系统运行在不同的安全控制区域,不同的安全控制区域采取了不同的路由和访问控制策略。简述了MPLS VPN技术的原理,分析了海南电网综合业务数据网络的业务模式,论述了数据网组网技术的选择及安全策略的部署。
1 MPLS VPN原理简述
现在流行的VPN架构技术主要有IPSEC VPN, MPLS VPN, VLAN BASE VPN等。其中多协议标签交换(MPLS)是目前IP网络的核心技术,MPLS VPN也成为构建VPN网络的主流技术。
IPSEC每个会话都必须通过密钥或数字签名进行认证,是所有技术中保密性最高的,但IPSEC VPN无法提供QOS,而且由于加密解密操作影响设备性能,因此不适合用于架设企业内部网的VPN方案。
VLAN BASE VPN是根据逻辑端口及VLAN号实现的,对于非该端口号或ID号的访问将被设备拒绝,因而在网络上尤其是核心设备上必然存在大量的MAC地址,所以只适合用于较小型的VPN。
MPLS是一种第3层交换技术,它引入了基于标签的机制,把选路和转发分开,由标签来规定一个分组通过网络的路径,数据传输通过标签交换路径(LSP)完成。它能在不改变用户现有网络的情况下提供高速、安全、多业务统一的平台,为一些目前IP网络急待提供的应用服务如QOS、流量控制等提供了一套更为合理有效的解决方案, 是Internet核心网中路由(转发)技术的最新发展。
构建MPLS VPN有3种类型的路由器:CE路由器、PE路由器和P路由器。CE路由器到PE路由器间通过IGP协议进行路由器信息的传递,在PE路由器上有对应于每个VPN的虚拟路由表,有1台独立的路由器与CE路由器进行连接。2个PE路由器之间采用MP-BGP协议传送不同的VRF管辖的路由表内容以及相应的标签(VPN的标签),而在PE路由器与P路由器之间则采用传统的IGP协议互相学习路由信息,采用LDP协议进行路由信息与标签 (MPLS标签) 的绑定。PE路由器拥有了骨干网络的路由信息以及每一个VPN的路由信息 (VRF) , P路由器不需要拥有VPN的路由信息。当属于某一VPN的用户端CE路由器有数据进入时,在CE路由器与PE路由器连接的接口可以识别出该CE路由器属于哪一个VPN,进而到该VPN的VRF中去读取下一跳的地址信息,同时,在前传的数据包中打上该VPN标签(内层标签)。
MPLS VPN技术具有安全性高、扩展性高、运行维护简便的优点。
2 基于MPLS VPN的数据网络设计
2.1 总体方案设计
海南电网公司综合业务数据网络采用层次化设计,网络分为3层:核心层、汇聚层和接入层。
基于海南电网的应用系统采用大集中模式建设,网络拓扑采用星型接线方式,核心层只设1个节点。汇聚层覆盖各分公司,共19个节点。接入层覆盖变电站、直属单位、各供电营业网点等,共400多个节点。
海南电网综合业务数据网络结构如图1所示。
PE节点和CE节点都设置在分公司。220kV变电站和110kV变电站的业务种类较简单,人员也较少,网络结构较简单,可以将相关的VLAN网关做在相应的PE路由器上,变电站内采用支持VLAN功能的3层交换机,通过802.1Q,使物理端口可以划分到不同的VLAN及VPN。在链路连接上采用自有光缆,通过FE接口方式接入分公司的PE路由器。由于变电站的站点数众多,这样的设计大大节省了网络的总体投资,同时保证了不同安全区业务运行在不同VPN上的安全要求。
考虑到海南电网应用系统采用大集中模式,所有的应用及数据都集中部署在省公司数据中心(IDC),网络中的所有用户终端都和IDC通信,因此将IDC做为一个独立的CE节点直接接入核心PE设备,从而使IDC独立出来,比起将IDC接入省公司局域网核心交换机的设计,从物理设备上看增加了一对CE交换机,但从网络逻辑结构上看架构十分清晰。这种设计既避免了在省公司CE节点出现网络流量瓶颈,又便于实现业务隔离与互访的安全策略。
2.2 网络连接的设计
汇聚层的各节点采用主备链路与核心层连接,每条链路基本传输速率为155Mbit/s;核心层数据网设备采用STM-4的CPOS接口与传输SDH设备连接;接入层节点接入相应的汇聚层节点,接入方式采用FE方式,利用MSTP承载,传输速率采用N×2Mbit/s。直属单位节点接入核心路由器,采用FE接口方式。自有光缆没到达的节点,租用电信链路采用ADSL VPN组网接入汇聚层节点。
2.3 路由设计与路由策略
对于骨干层MPLS域,需要某种IGP协议与MBGP结合应用,其中MBGP主要完成私网路由标签分配、各私网路由在“公网”传递等作用。各地市CE之间的VPN路由的传递、VPN路由标签的分发,都是通过骨干区域MP-BGP协议的扩展属性实现的。IGP协议的主要作用就是保证MBGP邻居之间的可达性,本工程采用的IGP协议是OSPF,因为OSPF的适应性好,功能完善,当核心层设备在20台以内的时候,只运行一个骨干域“0”,这样网络规划简单、维护方便,并且有利于今后骨干层网络的扩展。
对于PE与CE互联,采用的路由协议有静态路由、直连路由、RIP和BGP等多种路由协议。具体使用哪种路由协议要根据情况而定,如当CE以下的网络结构比较复杂,路由条目较多的时候,PE和CE之间需要运行BGP协议,当然应用这种方案对CE的要求比较高。对于PE与CE之间的路由协议类型最普遍应用的就是静态或直连路由,只要准循相应的IP地址分配原则,各地的路由都可以汇聚成一条或者数目较少的几条,这时应用静态或直连路由是最简单和高效的,而且网络维护非常方便。在本案中,骨干层采用的路由协议是MBGP+OSPF;PE与CE互联的协议采用OSPF;PE与南网综合数据网互联采用静态路由。这样对整个网络可以很好地实现MPLS-VPN。
3 安全区域的划分及安全策略的部署
按照综合业务数据网承载的业务系统安全等级,本方案将业务系统部署在2个MPLS VPN, VPN1可以有控制访问互联网,但VPN2将严格与互联网隔离,每个VPN中通过防火墙、IPS、准入控制等安全设备划分出两个不同的安全区域,即构成了4个不同等级的安全控制区域。安全设备部署在连接IDC的CE交换机前,实现IDC与广域网的隔离控制;安全设备部署在IDC交换机的不同端口之间,实现不同VPN之间的访问控制。通过制定不同的安全控制策略来实现不同安全区域的访问控制,从而实现了4个不同安全分区(如图2所示)。
网络应用设备主要分为服务器和终端2类。服务器根据不同安全等级分别部署在IDC的VPN1和VPN2区(即第2和第3区),财务和营销系统服务器安全等级属第3级,部署在第3区;OA、生产、综合管理等业务系统服务器安全等级属第2级,部署在第2区。
终端分为有人操作的终端(如办公用PC)与无人操作的终端(如负控、抄表终端)两类。有人操作的终端有2种不同服务需求,即访问内网业务系统和访问互联网,这类终端因访问互联网将受到木马和病毒的威胁,因此将其部署在安全级别较低的第1区,第1区通过防火墙、IPS、上网行为控制设备与互联网连接实现访问控制,终端PC设备通过安装杀毒软件和桌面管理实现准入控制;无人操作的终端一般为负控、抄表终端,它们需要访问第3区的营销服务器,同时直接影响到电网公司客户的计量和控制,必须严格确保其不受非法入侵或攻击,因此将其部署在第4区。
4 结语
海南电网综合业务数据网采用MPLS VPN技术实现了在同一网络上承载OA办公系统、生产管理系统、财务系统、营销系统等多种业务,保障了信息的有效、实时传递。通过IPS、防火墙、准入控制等安全设备,实现了安全策略灵活、简单、经济的部署,达到了安全分区的目的。通过近两年来的运行和监控,网络运行稳定、维护方便、拓展性强,业务系统未发生过任何安全事件,既满足用户的应用需求又确保了网络与业务系统的安全控制,是解决企业内部网络安全控制的有效探索和实践。
摘要:简述了多协议标签交换技术的虚拟专网 (MPLS VPN) 的工作原理, 从网络安全的角度对基于MPLS VPN技术的海南电网综合数据网组网和路由方案进行了分析, 结合使用IPS、防火墙等信息安全设备, 将综合数据网络划分为4个不同的安全控制区域, 不同安全等级的信息系统运行在不同的安全控制区域, 不同的安全控制区域采取了不同的路由和访问控制策略, 是解决企业内部网络中安全控制的有效探索和实践。
关键词:数据网络,MPLS,VPN,安全
参考文献
[1]沈鑫剡.IP交换网原理、技术及实现[M].北京:人民邮电出版社, 2003.
数据库分区技术 篇7
移动闭塞方式能够实时地提供列车位置,并据此动态划分闭塞分区,能够在保证行车安全的基础上,大幅度地提高线路的使用率和铁路的运输能力。
1 移动闭塞
移动闭塞[2]采用无线电定位的方式来实现列车定位和占用轨道的检查功能。列车追踪目标点是前行列车的尾部。由于前行列车的速度和位置是随时变化的所以闭塞分区是不固定的。移动闭塞分区是由集中控 制中心根据前车的位置而动态设置的。在列车和轨旁都安装无线网络节点,列车A在占用区间时加入由地面网络节点组成的无线网络,地面无线网络根据接收到列车A发送的电磁波的强度由定位算法确定列车A的运行速度、位置等信息。当列车B进入当前区间时, 同样加入无线网络,并由无线网络确定列车B的运行信息,确定B车和A车间的移动闭塞间隔,然后将移动闭塞间隔和列车A的运行信息等控制信息传递给列车B,列车B根据接收到的信息控制本车运行。移动闭塞系统采用目标距离模式曲线(也称一次制动模式曲线)如图1所示。
2 物联网技术
物联网的核心技术为基于ZigBee协议的无线网络,给铁路各区间站点安装一个唯一的代码的物联网设备,构造一个覆盖整个铁路沿线的实物互联网,在运行铁路沿线的动车也安装该设备。
2.1 ZigBee[3]技术特点
ZigBee是一种具有高可靠性、低复杂度、能够自组网且抗干扰性强的无线网络技术。它以IEEE 802.15.4作为技术标准,实现无线组网通信。ZigBee网络以接力的方式高效地传递数据。
ZigBee现有的可工作频段为2.4 GHz(全球)、868 MHz(欧洲)和915 MHz(美国)。在3个频段上的传输速率分别为250Kbps、20 Kbps、40Kbps。网络节点间的距离可以从标准的75米,扩展到5千米。ZigBee技术的优点主要有以下几点[4]:
(1)可靠性高。采用了CSMA/CA(载波监听多路访问 / 碰撞避免)机制,同时预留专用的时隙用于需要固定带宽的通信业务,避免了发送时数据的竞争和冲突; 各节点模块之间具有自组网功能,信息在整个ZigBee网络中通过自动路由的方式传输,从而保证了信息传输的可靠性。
(2)时延短。ZigBee节点模块的休眠激活时延为15ms,移动节点接入信道时延为15ms。
(3)安全,保密性高。ZigBee提供了数据完整性检查和鉴权功能,支持AES-128加密算法。
(4)网络容量大。可支持多达65000个节点。
(5)网络的自组织、自愈能力强。无需人工干预,网络节点能感知其他节点的存在,并确定连接关系,组成结构化的网络。
2.2 ZigBee 协议栈及网络拓扑结构
ZigBee协议栈从下至上由物理层、数据链路层、网络层、应用汇聚层和高层应用规范层组成。其中,网络层以上的协议由ZigBee联盟负责制定,IEEE则制定物理层和链路层标准。
ZigBee以一个个独立的工作节点为依托,通过无线连接的方式组成星状、树状或网状网络。系统的大部分节点为子节点,在组网通信上,它只是其功能的一个子集,称之为半功能设备(RFD);而另外还有一些节点,负责与所控制的子节点通信、汇集数据和发布控制,或起到通信路由的作用,称之为全功能设备 (FFD)。ZigBee网状网络拓扑结构图如图2所示。
每个独立的网络都有唯一的标识符和网络号 (PAN标识符)。利用PAN标识符,采用16位的短地址码进行网络设备间的通信,并且可激活网络设备之间的通信。每个网络中都有一个唯一的协调器,具有对本网络的管理能力。网络中的全功能节点可作为路由器、协调器以及终端节点来使用,而半功能节点只能由终端节点使用。在网状网络中,全功能节点都具有路由功能,半功能节点只与就近的全功能节点进行通信。
3 移动闭塞网络的整体构架
3.1 系统的基本组成及工作原理
基于ZigBee的移动闭塞系统主要是指由ZigBee无线模块构成的无线网络,其中包括车载节点和地面节点两部分。系统基本结构如图3所示。
地面ZigBee模块铺设在轨旁并且各节点间组成无线网络。整个网络与轨道电路、道岔、应答器等构成地面列控系统。列控系统、列车自动监控系统和联锁设备等通过以太网连接到调度集中系统。
车载ZigBee节点作为ZigBee网络中的一个子节点加入地面ZigBee无线网络并保持连续的双向通信。列车不间断向地面网络传输其标识、方向和速度信息, 地面网络根据接收到的列车发送的信息和信号强度计算、确定列车的移动闭塞分区,并将相关信息传递给该列车和其后面的列车,确保列车安全运行。
3.2 列车定位原理及算法
本系统采用接收信号强度指示技术(Received Sig- nal Strength Indication,RSSI)。RSSI是在接收端测量接收到的信号的强度,根据自由空间的电磁波传播模型, 计算出发射端到接收端的距离,实现列车定位。
自由空间的电磁波传播模型:L=32.44+20lgf+20lgd[7](1)
式中:L为传播损耗,单位为dB;d为接收端与发送端的距离,单位为km;f为工作频率,单位为MHz。
式中:Pt为发射功率,单位为mW;Pr为接收功率, 单位为mW。
当电磁波的工作频率f和发射功率Pt固定不变时,根据接收端接收到信号的功率Pr计算出列车的距离d。当列车节点加入地面无线网络后,网络自动选取接收信号最强的地面节点,来定位列车,根据公式(1) 计算列车距离信号最强的地面无线网络节点,从而实现列车定位。
3.3 移动闭塞系统的规划及仿真
本系统采用TI公司的ZigBee大功率、远距离传输模块—CC2430。该模块主要技术参数如下[7]:
●输出功率:50mW(17dBm)
●室外传输距离:1.6km
●数据传输速率:250 Kbps
●工作频率:2.4 GHz
●接收灵敏度:-102 dBm
●扩展频谱类型:DSSS(直接序列扩频)
●网络拓扑结构:Mesh网
●加密:128位AES
参照应用于哈大高铁上的CTCS-3级列控系统的技术指标,为满足运营速度在300km/h及以上、3分钟列车追踪运行的要求,本移动闭塞系统分区一般按不大于2000m进行设计。为此应保证在一个闭塞分区内有2—3个无线节点。
列车的设计最高时速为350km,最大多普勒频移Δf由公式(4)求出,Δf=0.778KHz。
式中:v为列车运行速度—350km/h;c为光速—3×108m/s;f为无线节点工作频率—2.4GHz。
列车的最大多普勒频移Δf=0.778KHz,它比无线节点的工作频率(2.4GHz)小7个数量级;列车的高速运行要求系统要有很高的数据传输速率,ZigBee的最高传输速率为250Kbps。综上两点可以得出如下结论: 采用2.4GHz的工作频率可以有效地减小因列车高速运行而产生的多普勒效应的影响,同时也为系统提供了高速数据传输通道。
地面与车载无线节点均采用120°定向天线,实现信号对轨道的全覆盖。
为保证在一个闭塞分区内有2—3个无线节点,地面无线模块节点间距离应在500—1500m之间。小于500m设备铺设成本过高,且设备利用率低;距离过大, 模块无法工作。模块最大传输距离可以达到1600m,在实际铺设时还应留有一定的富余量。地面无线节点间距Matlab仿真图如图4所示。
从仿真图可以看出,曲线的切线在点C(1,-83.0542) 处。CC2430的接收灵敏度为 -102dBm,-83.0542dBm完全满足要求。所以可得出如下结论:地面模块间的合理距离为1km。
4 结束语
随着高铁时代的到来,基于ZigBee技术的移动闭塞技术将成为主流。采用移动闭塞后集中调度系统可以根据列车的实时速度和位置计算列车的最大制动距离,动态地分配安全区间。由于保证了列车前后的安全距离,两个相邻的移动闭塞分区就能以很小的间隔同时前进,这使列车能以较高的速度和较小的间隔运行, 从而提高运营效率。同时ZigBee技术以其独有的特性,在众多无线网络技术中脱颖而出。基于ZigBee的无线网络移动闭塞技术将有着非常广阔的前景。
摘要:随着哈大高铁等一批高速客运专线的商业运营,我国真正地进入了高铁时代。在高铁时代,列车最高时速保持在350公里左右。这样,行车安全就显得尤为重要了。在保证行车安全的基础上,采用“无形的”移动闭塞方式既可以缩短列车间隔又可以提高列车运行效率。为此提出了一套基于ZigBee技术的无线物联网络系统,在列车与轨旁设备之间构成移动闭塞分区,确保列车安全、高速、高效运行。