Linux 創建文件系統及掛載文件系統流程詳解

轉自:http://www.linuxsir.org/main/?q=node/83

 

作者:北南南北
來自: LinuxSir.Org
摘要:本文對新增硬盤,切割硬盤,創建硬盤分區,爲硬盤分區創建文件系統,以及加載文件系統的流程做總結性論述;主要是爲初學者弄清楚這一操作過程;本文 涉及fdisk、mkfs、mount ... ... 等工具;對/etc/fstab 進行了解說;還有磁盤掃描工具fsck 等介紹;
++++++++++++++++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++++++++++++++++

閱讀此文,必須具備知識點:
《Linux 查看磁盤分區、文件系統、使用情況的命令和相關工具介紹》
《實例解說 fdisk 使用方法》
《合理規劃您的硬盤分區》
《Fedora / Redhat 軟件包管理指南》 如果您想加載一個分區(文件系統),首先您得確認文件系統的類型,然後才能掛載使用,比如通過mount 加載,或者通過修改 /etc/fstab來開機自動加載;
如 果您想添加一個新的分區,或者增加一個新的硬盤,您要通過分區工具來添加分區,然後要創建分區的文件系統,然後纔是掛載文件系統;比如通過mount 加載,或者通過修改 /etc/fstab來開機自動加載; 本文總有一部份是您想要的;比如在新的分區上創建文件系統,如何掛載;如何卸載文件系統或者設備(比如cdrom )等;我建您最好通讀本文,然後根據自己的需要再做選擇性實踐; Linux的一個小問題涉及的很多方面的知識,有時一篇文檔是難以說清楚;我爲了儘可能詳細解說每一個過程,所以把分區工具、創建文件系統工具、查看文件 系統的工具分開來說,主要是讓初學者比較容易理解。希望您能理解本人的用心;傳說北南長的比較醜,但心的還是善良的 ... ...我是不會用一些垃圾文檔來害您 ... ... 哈哈 ... ... 言歸正傳,開文~~~~
一、對存儲設備的分區;
我們這裏所指的存儲設備主要是本地硬盤、移動硬盤(比如USB 和1394接口的硬盤);由於磁盤很大並且爲了滿足我們各種需要,所以把硬盤分成若干個分區;比如我們可以用這個分區來安裝Linux系統,那個分區用來 安裝Windows系統... ... ;這點小事大家都明白; 至於如何在 Linux中進行硬盤分區操作,我們推薦您用 fdisk ,目前看來也是最好用的分區工具;其它工具比如parted 和cfdisk在某一方面有點優點,但這些優點可能爲大家帶來一些方便 ,比如 parted中的數據備份功能,這個功能對老手來說可能是優點,但對新手來說,的確是有風險的;所以我們還是推薦您用 fdisk 分區工具; fdisk 的使用說明: 請參考:《實例解說 fdisk 使用方法》
二、存儲設備進行格式化,即建立文件系統的過程;

1、文件系統的一點介紹
我們對存儲設備分區還是遠遠不夠的,我們還要對這些新增分區進行格式化;一個分區只有建立了某種文件系統後,這個分區才能使用;建立文件系統過程,就是用 相應格式化工具格式化分區的過程,這個過程和我們在Windows中格式化某個分區爲NTFS分區類似;沒有什麼高深的內容,只是所用的工具不一樣罷了; 在Linux操作系統中,目前幾乎支持目前主流的文件系統,比如NTFS(只讀)、FAT(可讀可寫)、ext2、ext3、reiserfs、hfs (MAC 操作系統的文件系統)、swap 交換分區... ... 還有一些咱們不熟悉的操作系統的文件系統等; 在Linux中,我們常用的文件系統無非是上面例出的這些;如果您新增了一個硬盤,可能想格式化成 Linux的文件系統,最佳選擇是 reiserfs 或ext3;目前ext2已被 ext3取代;我們不推薦用ext2文件系統,ext2的使用風險比較大;速度最快的文件系統,當屬reiserfs;reiserfs 還有很多優點,比如更安全;ext3是Redhat認爲最好的文件系統,所以在Fedora 4.0在安裝時,特地爲reiserfs 的選擇弄出點麻煩; 相對來說reiserfs還是比ext3要優秀;如果想深入學習文件系統的,您可以到官方論壇找相應的資料,最好是實踐實踐;

2、格式化工具介紹和使用;
以fedora 4.0爲例,我們常用的工具mkfs mkfs.ext3 mkfs.reiserfs mkfs.ext2 mkfs.msdos mkfs.vfat mkswap 提示:如果您不能創建reiserfs 文件系統,也就是說沒有mkfs.reiserfs 或者mkreiserfs 命令,是您沒有安裝reiserfs-utils工具包,請參考:《讓Fedora 支持創建reiserfs 文件系統,以及創建reiserfs文件系統的一點說明》
1)mkfs的使用;
使用方法:

[root@localhost beinan]# mkfs -t 文件系統  存儲設備




注:
這裏的文件系統是要指定的,比如 ext3 ;reiserfs ;ext2 ;fat32 ;msdos 等... ...
設備比如是一個硬盤的分區,軟盤,光驅等.. ... 在格式化分區之前,您得懂得如何查看硬盤分區情況,並有針對性的格式化;比如用 fdisk -l 來查看; 請參考:《Linux 查看磁盤分區、文件系統、使用情況的命令和相關工具介紹》 比如我想格式化一個移動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)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)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
<code>

爲什麼我的系統有兩個交換分區?因爲我用移動U盤做的實驗,主要是爲寫教程之用;sda6是我在U盤上建的swap分區;

如果讓swap開機就加載,應該改 /etc/fstab文件,加類似如下一行;

<code>
/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,可以通過這種辦法來添加;
三、掛載文件系統;
掛載文件系統,目前有兩種方法,一是通過 mount 來掛載,另一種方法是通過/etc/fstab文件來開機自動掛載;
1、通過mount 來掛載磁盤分區(或存儲設備)
mount的用法其實也簡單,我們說幾個常用的;

掛載文件系統的命令格式:

[root@localhost beinan]# mount  [-t  文件系統 ]  [-o  選項]  設備  目錄

注: -t 通過這個參數,我們來指定文件系統的類型,一般的情況下不必指定有時也能識加,-t 後面跟 ext3 、ext2 、reiserfs、vfat 、ntfs 等,其中 vfat 是fat32和fat16分區文件系統所所用的參數;如果您忘記了文件系統,也可以在-t 後面加auto ; -o 這個選項,主要選項有權限、用戶、磁盤限額、語言編碼等,但語言編碼的選項,大多用於vfat和ntfs文件系統;由於選項太多,還是請您看看 man mount ;這裏不多說; 設備 指存儲設備,比如/dev/hda1, /dev/sda1 ,cdrom 等...至於您的系統中有哪些存儲設備,主要通過 fdisk -l 或者查看 /etc/fstab 或 dmesg ;一般的情況下光驅設備是/dev/cdrom ;軟驅設備是/dev/fd0 ;硬盤及移動硬盤以 fdisk -l 的輸出爲準;
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)掛載硬盤和移動硬盤的文件系統;
一個分區只有創建了文件系統後才能使用,前面我們說過了,我們在Linux大多用的是ext2 、ext3、reiserfs、fat32、msdos 、ntfs等;

[1]掛載Linux文件系統;
對於ext2 、ext3 、reiserfs 不需要指定文件系統的編碼,其實mount 也沒有這個功能;這些Linux文件系統,如果出現編碼問題,一般是通過export LANG來指定;所以掛載這些文件系統比較簡單; 首先我們得建一個文件系統掛載的目錄;我們前面已經提到了;一個有文件系統的分區要掛到系統中,必須要有一個掛載點;這個掛載點就是一個目錄;比如我們通過fdisk -l 得知hda5 是Linux分區,並且創建了文件系統,比如是reiserfs 文件系統吧;

[root@localhost beinan]# fdisk -l /dev/hda

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]掛載Windows文件系統;
請參考: 《在Fedora core 4.0 加載NTFS和FAT32分區詳述》
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、通過/etc/fstab文件來開機自動掛載文件系統


1)理解fstab
上面我們說了mount掛載存儲設備文件系統的辦法;現在我們再來說一說在/etc/fstab 中實現開機自動掛載文件系統的辦法;首先我們要查看 /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

第一字段:設備名,在這裏表示是文件系統; 有時我們把掛載文件系統也說成掛載分區; 在這個字段中也可以用分區標籤;在例子中/LABEL=/1就是Fedora 系統安裝分區的標籤,至於是在哪個分區,可以用 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

我們可以知道 LABEL=/1是/dev/hda8的標籤;那我們用什麼命令來創建硬盤分區的標籤呢? 對於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

警告: 請不要在您的Linux的安裝分區(也就是Linux系統/ 所在的分區)實踐,會導致您的Linux系統崩潰;如果想實踐,請在其它分區測試; 如果是reiserfs文件系統,我們應該用 [root@localhost beinan]# reiserfstune -l 標籤 設備 舉例:比如我爲reiserfs 文件系統 /dev/hda10設置標籤爲 /10 ;

[root@localhost beinan]# reiserfstune -l /10 /dev/hda10

我們在/etc/fstab中加入一行;

/10              /mnt/hda10              reiserfs defaults       0 0


警告: 請不要在您的Linux的安裝分區(也就是Linux系統/ 所在的分區)實踐,會導致您的Linux系統崩潰;如果想實踐,請在其它分區測試; 第二字段:文件系統的掛載點;
第三字段:文件系統類型;
第 四字段:mount 命令的選項,和mount 中的-o 同理;defaults包括這些選項 rw, suid, dev, exec, auto, nouser, async;通過實踐,這個默認的還能滿足我們的需要;至於這些選項的意思,請參看man mount ; 第五字段:表示文件系統是否需要dump 備份,是真假關係;1是需要,0 是不需要;
第六字段: 是否在系統啓動時,通過fsck磁盤檢測工具來檢查文件系統,1是需要,0是不需要,2是跳過; 基於這些認識;比如我們要開機自動掛載/dev/hda5 ;我們可以如下做;

[root@localhost beinan]# mkdir /mnt/hda5/   注:先創建一個掛載目錄;
[root@localhost beinan]# chmod 777  /mnt/hda5/    注:設置/mnt/hda5的權限爲任何用戶可寫可讀可執行;這樣所有的用戶都能在寫入;

然後我們在/etc/fstab 中加如下的一行;

/dev/hda5              /mnt/hda5             reiserfs defaults       0 0

這樣重啓機器就能看到效果了;
四、對文件系統進行掃描fsck;
大家對Windows中的scandisk不寞生吧,在Linux中就有類似這樣的工具fsck,不過fsck 可不僅僅是掃描,還能修正文件系統的一些問題。值得注意的是fsck 掃描文件系統時一定要在單用戶模式、修復模式或把設備umount後進行。 警告:如果掃描正在運行中的系統,會造成系統文件損壞;如果您的系統是正常,請不要用掃描工具,她可能會把您的系統搞壞掉,fsck運行是有危險的; 以Fedora 爲例,文件系統掃描工具有 fsck fsck.ext2 fsck.jfs fsck.msdos fsck.vfat fsck.ext3 fsck.reiserfs(reiserfsck) 其中fsck 默認支持文件系統ext2,如果想支持ext3文件系統的掃描,應該加-j 參數,最好是我們應該根據不同的文件系統來調用不同的掃描工具,比如 fsck.ext2,fsck.jfs,fsck.msdos,fsck.ext3,fsck.reiserfs(reiserfsck)等。我們也可以 根據自己的文件系統選擇不同的掃描工具; 舉例:掃描/dev/hda10分區(基於reiserfs文件系統 );

[root@localhost beinan]# fsck.reiserfs /dev/hda10
reiserfsck 3.6.19 (2003 www.namesys.com)

*************************************************************
** If you are using the latest reiserfsprogs and  it fails **
** please  email bug reports to [email protected], **
** providing  as  much  information  as  possible --  your **
** hardware,  kernel,  patches,  settings,  all reiserfsck **
** messages  (including version),  the reiserfsck logfile, **
** check  the  syslog file  for  any  related information. **
** If you would like advice on using this program, support **
** is available  for $25 at  www.namesys.com/support.html. **
*************************************************************

Will read-only check consistency of the filesystem on /dev/hda10
Will put log info to 'stdout'

Do you want to run this program?[N/Yes] (note need to type Yes if you do):Yes
###########
reiserfsck --check started at Wed Sep 14 08:54:17 2005
###########
Replaying journal..
Reiserfs journal '/dev/hda10' in blocks [18..8211]: 0 transactions replayed
Checking internal tree..finished
Comparing bitmaps..finished
Checking Semantic tree:
finished
No corruptions found   注:沒有發現錯誤;
There are on the filesystem:
        Leaves 2046
        Internal nodes 15
        Directories 130
        Other files 2305
        Data block pointers 1863657 (70565 of them are zero)
        Safe links 0
###########
reiserfsck finished at Wed Sep 14 08:54:33 2005
###########

對於fsck.ext2和fsck.ext3常用的幾個選項:

-p         Automatic repair (no questions) 注:自動修復文件系統存在的問題;
-y         Assume "yes" to all questions   注:如果文件系統有問題,會跳出提示是否修復,如果修復請按y;
-c         Check for bad blocks and add them to the badblock list 注:對文件系統進行壞塊檢查;這是一個極爲漫長的過程;
-n         Make no changes to the filesystem   注:不對文件系統做任何改變,只要掃描,以檢測是否有問題;

舉例:比如 /dev/hda6 (文件系統是ext3的),我想掃描並自動修復;

[root@localhost beinan]# fsck.ext3  -p /dev/hda6

注意: 針對不同文件系統,最好用相應的工具;雖然有時fsck 在不加參數的情況下能識別不同的文件系統; 對於不同工具的最爲詳細的參數,請參看--help或者man ,謝謝。。
後記: 創建文件系統和加載文件系統就算寫的差不多了;再高深的可能也不是我所能寫的。爲了寫文件系統系統的掛載,我已經寫過幾篇文檔。可能還得需補充幾篇短小文檔,以及還有一個總結性的文檔; 比如Fedora Core 4.0 默認安裝不支持創建reiserfs 文件系統,解決辦法是安裝reiserfs-utils ,這也是需要補充的;
附錄: 《Linux 查看磁盤分區、文件系統、使用情況的命令和相關工具介紹》
《實例解說 fdisk 使用方法》
《在Fedora core 4.0 加載NTFS和FAT32分區詳述》
《合理規劃您的硬盤分區》
《系統引導過程及硬盤分區結構論述》
《Fedora Core 4.0 HAL配置即插即用移動存儲(USB及1394)的實踐》

發佈了12 篇原創文章 · 獲贊 3 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章