用"RAID 0.0999" 写保护 Linux硬盘分区
http://tech.ddvip.com 2008年04月15日 社区交流
内容摘要:本文首先介绍Linux Kernel 中软件 RAID 技术的实现。在此基础之上,本文进一步介绍作者的一个"玩具"项目,给 Linux 的硬盘分区加上写保护。
本文所关心的,是这些不同级别的软件 RAID 技术在 Linux Kernel 中的具体实现办法。在这里,我们看到 Linux Kernel 向上面说到的 Block 设备层这一逻辑层,注册了一个特殊的 Block 设备,称之为 Multi-Disk Block Device(md)。可以说,这个 Block 设备形成了又一个逻辑层,来支持不同级别的 RAID 技术,甚至还可以支持其它的多硬盘 Block 设备,比如 LVM,逻辑卷控制等。我们看到,为了支持不同级别的 RAID 技术而引进的这又一个逻辑层,并没有妨碍其它 Block 设备。其它的那些不牵扯到多硬盘技术的 Block 设备,并不需要通过 md 这一个逻辑层,这保证了这些设备的效率不会受到影响。
自然而然,我们就要问道,在 md 这一逻辑层上担任转换开关角色的是谁呢?并且,我们还要问,各种级别的软件 RAID,是如何向这一逻辑层进行注册的呢?
首先回答第一个问题,在 md 这一逻辑层上担任转换开关角色的是 Block 设备的 Minor Number。用户程序从文件系统上的 /dev 目录下找到一个设备名,随之就找到了一个 Major Number 以及一个 Minor Number。而 Linux Kernel 就根据 Major Number 找到 Block 设备的驱动,在我们这里,就是 md 多硬盘设备。然后 md 逻辑层根据 Minor Number 再往下找。找什么呢?找不同的 Personality,这是 Linux Kernel 中的 md 逻辑层所使用的术语,它的具体定义如下。
struct mdk_personality_s {
char *name;
int (*make_request) (mddev_t *mddev, int rw, struct buffer_head * bh);
int (*run) (mddev_t *mddev);
int (*stop) (mddev_t *mddev);
int (*status) (char *page, mddev_t *mddev);
int (*error_handler) (mddev_t *mddev, kdev_t dev);
int (*diskop) (mddev_t *mddev, mdp_disk_t **descriptor, int state);
int (*stop_resync) (mddev_t *mddev);
int (*restart_resync) (mddev_t *mddev);
int (*sync_request) (mddev_t *mddev, unsigned long block_nr);
};
来源:ibm 作者:赵蔚 责编:豆豆技术应用
- Linux/Unix 新闻
- Linux/Unix 入门
- Linux/Unix 命令
- Linux/Unix 安装
- Linux 嵌入式系统
- Linux/Unix 编程
- Linux/Unix 管理
- Linux/Unix 桌面
- Linux/Unix 内核
- Linux/Unix 软件
- SCO Unix
- NetBSD
- OpenBSD
- Redhat/Fedora Linux
- 手机
- Linux/Unix find 搜索命令
- Linux/Unix vi 命令
- Linux/Unix kde 桌面环境
- Linux/Unix GNOME 桌面环境
- Linux/Unix Make 命令
- Linux/Unix crontab 命令
- Linux/Unix ext3 文件系统
- Linux/Unix 文件系统详解
- Linux/Unix ADSL 拨号设置
- Linux/Unix GRUB 配置及应用
- Linux/Unix nfs配置
- Linux/Unix 硬件信息查看及管理
- Linux/Unix 优化
- Linux/Unix 交换分区Swap管理及应用
- Linux/Unix 用户管理
- Linux/Unix Ramdisk
- Linux/Unix 密码恢复管理
- Linux/Unix 文件删除恢复
- Linux/Unix fdisk分区
- Linux/Unix lvs负载均衡管理
- Linux/Unix root用户
- Linux/Unix 集群
- Linux/Unix 日志
- 更多Linux/Unix专题……