linux文件系统管理概括,Linux常用文件系统概述-RAM篇

前面提到的文件系统都是基于Flash存储器的,而本文介绍的这些文件系统都是利用RAM来作为他们的存储空间。它们共同的优点都是读写的速度非常快(因为是在内存中读写),而缺点也很明显,就是当系统复位之后会丢失所有数据。

二、基于RAM的文件系统

1、Ramdisk文件系统

Ramdisk是将一部分固定大小的内存当做分区来使用。它并非一个实际的文件系统,而是一种将实际的文件系统装入内存的机制,并且可以作为根文件系统。

A、特点

a. 将一些经常访问但不会修改的文件通过ramdisk放入内存,可明显提高系统的性能;

b. 和CRAMFS、JFFS2相比,压缩率不高,占用资源多;

c. 存取速度快;

d. 只读文件系统,掉电数据丢失。

B、创建方法

a. 内核起来之后创建和挂载方式

查看系统可用的ramdisk

$ls -al /dev/ram*

内核将ramdisk作为一个设备文件来管理,未格式化之前还不占用内存空间

$mke2fs /dev/ram0

这个命令就格式化了一个ramdisk,出现以下提示:

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

Stride=0 blocks, Stripe width=0 blocks

16384 inodes, 65536 blocks

3276 blocks (5.00%) reserved for the super user

First data block=1

Maximum filesystem blocks=67108864

8 block groups

8192 blocks per group, 8192 fragments per group

2048 inodes per group

Superblock backups stored on blocks:

8193, 24577, 40961, 57345

Writing inode tables: done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 36 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

加载ramdisk

$mkdir /mnt/ramdisk

$mount /dev/ram0 /mnt/ramdisk

可以查看创建的ramdisk的大小

root@jgf:~/qihuan# df -k /dev/ram0

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/ram0                63461      1289     58896   3% /mnt/ramdisk

卸载

$umount /mnt/ramdisk

b. 如何创建ramdisk镜像文件

提供一个脚本用于将准备好的rootfs文件夹创建为ramdisk.img,可在ubuntu上运行,原来还是利用ubuntu的mke2fs命令格式化一块ram,在mount到/mnt下面,再将rootfs拷贝到其中,在拷贝出来便成为了ramdisk.img镜像文件。

make_ramdisk.sh

#!/bin/bash

# Housekeeping...clean before img

rm -f /tmp/ramdisk.img

# Ramdisk Constants

# 80M = 80 * 1024 * 1024

RDSIZE=8192

BLKSIZE=1024

# Create an empty ramdisk image

dd if=/dev/zero of=/tmp/ramdisk.img bs=$BLKSIZE count=$RDSIZE

# Make it an ext2 mountable file system

/sbin/mke2fs -F -m 0 -b $BLKSIZE /tmp/ramdisk.img $RDSIZE

# Mount it so that we can populate

mkdir -p /mnt/ramdisk

mount /tmp/ramdisk.img /mnt/ramdisk -t ext2 -o loop

# Populate the filesystem (subdirectories)

cp -ar ./rootfs/* /mnt/ramdisk/

mkdir -p /mnt/ramdisk/sys

mkdir -p /mnt/ramdisk/proc

mkdir -p /mnt/ramdisk/var

mkdir -p /mnt/ramdisk/tmp

mkdir -p /mnt/ramdisk/mnt

mkdir -p /mnt/ramdisk/dev

# Finish up...

umount /mnt/ramdisk

cp /tmp/ramdisk.img ./

rm -fr /mnt/ramdisk

这时便生成了ramdisk.img,可以在你的ubuntu上挂载试验一下

$mount ramdisk.img /mnt/ -o loop

$ls /mnt

bin etc init lost+found modules proc sys usr dev home lib mnt sbin tmp var

如果实现将其烧写到nand的某个分区中,然后uboot启动的时候,需要一些参数配置,并且需要在读取内核之后紧接着将其也读到内存的相应位置,再启动linux www.it165.net:

define CONFIG_BOOTARGS "root=/dev/ram0 rw console=ttyS0,115200 mem=64mb initrd=0x41000000,0x800000 init=/linuxrc"

define CONFIG_BOOTCOMMAND "mtdparts default; nand read 0x41000000 0xe00000 0x800000; nand read 0x40008000 0x400000 0x300000; bootm 0x40008000;"

当然,在嵌入式中,对于ramdisk的支持需要一些配置,列出:

1、General setup --->

[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support

2、File systems --->

Second extended fs support

3、Device Drivers --->

[*] Block devices --->

--- Block devices

Loopback device support

Cryptoloop Support

RAM block device support

(16) Default number of RAM disks

(8192) Default RAM disk size (kbytes)  说明:1、这里配置的是支持initramfs(只是下面要介绍到的一个重要的文件系统)和ramdisk的支持

2、ramdisk是基于EXT2的,所以需要支持EXT2,当然,也有EXT3类型的ramdisk

3、这里可以指定ramdisk的最大空间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值