(1) RAM Disk
device /dev/ram1 ~ /dev/ram8 device number
(1,1)-(1,8)
缺省ramdisk最大为4M, 其实际容量根据占用情况调整.若要使用
大于4M的ramdisk, 可以给kernel加参数 ramdisk_size来调整
eg: mke2fs /dev/ram1 在块设备/dev/ram1上建ext2
fs
mount /dev/ram1 /mnt
mke2fs /dev/ram2 2048 设定最大为2048K
mount /dev/ram2 /mnt
(2) Loopback Device
device /dev/loop0 ~ /dev/loop7 device number (7,0)-(7,7)
所谓loopback device指的就是拿文件来模拟块设备, 首先你的kernel要支持,
可以在compile kernel时加入loop支持,或加入loop模块
insmod loop
eg: dd if=/dev/zero of=/tmp/rootfs bs=1k count=2048
建一个2M的全0文件
mke2fs /tmp/rootfs
在rootfs文件上建ext2 fs
mount /tmp/rootfs /mnt -o loop
将rootfs mount在/mnt上
这里介绍的是简单的-o loop用法,另一种用法是losetup(man
losetup for more
details)
eg: losetup /dev/loop1 /tmp/rootfs 将loop1设备与rootfs相连接,
此时
losetup /dev/loop1可见信息
mount /dev/loop1 /mnt
...
losetup -d /dev/loop1
去除loop1设备与文件的确联结
(3) MD (Multiple Devices)
device /dev/md0 ~ /dev/md3 device number (9,0)-(9,3)
MD driver可以将几个硬盘分区合起来成为一个逻辑上的块设备,
现在支持
linear(线性相连)和RAID-0(使数据尽可能均匀分布在各分区上).
内核中一般都
已有MD support, 其utility在:
ftp://sweet-smoke.ufr-info-p7.ibp.fr/pub/Linux/md035.tgz
我放了一份在PKU LIB:
ftp://ftp.lib.pku.edu.cn/incoming/linux/md035.tgz
将其解开后make install即可将几个utility和man装好
eg: 将/dev/hda2和/dev/hda4 两个分区和成一个逻辑分区
mdadd /dev/md0 /dev/hda2 /dev/hda4
指定/dev/md0包括的物理分区
mdrun -pl /dev/md0
用linear方式启动/dev/md0
mount /dev/md0 /mnt
....
mdstop /dev/md0
停止/dev/md0设备的工作
MD设备可将不相邻的小分区合成大分区, 对于有时不想重分区可能有点用,
但可惜好象不能用于root设备?
btw: Happy New Year To All Linux/FreeBSD/GNU fans!
----
简单补充一下,关于Initial Ram Disk,主要用于内核在安装根文件系统(root
fs)之前
预装一些模块。如果你在lilo里指定了一个初始化内存虚拟盘的映像文件(如initrd.img)
则内核在安装root之前把这个文件作为root安装上,如果有linuxrc文件则执行它,否则
调入模块之后再御载,重新安装真正的root设备。如果你用了SCSI设备,Redhat的安装
程序通常就是这么干的。
如何看已知的映像文件里的内容呢?raner提醒我那是zip压缩过的(file initrd.img),
于是cp initrd.img initrd.gz; gzip -d initrd.gz; mount -o loop initrd
/mnt就行了。
自己要定做一个映像文件可以用mkinitrd命令(man mkinitrd)。
本文转自中文Linux论坛