Prayer

在一般中寻求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
本文对新增硬盘,切割硬盘,创建硬盘分区,为硬盘分区创建文件系统,以及加载文件系统的流程做总结性论述;主要是为初学者弄清楚这一操作过程;本文涉及fdisk、mkfs、mount ... ... 等工具;对/etc/fstab 进行了解说;还有磁盘扫描工具fsck 等介绍;

  如果您想加载一个分区(文件系统),首先您得确认文件系统的类型,然后才能挂载使用,比如通过mount 加载,或者通过修改 /etc/fstab来开机自动加载;

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

  本文总有一部份是您想要的;比如在新的分区上创建文件系统,如何挂载;如何卸载文件系统或者设备(比如cdrom )等;我建您最好通读本文,然后根据自己的需要再做选择性实践;

  Linux的一个小问题涉及的很多方面的知识,有时一篇文档是难以说清楚;我为了尽可能详细解说每一个过程,所以把分区工具、创建文件系统工具、查看文件系统的工具分开来说,主要是让初学者比较容易理解。希望您能理解本人的用心;传说北南长的比较丑,但心的还是善良的 ... ...我是不会用一些垃圾文档来害您 ... ... 哈哈 ... ... 言归正传,开文~~~~

  一、对存储设备的分区;

  我们这里所指的存储设备主要是本地硬盘、移动硬盘(比如USB 和1394接口的硬盘);由于磁盘很大并且为了满足我们各种需要,所以把硬盘分成若干个分区;比如我们可以用这个分区来安装Linux系统,那个分区用来安装Windows系统... ... ;这点小事大家都明白;

  至于如何在 Linux中进行硬盘分区操作,我们推荐您用 fdisk ,目前看来也是最好用的分区工具;其它工具比如parted 和cfdisk在某一方面有点优点,但这些优点可能为大家带来一些方便 ,比如 parted中的数据备份功能,这个功能对老手来说可能是优点,但对新手来说,的确是有风险的;所以我们还是推荐您用 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 来查看;

  比如我想格式化一个移动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

为什么我的系统有两个交换分区?因为我用移动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,可以通过这种办法来添加;

  四、对文件系统进行扫描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 reiserfs-list@namesys.com, **

  ** 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 ,这也是需要补充的;


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理