发信人: raner (lilo), 信区: Linux
标  题: Linux下的几种特殊块设备
发信站: BBS 水木清华站 (Wed Dec 31 14:57:24 1997)

(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论坛