3 Linux管理员手册--存贮介质( 四 )


IDE硬盘和一些SCSI硬盘实际上厂商已经做了格式化,并无须重复;因为多数人无须关心它 。实际上,格式化硬盘可能反而不好,比如因为硬盘可能需要用特定的方法格式化使坏扇区被自动替换 。
磁盘经常需要特定的程序来格式化,因为驱动器的格式化逻辑的接口每个驱动器都不一样 。格式化程序经常在控制器BIOS上,或用MSDOS程序提供,这都不太容易在Linux中使用 。
格式化中可能会发现磁盘的坏点,叫坏块bad blocks or bad sectors 。这有时由驱动器自己处理 。但有时,如果坏块太多,需要一些工作来避免使用磁盘的这部分 。The logic to do this is built into the filesystem; 下面将说明如何增加这些信息到文件系统 。另外,产生一个只覆盖这些坏的部分的小分区也是一个办法 。如果坏区较大,这可能是个好办法,因为文件系统有时难以处理大量的坏区 。
软盘格式化使用fdformat。软盘设备使用给定的参数,例如下面的命令在第一个软驱中格式化一张高密度3.5"软盘:
$ fdformat /dev/fd0H1440
Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
Verifying ... done
$
注意,如果想使用自动检测设备(如/dev/fd0 ),必须用先setfdprm 设定参数 。要得到与上面一样的结果,可以这样:
$ setfdprm /dev/fd0 1440/1440
$ fdformat /dev/fd0
Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
Verifying ... done
$
选择与软盘类型相符的正确的设备文件通常更方便 。注意,比软盘设计格式化更多的信息容量是没有意义的 。
fdformat 也将验证软盘,例如检查坏块 。它在坏块试验几次(你通常能听到,驱动器的噪声很明显) 。If the floppy is only marginally bad (due to dirt on the read/write head, some errors are false signals), fdformat 可能没事,而真正的错误可能退出有效过程 。核心把发现的每个I/O错误打印log信息,送到控制台,或者,如果使用了syslog ,也送到/usr/adm/messages 文件 。fdformat 自己不说明哪里出错(也不必考虑,软盘很便宜,坏了就扔) 。
$ fdformat /dev/fd0H1440
Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
Verifying ... read: Unknown error
$
badblocks 命令可用于查找任何磁盘或分区的坏块(包括软盘) 。它不格式化磁盘,因此可以用于检查存在的文件系统 。下面的例子检查出一张3.5"软盘上的2个坏块:
$ badblocks /dev/fd0H1440 1440
718
719
$
badblocks 输出发现的坏块的块号 。多数文件系统可以避免这样的坏块 。他们维护一个已知的坏块列表,在文件系统建立时初始化,并可以在以后修改 。初始的坏块查找可由mkfs 命令完成(它初始化文件系统),以后可以用badblocks 来检查,新的块可以用fsck 加入 。后面我们将说明mkfs 和fsck。
许多新型的硬盘自动发现坏块,并企图用一个特定的、保护的好块来代替它 。这对操作系统是不可见的 。这种特征应该在硬盘手册的文档中,如果你好奇的话 。但即使这样的硬盘也可能失败,如果坏块数量太大的话,虽然如果这样,那硬盘就基本上不能用了 。
分区
一个硬盘可分为几个分区 。每个分区好象是单独的硬盘 。这样,你如果只有一个硬盘,却想安装2个操作系统,你可以把这个硬盘分为2个分区 。每个操作系统任意使用自己的分区而不干扰另一个 。这种方法,2个操作系统可以在同一硬盘上和平共处 。如果没有分区,你只能为每个操作系统购买一个硬盘 。
软盘不分区 。这没有技术原因,只因为太小,没有必要 。CDROM一般也不分区,因为作为一个大盘更易于使用,而且很少有多操作系统的需要 。

推荐阅读