5 文件系统(2)

5.2.1 磁盘系统

最初级的文件系统就是“光溜溜”无任何“有用信息的”刚刚被格式化的磁盘。由于更多的读者没有实际的开发平台,也只好来玩个虚的。下面将详细介绍如何构建一个光溜溜的初级文件系统。

baishw@debian:~$ mkdir eproject

baishw@debian:~$ cd eproject/

baishw@debian:~/eproject$ ls

baishw@debian:~/eproject$ dd if=/dev/zero of=efs.ext3 bs=1024 count=32K

32768+0 records in

32768+0 records out

33554432 bytes (34 MB) copied, 0.143883 s, 233 MB/s

baishw@debian:~/eproject$ ls -al

total 32812

drwxr-xr-x  2 baishw baishw     4096 2010-04-13 23:38 .

drwxr-xr-x 11 baishw baishw     4096 2010-04-13 23:36 ..

-rw-r--r--  1 baishw baishw 33554432 2010-04-13 23:38 efs.ext3

baishw@debian:~/eproject$ file efs.ext3

efs.ext3: data

baishw@debian:~/eproject$

这段代码有两个目的,构建一个开发目录。每一个项目应该具有一个独立的空间,主要是物理空间。现在虽然是学习嵌入式Linux系统的开发,但是,学习过程其实也是一个项目开发过程,参加过项目开发的人恐怕深有体会。通过一个简单的目录创建命令mkdir,一个被命名为eproject的项目名称或目录名称被创建。以后基本所有的工作都会在这个目录里面完成,因此,需要大家注意,不要将其忘记或者删除。

项目空间构造完成之后就是创建需要使用的“磁盘”。磁盘是用来保存数据的存储介质,作用就是存放数据。同样,在操作系统中,文件也是用来存储数据的,虽然文件不一定在磁盘上(可以在内存、光盘、或其它介质上),但是这并不重要。问题是如果没有多余的物理磁盘,文件可以作为虚拟磁盘吗?答案是肯定的,这就是上面执行的另一个结果:构建一个虚拟原始磁盘,一个没有任何数据的光溜溜的磁盘。有些读者可能不喜欢这个很俗气的“光溜溜”,但是我喜欢,感觉形容的很真实。通过file指令可以查看新的磁盘的属性,只是一个数据文件。为了将这种特殊文件与普通数据文件区分,这种文件称为loop device。关于loop device概念,下面内容会讲到。

dd命令:

       dd命令可以用来拷贝和转化文件,它是GNU项目中coreutils中的一个工具。dd命令可以完成数据的顺序拷贝,例如ghost工具就是基于dd的。

file命令:

       file命令用来决定文件的类型。file命令是很强大的命令,可以用来检验文件的属性,包含压缩文件,可执行文件,动态库文件,甚至设备,目录等。希望你牢记这个命令,它会经常被使用。

例如用来判断一个设备文件:
              baishw@debian:~/eproject$ file /dev/sda

              /dev/sda: block special

现在磁盘已经被创建,接下来就是构建初级文件系统了,也就是磁盘的格式化操作。针对磁盘文件,可以采用格式化工具,安装传统的格式化操作过程进行就可以,在文章中,ext3被选作目的文件系统。

baishw@debian:~/eproject$ sudo mkfs.ext3 efs.ext3

[sudo] password for baishw:

mke2fs 1.41.3 (12-Oct-2008)

efs.ext3 is not a block special device.

Proceed anyway? (y,n) y

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

8192 inodes, 32768 blocks

1638 blocks (5.00%) reserved for the super user

First data block=1

Maximum filesystem blocks=33554432

4 block groups

8192 blocks per group, 8192 fragments per group

2048 inodes per group

Superblock backups stored on blocks:

        8193, 24577

 

Writing inode tables: done                           

Creating journal (4096 blocks): done

Writing superblocks and filesystem accounting information: done

 

This filesystem will be automatically checked every 21 mounts or

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

baishw@debian:~/eproject$ file efs.ext3

efs.ext3: Linux rev 1.0 ext3 filesystem data, UUID=cc8133db-8667-478c-ae2e-a305025f9489

baishw@debian:~/eproject$

在上面的执行过程中,需要注意磁盘的格式化操作需要以root用户权限才可以执行。为此采用了sudo命令将用户权限切换为root用户。当然读者也可以直接通过su命令切换到root,然后再执行mkfs.ext3指令。有些操作者忘记了自己是root还是普通用户,可以使用whoami命令或者是id命令。mkfs.ext3命令是用来格式化磁盘,以ext3的文件格式保存数据。Ext3是什么呢?由于大多数的读者熟悉WINDOWS,从而对FAT32FAT16NTFS不是很陌生,那么ext3就是和这些文件系统功能一样,只是管理方式不一样的文件系统。mkfs.ext3会根据ext3创建文件系统,也就是开始布置磁盘上的数据结构,可以从上面的执行结果中看到磁盘的一些属性信息。注意,由于不是传统的磁盘设备,它会咨询是否继续操作,你输入“y”就可以了。

当磁盘格式化完成之后,再一次使用file命令,这时候文件的属性就彻底变化了,不仅指明了文件系统的类型,而且还具有了UUID

sudo命令:

 

su命令:

 

whoami命令:

 

id命令:

 

mkfs.ext3命令:

 

磁盘已经被格式化,现在开始检验新的磁盘。最简单的简单方式就是访问,通过读写等操作检验文件系统是否工作。接下来将详细查看检验过程。

debian:/home/baishw/eproject# mkdir efs

debian:/home/baishw/eproject# ls efs

debian:/home/baishw/eproject# sudo mount efs.ext3 -t ext3 efs -o loop

debian:/home/baishw/eproject# ls efs

lost+found

debian:/home/baishw/eproject# touch efs/hello.txt

debian:/home/baishw/eproject# ls efs

hello.txt  lost+found

debian:/home/baishw/eproject# sudo umount efs

debian:/home/baishw/eproject# ls efs

debian:/home/baishw/eproject#

首先是为新的文件系统创建一个挂载点,就是访问磁盘的入口efs。通过ls命令查看挂载点下面的内容,显然是空的,没有任何信息,因为现在efs就是一个普通的空目录文件。接下来有趣的事情发生了,就是通过mount指令将磁盘文件挂载的efs上。当然,mount命令的执行也需要root权限,所以还是sudo操作。在mount命令使用过程中,-t是用来指明磁盘文件系统是ext3类型。-o说明这是一个loop设备,也就是一个伪存储设备。然后,在适用ls的时候,发现一个新的目录在efs目录里面出现了。从而表明通过efs已经成功的访问到磁盘文件的内部。接下来使用touch命令创建一个普通文件hello.txt,然后用ls命令检查它的存在,它确实在efs目录的下面。接下来就是通过umount命令卸载这个磁盘文件系统,当再一次检验efs的时候,efs下面什么都没有了,又恢复了原样。因为umount解除了efs挂载接口的功能。现在,一个新的磁盘产生了,可以挂载,卸载,读写文件等操作。

mount命令:

 

umount命令:

 

touch命令:

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值