Linux熱門檔案系統概述-RAM篇__Linux

來源:互聯網
上載者:User
  前面提到的檔案系統都是基於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:

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的最大空間       2、RamFS和TmpFS檔案系統        這兩個檔案系統(以下簡稱RamFS)是Linus Torvalds開發的一種基於記憶體的檔案系統,工作於虛擬檔案系統(VFS)層, 不能格式化,可以建立多個,建立時可以指定其最大能使用的記憶體大小,並且可以讀寫。      嵌入式Linux中許多的後台守護進程會產生很多的日誌訊息,還有核心日誌記錄機制,如syslogd、dmesg和klogd等,會在/var/ 和 /tmp/目錄下產生許多的訊息。如果這些訊息都儲存在Flash中,勢必極大的消耗Flash的使用壽命,這裡最好的方法是使用RamFS。      與傳統的ramdisk相比,不同之處在於其不可以格式化,檔案系統大小可以動態變化。      A、掛載方式
#mkdir /mnt/ramfs
#mount -t ramfs none /mnt/ramfs
注意ramfs沒有對應的/dev/裝置節點
預設,ramfs被限制為可以記憶體大小的一半,也可以通過maxsize(kB單位)
#mount -t ramfs none /mnt/ramfs -o maxsize=2000
另外,在/etc/rc.d等檔案裡面會看到這樣的內容
#mount -t tmpfs tmpfs /var -o size=512k
#mkdir -p /var/tmp
#mkdri&

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.