LINUX文件系统[转载]

LINUX文件系统
 文件系统概述
1.1 什么是文件系统

文件系统是
操作系统(用于明确磁盘或分区上的文件)的方法和数据结构;即在一个磁盘或分区上组织文件的方法。

“明确”的含义为:文件的命名、文件的存储(结构)、文件的组织及文件的存取的方法。

文件系统也指用于存储文件的磁盘或分区,或文件系统种类。


1.2 文件系统的作用

文件系统屏蔽了底层硬件的处理细节,使得用户可以用“名字”访问物理存储介质中的数据,数据放在哪,如何存放,如何处理,对用户透明。简单说,文件系统就是实现数据“按名存取”。

少数程序(包括最有理由的产生文件系统的程序)直接对磁盘或分区的原始扇区进行操作;这可能破坏一个存在的文件系统。大部分程序基于文件系统进行操作,在不同种文件系统上不能工作。 


1.3 文件系统的创建

文件系统创建的过程,是在存储设备或分区上建立文件系统的过程,即:将与该文件系统有关的记录数据结构写到磁盘上,一般也被称为格式化或初始化。

通过分区当然不能产生任何文件系统,在分区之后只是对硬盘上的磁盘空间进行了保留,还不能直接使用,在此之后分区必须要进行格式化。否则,对所有数据的访问只能通过直接对磁盘的扇区进行操作来实现了。



 LINUX文件系统

2.1 LINUX支持的文件系统的类型

2.1.1 minix
Minix操作系统使用的文件系统,是Linux最先使用的文件系统。
它有许多缺点:分区只能小于64MB,只支持短文件名,单一的时间戳,等等。在软盘和动态磁盘领域仍然有用。
2.1.2 ext 
对Minix的扩展。已完全被ext2取代,内核最终将不会支持它。
2.1.3 ext2
Linux使用的,性能很好的文件系统,用于固定文件系统和可活动文件系统。它是作为ext文件系统的扩展而设计的。ext2在Linux所支持的文件系统中,提供最好的性能(在速度和CPU使用方面),简短的说,ext2是Linux的主要文件系统。
2.1.4 ext3
对ext2增加日志功能后的扩展。它向前,向后兼容ext2。意为ext2不用丢失数据和格式化就可以转换为ext3,ext3也可以转换为ext2 而不用丢失数据(只要重新安装该分区就行了)。我从2001年10月就使用ext3,它简单且稳定。在RedHat7.2和Mandrake8.0,中作为一个选项。强烈推荐使用这种文件系统。

2.1.5 xiafs 
作为Minix文件系统的一个稳定,安全的扩展,提供基本的最常用的特点。目前已经停止开发和维护了。不太常使用。
2.1.6 msdos
DOS, Windows和一些os/2计算机使用的文件系统。文件名不能超过8个字符,然后跟一个3个字符的后缀。
2.1.7 umsdos   
Linux使用的扩展的DOS文件系统。增加了长文件名支持,UID/GID,POSIX权限,特殊文件等而依然保持和DOS文件系统兼容。
2.1.8 vfat 
Windows95,Windows NT使用的扩展的DOS文件系统。增加长文件名支持,文件名可长达255个字符。
2.1.9 proc 
一种假的文件系统,用于和内核数据结构接口, 它不占用磁盘空间,参考 man proc。
2.1.10 iso 9660 
一种针对ISO9660标准的CD-ROM文件系统。自动支持两种扩展(看下面)。
2.1.11 High Sierra 
ISO 9660标准的前身。Linux自动支持它。Rock Ridge 是Rock Ridge interchange Protocol协议的一个产品,用于进一步向Unix系统描述ISO9660文件系统下的文件。另外提供诸如长文件名,UID/GID,POSIX权限,等信息。Linux自动支持它。
2.1.12 hpfs 
OS/2使用的高性能的文件系统。在Linux系统中是只读的,因为缺乏相应的文档资料。
2.1.13 sysv 
SystemV/Coherent文件系统在Linux上的实现。它实现了所有的Xenix,SystemV/386,和 Coherent文件系统。
2.1.14 nfs   
用于存取远方计算机硬盘的文件系统。
2.1.15 smb  
支持SMB协议的网络文件系统,Windows用它来实现工作组共享。
2.1.16 ncpfs 
Novell NetWare使用的,支持NCP协议的网络文件系统。
2.1.17 Devpts
一个虚拟的文件系统,一般安装在/dev/pts。为了得到一个虚拟终端,进程打开/dev/ptmx,然后就可使用虚拟终端。
2.1.18 fat 
不是一个单独的文件系统,而是msdos, umsdos 和vfat 文件系统的常用部分。支持fat文件系统的读写。
2.1.19 UFS 
一个广泛使用于各种操作系统的文件系统
2.1.20 swap 
一种特殊的分区,用于在内存和硬盘间交换数据的文件系统。
2.1.21 raiserfs 
Linux内核2.4.1以后(2001年1 月)支持的,一种全新的日志文件系统。
2.1.22 hfs     
hfs(=hierarchical files system)是苹果文件系统。
2.1.23 ntfs
Windows NT文件系统。不支持NTFS文件系统的写入。

注:
1 日志式文件系统
ext3与ext2有什么不同?ext3其实只是多做了一个日志式数据的记录。要将数据写入硬盘时,ext2是直接将数据写入,但ext3则会将这个“要开始写入”的信息写入日志式记录区,然后才开始写入数据。在数据写入完毕后,又将“完成写入动作”的信息写入日志式记录区,这有什么好处呢?最大的好处就是数据的完整性与“恢复力”。
什么是“恢复力”呢?早期的ext2文件系统如果遇到断电,文件系统就要检查文件一致性。这个检查过程要将整个分区内的文件进行完整的比较,很慢,时间很久。如果是ext3,那么只要通过检查“日志记录区”就可以知道,断电时有哪些文件正在进行写入,只要检查这些地方即可。这样就能够节省很多文件检查的时间。
2.2 存储设备进行格式化,即建立文件系统的过程

如果您想添加一个新的分区,或者增加一个新的硬盘,您要通过分区工具来添加分区,然后要创建分区的文件系统,然后才是挂载文件系统(比如通过mount 加载,或者通过修改 /etc/fstab来开机自动加载)。

2.2.1 格式化工具介绍和使用

常用的建立文件系统(格式化)的工具mkfs、mke2fs 、mkfs.ext3、mkfs.reiserfs、mkfs.ext2、mkfs.msdos、mkfs.vfat、mkswap。

提示:如果您不能创建reiserfs 文件系统,也就是说没有mkfs.reiserfs 或者mkreiserfs 命令,是您没有安装reiserfs-utils工具包。

2.2.1.1 mkfs的使用
使用方法:
[root@localhost beinan]# mkfs -t 文件系统  存储设备

注:
这里的文件系统是要指定的,比如 ext3 ;reiserfs ;ext2 ;fat32 ;msdos 等... ...
设备比如是一个硬盘的分区,软盘,光驱等.. ... 
在格式化分区之前,您得懂得如何查看硬盘分区情况,并有针对性的格式化;比如用 fdisk -l 来查看; 
比如我想格式化一个移动U盘中的一个分区;全景应该是:
[root@localhost beinan]# fdisk –l
Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device    Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1         765     6144831    7  HPFS/NTFS
/dev/hda2             766        2805    16386300    c  W95 FAT32 (LBA)
/dev/hda3            2806        9729    55617030    5  Extended
/dev/hda5            2806        3825     8193118+  83  Linux
/dev/hda6            3826        5100    10241406   83  Linux
/dev/hda7            5101        5198      787153+  82  Linux swap / Solaris
/dev/hda8            5199        6657    11719386   83  Linux
/dev/hda9            6658        7751     8787523+  83  Linux
/dev/hda10           7752        9729    15888253+  83  Linux
Disk /dev/sda: 1035 MB, 1035730944 bytes
256 heads, 63 sectors/track, 125 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          25      201568+  83  Linux
/dev/sda2              26         125      806400    5  Extended
/dev/sda5              26          50      201568+  83  Linux
/dev/sda6              51          76      200781     83  Linux 
我们可以看到有sda这个设备,所以可以用 fdisk -l /dev/sda专门来显示他的分区情况;比如我想格式化 /dev/sda6 分区为 ext3文件系统,则为:
[root@localhost beinan]# mkfs -t ext3  /dev/sda6
mke2fs 1.37 (21-Mar-2005)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
50200 inodes, 200780 blocks
10039 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
25 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information:  注:在这里直接回车;
done

This filesystem will be automatically checked every 26 mounts or 180 days, whichever comes first.  Use tune2fs -c or -i to override.
这样就格式化好了,sda6现在就是ext3文件系统了;我们就可以用mount 加载这个分区,然后使用这个文件系统;
[root@localhost beinan]# mkdir  /mnt/sda6 
[root@localhost beinan]# chmod  777 /mnt/sda6 
[root@localhost beinan]# mount  /dev/sda6   /mnt/sda6 
当然您也可以把分区格式化成其它的文件系统;比如我们把 /dev/sda6格式化为ext3 、ext2、reiserfs、fat32、msdos 文件系统,命令格式如下;
[root@localhost beinan]# mkfs -t ext3  /dev/sda6 
[root@localhost beinan]# mkfs -t ext2  /dev/sda6
[root@localhost beinan]# mkfs -t reiserfs  /dev/sda6
[root@localhost beinan]# mkfs -t fat32   /dev/sda6
[root@localhost beinan]# mkfs -t msdos   /dev/sda6
... ... 
2.2.1.2 mkfs.ext3 mkfs.reiserfs mkfs.ext2 mkfs.msdos mkfs.vfat mke2fs 的介绍
我们先说了一个mkfs 工具后,我们再来介绍 mkfs.ext3 mkfs.reiserfs mkfs.ext2 mkdosfs mkfs.msdos mkfs.vfat ,其实mkfs 在执行的命令的时候,也是调用的这个工具,这也是我先把mkfs介绍的主要原因。
通过文件名,我们就知道这些工具是支持什么文件系统;这些命令为我们提供了更多的方便;
[root@localhost beinan]# mkfs.ext3    /dev/sda6     注:把该设备格式化成ext3文件系统
[root@localhost beinan]# mke2fs -j   /dev/sda6       注:把该设备格式化成ext3文件系统
[root@localhost beinan]# mkfs.ext2  /dev/sda6       注:把该设备格式化成ext2文件系统
root@localhost beinan]# mke2fs    /dev/sda6          注:把该设备格式化成ext2文件系统 
[root@localhost beinan]# mkfs.reiserfs  /dev/sda6   注:把该设备格式化成reiserfs文件系统
[root@localhost beinan]# mkfs.vfat   /dev/sda6        注:把该设备格式化成fat32文件系统
[root@localhost beinan]# mkfs.msdos   /dev/sda6   注:把该设备格式化成fat16文件系统,msdos文件系统就是fat16;
[root@localhost beinan]# mkdosfs   /dev/sda6         注:把该设备格式化成fat16文件系统,同mkfs.msdos 
... ... 
2.2.1.3 mkswap 把一个分区格式化成为swap交换区
[root@localhost beinan]# mkswap /dev/sda6  注:创建此分区为swap 交换分区 
[root@localhost beinan]# swapon  /dev/sda6  注:加载交换分区;
[root@localhost beinan]# swapoff  /dev/sda6  注:关闭交换分区;
我们查看系统已经加载的swap交换分区;
[root@localhost beinan]# swapon  /dev/sda6  注:加载交换分区;
[root@localhost beinan]# swapon -s                
Filename                                Type            Size    Used    Priority
/dev/hda7                               partition       787144  0       -1
/dev/sda6                               partition       225144  0       -3
      为什么我的系统有两个交换分区?因为我用移动U盘做的实验,主要是为写教程之用;sda6是我在U盘上建的swap分区;
如果让swap开机就加载,应该改 /etc/fstab文件,加类似如下一行;
/dev/sda6    swap  swap  defaults    0 0  注:把此行中的/dev/hda7 改为您的交换分区就行;
或者把命令行直接写入 /etc/rc.d/rc.local中也行:swapon  /dev/sda6  
如果您的硬盘不能再分区,您可以创建一个swap文件
[root@localhost beinan]# dd if=/dev/zero of=/tmp/swap bs=1024 count=524288 
注:创建一个大小为512M 的swap 文件,在/tmp目录中;您可以根据自己的需要的大小来创建swap 文件;
读入了 524288+0 个块
输出了 524288+0 个块
[root@localhost beinan]# mkswap /tmp/swap 注:把/tmp/swap 文件,创建成swap 交换区 
Setting up swapspace version 1, size = 536866 kB
no label, UUID=d9d8645d-92cb-4d33-b36e-075bb0a2e278
[root@localhost beinan]# swapon /tmp/swap   注:挂载swap 
[root@localhost beinan]# swapon -s
Filename  Type           Size        Used      Priority
/dev/hda7  partition      787144   888        -1
/tmp/swap  file            524280   0            -2
注意:其实我们在安装系统的时候,就已经划分了交换分区;查看/etc/fstab,应该swap的行;如果您在安装系统时没有添加swap,可以通过这种办法来添加;
注意:swapon命令 激活系统交换分区
1 参数:
       -a:将/etc/fstab 文件中所有设置为swap的设备,激活为交换分区。
       -s:显示交换分区的使用状况。
2 激活交换分区:swapon [设备]


2.3 挂载文件系统
挂载,一个硬盘或分区上的文件系统的顶层目录挂到另一个文件系统的子目录上,这个子目录下所有的目录都属于这个硬盘或分区,该子目录称为挂载点。
注意:
1、挂载点必须是一个目录。
2、一个分区挂载在一个已存在的目录上,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用。 
挂载文件系统,目前有两种方法:一是通过 mount 来挂载,另一种方法是通过/etc/fstab文件来开机自动挂载。
2.3.1 通过mount来挂载磁盘分区(或存储设备)
挂载文件系统的命令格式:
[root@localhost beinan]# mount  [-t  文件系统 ]  [-o  选项]  设备  目录
-t 指定文件系统的类型 
-t 后面跟 ext3 、ext2 、reiserfs、vfat 、ntfs 等,其中 vfat 是fat32和fat16分区文件系统所用的参数;如果您忘记了文件系统,也可以在-t 后面加auto (自动检测文件系统)。
-o 选项:
主要选项有权限、用户、磁盘限额、语言编码等,但语言编码的选项,大多用于vfat和ntfs文件系统。 
设备:
指存储设备或其分区,比如/dev/hda1,/dev/sda1,cdrom 等...至于您的系统中有哪些存储设备,主要通过fdisk -l或者查看/etc/fstab或dmesg;一般的情况下光驱设备是/dev/cdrom ;软驱设备是/dev/fd0 ;硬盘及移动硬盘以 fdisk -l 的输出为准。

2.3.1.1 对光驱和软驱的挂载;
举例:
[root@localhost beinan]# mount /dev/cdrom
[root@localhost beinan]# mount /dev/fd0
第一行是mount 光驱,至于mount 到哪了,我们可以通过查看 /etc/fstab来查看;同理软驱/dev/fd0设备也是如此;比如我们在/etc/fstab
/dev/hdc                /media/cdrecorder       auto    users,exec,noauto,managed 0 0
我们可以肯定的是光盘被mount 到了 /media/cdrecorder 目录;
但我们也可以自己来指定cdrom 挂载的位置 ;比如 /mnt/cdrom ,所以我们也可以这样来挂载光驱;
[root@localhost beinan]#mkdir /mnt/cdrom 
[root@localhost beinan]# mount /dev/cdrom  /mnt/cdrom 
我们先建一个目录,然后执行mount 命令,这样cdrom 就挂在 /mnt/cdrom 中了;我们就可以在/mnt/cdrom 中查看光盘中资料和文件;这个目录您想怎么建就怎么建。用什么目录不是最重要的。重要的是您知道自己在做什么就行了。比如我们也可以把这个目录建成 dvdrom ;然后用 mount /dev/cdrom /mnt/dvdrom 来挂载;
有时我们的设备是COMBO的,有支持dvd cd 还能支持刻录的;我们最好查一下光驱设备的,主要有两个方法,一是通过查看 /etc/fstab ,二是通过ls -l 来查看;比如我们在/etc/fstab中查看到类似下面的一行;
/dev/hdc                /media/cdrecorder       auto    users,exec,noauto,managed 0 0
通过这个,我们能知道hdc 就是cdrom 也是dvdrom的设备 ,更是 cdrecorder的设备;为了验证我们的说法;请用ls -l 来列文件;
[root@localhost beinan]# ls -lh /dev/dvd*
lrwxrwxrwx  1 root root 3 2005-09-13  /dev/dvd -> hdc
[root@localhost beinan]# ls -lh /dev/cdrom
lrwxrwxrwx  1 root root 3 2005-09-13  /dev/cdrom -> hdc
[root@localhost beinan]# ls -lh /dev/cdwriter
lrwxrwxrwx  1 root root 3 2005-09-13  /dev/cdwriter -> hdc
这不一目了然了吗?dvd 、cdrom 、cdwriter 的文件名都链接到了hdc这个设备,所以光驱设备根源就是/dev/hdc ;所以我们也可以这样挂载光驱;
[root@localhost beinan]# mkdir /mnt/cdrom 
[root@localhost beinan]# mount  /dev/hdc   /mnt/cdrom 



2.3.1.2 挂载硬盘和移动硬盘的文件系统;
一个分区只有创建了文件系统后才能使用,前面我们说过了,我们在Linux大多用的是ext2 、ext3、reiserfs、fat32、msdos 、ntfs等;
2.3.1.2.1 挂载Linux文件系统;
对于ext2 、ext3 、reiserfs 不需要指定文件系统的编码,其实mount 也没有这个功能;这些Linux文件系统,如果出现编码问题,一般是通过export LANG来指定;所以挂载这些文件系统比较简单。
首先我们得建一个文件系统挂载的目录,我们前面已经提到了,一个有文件系统的分区要挂到系统中,必须要有一个挂载点,这个挂载点就是一个目录,比如我们通过fdisk -l 得知hda5 是Linux分区,并且创建了文件系统,比如是reiserfs 文件系统吧:
[root@localhost beinan]# fdisk -l /dev/had
Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1         765     6144831    7  HPFS/NTFS
/dev/hda2             766        2805    16386300    c  W95 FAT32 (LBA)
/dev/hda3            2806        9729    55617030    5  Extended
/dev/hda5            2806        3825     8193118+  83  Linux
/dev/hda6            3826        5100    10241406   83  Linux
/dev/hda7            5101        5198      787153+  82  Linux swap / Solaris
/dev/hda8            5199        6657    11719386   83  Linux
/dev/hda9            6658        7751     8787523+  83  Linux
/dev/hda10           7752        9729    15888253+  83  Linux
我们先用fdisk -l 来查看一下分区情况:我们想要挂载/dev/hda5分区,比如hda5分区创建的是reiserfs文件系统。
[root@localhost beinan]# mkdir  /mnt/hda5/   注:先创建一个挂载目录;
[root@localhost beinan]# chmod 777  /mnt/hda5/    注:设置/mnt/hda5的权限为任何用户可写可读可执行;这样所有的用户都能在写入;
[root@localhost beinan]# mount -t reiserfs /dev/hda5 /mnt/hda5    注:通过-t reiserfs 来指定/dev/hda5是reiserfs 文件系统, 并且挂载到/mnt/hda5目录;
[root@localhost beinan]# mount  -t auto   /dev/hda5 /mnt/hda5   注:假如我们不知道hda5
reiserfs 文件系统,我们可以用 -t auto 让系统定夺,然后挂载到/mnt/hda5 ;
[root@localhost beinan]# mount /dev/hda5 /mnt/hda5   注:不加任何参数,直接 mount   /dev/hda5 到/mnt/hda5;系统自动判断分区文件系统;
是不是被挂载了,我们通过df -lh 来查看;
[root@localhost beinan]# df –lh
Filesystem            容量       已用      可用      已用%   挂载点
/dev/hda8              11G       8.5G      1.9G      83%       /
/dev/shm              236M            0            236M     0%         /dev/shm
/dev/hda10             16G      6.9G      8.3G      46%       /mnt/hda10
/dev/hda5             7.9G       5.8G      2.1G      74%       /mnt/hda5

2.3.1.3 卸载文件系统umount
命令用法:[root@localhost beinan]# umount  设备或挂载目录 
举例:
[root@localhost beinan]# mount -t auto /dev/hda5 /mnt/hda5   注:挂载/dev/hda5;
[root@localhost beinan]# df -lh       注:查看/dev/hda5是否被挂载;
Filesystem            容量  已用 可用 已用% 挂载点
/dev/hda8              11G  8.5G  1.9G  83% /
/dev/shm              236M     0  236M   0% /dev/shm
/dev/hda10             16G  6.9G  8.3G  46% /mnt/hda10
/dev/hda5             7.9G  5.8G  2.1G  74% /mnt/hda5
[root@localhost beinan]# umount /dev/hda5  注:卸载/dev/hda5 
[root@localhost beinan]# df -lh        注:看是否卸载了/dev/hda5;
Filesystem            容量  已用 可用 已用% 挂载点
/dev/hda8              11G  8.5G  1.9G  83% /
/dev/shm              236M     0  236M   0% /dev/shm
/dev/hda10             16G  6.9G  8.3G  46% /mnt/hda10
[root@localhost beinan]#umount /dev/cdrom  注:卸载cdrom ;
[root@localhost beinan]#umount  /dev/fd0   注:卸载软驱;
再说一个查看分区是否被挂载了的命令,直接用 mount -s 
[root@localhost beinan]# mount -s


2.3.2 挂载Windows文件系统

2.3.2.1 NTFS文件系统的加载

我们要首先确认系统的内核,我们要根据系统的内核版本来下载支持ntfs的内核补丁;

我们在前面已经通过fdisk -l 得知/dev/hda1 是NTFS分区,我们如何加载它呢?在Fedora core 4.0 中,系统默认是不支持NTFS加载的,我们只能安装第三方kernel的ntfs插件或者编内核来实现,相对于编译内核来说,插件是最方便的,也是最简单的:
[root@localhost beinan]# uname -a
Linux localhost.localdomain 2.6.11-1.1369_FC4 #1 Thu Jun 2 22:55:56 EDT 2005 i686 i686 i386 GNU/Linux

一定要看仔细,是2.6.11-1.1369_FC4,是i686的,没有带smp字样的,smp是支持多处理器的内核,如果您用这样的内核,就要下载相应版本的smp的。
我们到哪去下载呢?kernel ntfs 项目在 http://linux-ntfs.sourceforge.net 
Fedora core 4.0的kernel NTFS的RPM包在:http://linux-ntfs.sourceforge.net/rpm/fedora4.html
根据上面内核的信息,我们要下载:2.6.11-1.1369_FC4 i686的,下载的应该是:
kernel-module-ntfs-2.6.11-1.1369_FC4-2.1.22-0.rr.6.0.i686.rpm
安装kernel ntfs模块:[root@localhost beinan]# rpm -ivh kernel-module-ntfs*
判断哪个分区是NTFS格式,加载NTFS分区:
[root@localhost beinan]# /sbin/fdisk –l
Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1         765     6144831    7  HPFS/NTFS
/dev/hda2             766        2805    16386300    c  W95 FAT32 (LBA)
/dev/hda3            2806        7751    39728745    5  Extended
/dev/hda5            2806        3825     8193118+  83  Linux
/dev/hda6            3826        5100    10241406   83  Linux
/dev/hda7            5101        5198      787153+  82  Linux swap / Solaris
/dev/hda8            5199        6657    11719386   83  Linux
/dev/hda9            6658        7751     8787523+  83  Linux
我们已经把kernel ntfs的模式安装好了,现在进入NTFS的分区的加载过程,通过上面的查看,我们知道/dev/hda1是NTFS格式的。
1]  我们要建一个挂载点的目录,比如是在/mnt/目录下建一个winc的目录:
[root@localhost beinan]# mkdir /mnt/winc
2]把/dev/hda1 挂载到 /mnt/winc中,这样我们如果查看/dev/hda1磁盘内容时,就会在/mnt/winc中找得到;
[root@localhost beinan]# mount -t ntfs -o nls=utf8,umask=000 /dev/hda1 /mnt/winc
注:-t ntfs 说明文件系统的格式是ntfs的。-o是选项 ,选项有什么呢?有nls=utf8 ,意思是Native Language Support(本地语言支持)是utf8,也就是大家常说的语言编码,Fedora core 4.0 默认的语言编码就是utf8的,这样能显示出中文来。umask=000表示所有的用户组都可读可写,但因为NTFS在Linux中写入不安全,所以只能读,不能写入;如果想写入,只能自己编内核来实现;但意义并不是太大;
是不是挂载好了呢?
[root@localhost beinan]# df -lh
Filesystem            容量  已用 可用 已用% 挂载点
/dev/hda8              11G  5.9G  4.5G  57% /
/dev/shm              236M     0  236M   0% /dev/shm
/dev/hda1             5.9G  3.2G  2.7G  55% /mnt/winc

看来是挂载好了;我们进入 /mnt/winc就知道是不是有内容了;
[root@localhost beinan]# cd /mnt/winc 
[root@localhost beinan]# ls 
3]如何开机自动加载NTFS文件系统的分区;
我们要根据磁盘的位置,上面我们看到了是/dev/hda1,对不对?所以我在/etc/fstab文件中找加如下的一行;
/dev/hda1               /mnt/winc               ntfs    umask=000,nls=utf8 0 0

4]如何将这个磁盘分区放在GNOME或者KDE的桌面上呢?
在KDE下,只需要点一下鼠标,在桌面的空白处按鼠标右键就可以找得到了,不多说了,太简单。
在GNOME下也是极简单的:
比如我是以beinan这个用户登入的系统,想在放在 beinan 这个用户的GNOME桌面上
[beinan@localhost ~]$ ln -s /mnt/winc/ ~beinan/Desktop/winc


2.3.2.2 FAT32文件系统的分区的加载

通过fdisk -l ,我们也知道了 /dev/hda2是FAT32格式的;
/dev/hda2             766        2805    16386300    c  W95 FAT32 (LBA)
Linux对FAT32的支持是可读可写的,所以没有必要再安装什么模块之类的;
1.我们要建一个挂载点的目录,比如是在/mnt/目录下建一个wind的目录:
[root@localhost beinan]# mkdir /mnt/wind
2.挂载 /dev/hda2 到/mnt/wind上
[root@localhost beinan]# mount -t vfat -o iocharset=utf8,umask=000 /dev/hda2 /mnt/wind/

看一下是不是挂载好了?
[root@localhost beinan]# df -lh
Filesystem            容量  已用 可用 已用% 挂载点
/dev/hda8              11G  5.9G  4.5G  57% /
/dev/shm              236M     0  236M   0% /dev/shm
/dev/hda1             5.9G  3.2G  2.7G  55% /mnt/winc
/dev/hda2              16G  8.1G  7.7G  52% /mnt/wind

看来是挂载好了,应该进去看看:
[root@localhost beinan]#cd /mnt/wind 
[root@localhost beinan]#ls -lh 
drwxrwxrwx   3 root root 8.0K  7月 27 11:45 抓图
drwxrwxrwx   2 root root 8.0K  8月 12 10:21 测试文件
drwxrwxrwx   4 root root 8.0K  7月 27 11:45 电脑硬件
drwxrwxrwx   5 root root 8.0K  7月 27 11:45 网际快车
中文支持没有问题

3.如何开机自动加载FAT文件系统的分区;
我们要根据磁盘的位置,上面我们看到了是/dev/hda1,对不对?所以我在/etc/fstab文件中找加如下的一行:
/dev/hda2               /mnt/wind               vfat    umask=000,nls=utf8


2.3.3 通过/etc/fstab文件来开机自动挂载文件系统

2.3.3.1 理解/etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
LABEL=/1               /                       ext3       defaults        1 1
/dev/devpts             /dev/pts                     devpts    gid=5,mode=620  0 0
/dev/shm                /dev/shm                    tmpfs     defaults        0 0
/dev/proc               /proc                          proc    defaults        0 0
/dev/sys                /sys                    sysfs   defaults        0 0
LABEL=SWAP-hda7         swap                    swap    defaults        0 0
/dev/hdc                /media/cdrecorder       auto    users,exec,noauto,managed 0 0
2.3.3.1.1 第一字段:设备名,即:文件系统所在的分区名。
       对于像proc等的文件系统,他们是没有实际的设备的,因此对与这样的文件系统来说该字段可能是none。
       在这个字段中也可以用分区标签,也称为卷标,以LABEL标识。通过卷标,可以快速的访问分区,不需要修改fstab文件就可以将卷标指向另外一个分区。
在例子中/LABEL=/1就是Fedora 系统安装分区的标签,至于是在哪个分区,可以用 df -lh 来查看:我们可以知道 LABEL=/1是/dev/hda8的标签。
[root@localhost beinan]# df -lh
Filesystem            容量  已用 可用 已用% 挂载点
/dev/hda8              11G  8.5G  1.9G  83% /
/dev/shm              236M     0  236M   0% /dev/shm
/dev/hda10             16G  6.9G  8.3G  46% /mnt/hda10
那我们用什么命令来创建硬盘分区的标签呢?对于ext3和ext2文件系统,我们可以用 e2label 来设置:e2label device [newlabel]。
比如我们想把文件系统为ext3 的分区/dev/hda5的标签设备为 /5 ,我们应该执行如下的命令:
[root@localhost beinan]# e2label /dev/hda5  /5   
[root@localhost beinan]# mkdir /mnt/hda5  注:创建挂载/dev/hda5分区的目录;
[root@localhost beinan]# chmod 777 /mnt/hda5  注:打开权限,所有用户可读可写可执行;
然后我们要改/etc/fstab 中加一行
/5         /mnt/hda5                    ext3     defaults        0 0
如果是reiserfs文件系统,我们应该用  reiserfstune -l 标签 设备 
2.3.3.1.2 第二字段:
文件系统的挂载点。注意:交换分区swap没有挂载点。
2.3.3.1.3 第三字段:文件系统类型。
2.3.3.1.4 第四字段:mount 命令的选项,和mount 中的-o 同理
defaults包括这些选项 rw, suid, dev, exec, auto, nouser, async。
2.3.3.1.5 第五字段:文件系统是否需要dump 备份,是真假关系:1是需要,0 是不需要。
2.3.3.1.6 第六字段: 是否在系统启动时,通过fsck磁盘检测工具来检查文件系统:1是需要,0是不需要,2是跳过。


2.3.3.2 通过/etc/fstab文件来快速挂载文件系统

       mount命令可以根据fstab文件快速加载文件系统,而不需要提供全部的文件系统信息。在命令中只需要提供设备名或者挂载点,mount命令将会查找fstab文件以获得挂载文件系统所需的其他全部信息。

       例如,挂载CD-ROM:mount  /mnt/cdrom。


2.4 与文件系统有关的常用命令

2.4.1 df命令:显示磁盘的文件系统与使用情况

       命令格式:df  [选项]

常用选项:
-a:包含全部的文件系统。
-h:以可读性较高的方式来显示信息。
-i:显示inode的信息。
-l:仅显示本地端的文件系统。
-t  文件系统类型>:仅显示指定文件系统类型的磁盘信息。
-x  文件系统类型>:不显示指定文件系统类型的磁盘信息。


2.4.2 mount命令:mount命令不带参数时,结果将列出当前已被挂在的所有文件系统。

2.4.3 dmesg命令:显示开机信息

命令格式:
dmesg [-cn][-s 缓冲区大小>]

补充说明:
kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。

参数:
-c :显示信息后,清除ring buffer中的内容。 
-s缓冲区大小> :预设置为8196,刚好等于ring buffer的大小。 
-n :设置记录信息的层级。 


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/59740/showart_472190.html

posted on 2013-11-15 11:20  各各他  阅读(365)  评论(0编辑  收藏  举报

导航