- 论坛徽章:
- 0
|
给硬盘分区
有许多产生和删除分区的程序。许多操作系统自带,最好使用其自带的,除非要做一些它不能作到的。许多这种程序叫fdisk , 包括Linux, 或其变种。 Linux fdisk 的使用细节可见其Man手册。 cfdisk 命令类似fdisk , 但有更好的用户界面(全屏的)。
使用IDE硬盘时,启动分区(带可启动核心映象文件的分区)必须全在前1024个柱面内。这是因为硬盘通过BIOS启动(在系统进入保护模式前),而BIOS不能处理多于1024柱面。有时也可能使用部分在前1024柱面的启动分区,这要求所有用BIOS读入的文件都在前1024柱面内。由于这难与安排,因此这是个很差的主意;你不可能知道什么时候核心升级或磁盘碎片整理会导致系统无法启动。因此,应该确认你的启动分区完全在前1024柱面内。
事实上,一些新版的BIOS和IDE硬盘可以处理多于1024柱面。如果你有这样一个系统,你可以忘却这个问题;如果你不能确认,还是把启动分区放在前1024柱面内。
每个分区拥有一块连续的扇区。因为Linux文件系统使用1 kB的块,即2个扇区,所以奇数个扇区会导致最后一个扇区不能使用,这不会有什么问题,但不好,有些版本的 fdisk 会对此给出警告。
改变分区大小一般要求首先备分此分区想保留的所有东西(为防万一,最好备分整个硬盘),然后删除此分区,产生新分区,最后回存所有东西到新分区。如果是扩大分区,你可能需要调整相邻分区的大小(并备分、回存)。
由于改变分区大小是如此痛苦,最好一次就确定。或拥有一个有效而易用的备分系统。如果你通过无须太多人工干预的介质安装(例如CDROM,而不是软盘),那么开始可以比较容易地玩玩各种设置。因为你无须备分什么数据,改几次分区大小不会太过痛苦。
有个MSDOS的程序叫fips , 可以无须备分和回存地改变MSDOS分区的大小, 但对其他文件系统,备分回存还是必须的。
设备文件和分区
每个分区和扩展分区有自己的设备文件。这些文件的命名规定是在整个盘的名字加分区号,并约定1-4是基本分区(不管真的有几个基本分区),5- 8是逻辑分区(不管它在哪个基本分区中)。例如,/dev/hda1 是第一个IDE硬盘的第一个基本分区,而/dev/sdb7 是第二个SCSI硬盘的第三个扩展分区。设备列表 [Anv]给出更详细的信息。
文件系统
什么是文件系统?
文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。因此,可以说"我有2个文件系统"意思是他有2个分区,一个存文件,或他用 "扩展文件系统",意思是文件系统的种类。
磁盘或分区和它所包括的文件系统的不同是很重要的。少数程序(包括最有理由的产生文件系统的程序)直接对磁盘或分区的原始扇区进行操作;这可能破坏一个存在的文件系统。大部分程序基于文件系统进行操作,在不同种文件系统上不能工作。
一个分区或磁盘能作为文件系统使用前,需要初始化,并将记录数据结构写到磁盘上。这个过程就叫建立文件系统。
大部分UNIX文件系统种类具有类似的通用结构,即使细节有些变化。其中心概念是超级块superblock, i节点inode, 数据块data block,目录块directory block, 和间接块indirection block。超级块包括文件系统的总体信息,比如大小(其准确信息依赖文件系统)。 i节点包括除了名字外的一个文件的所有信息,名字与i节点数目一起存在目录中,目录条目包括文件名和文件的i节点数目。 i节点包括几个数据块的数目,用于存储文件的数据。 i节点中只有少量数据块数的空间,如果需要更多,会动态分配指向数据块的指针空间。这些动态分配的块是间接块;为了找到数据块,这名字指出它必须先找到间接块的号码。
UNIX文件系统通常允许在文件中产生孔(hole) (用lseek ; 请看手册), 意思是文件系统假装文件中有一个特殊的位置只有0字节,但没有为这文件的这个位置保留实际的磁盘空间(这意味着这个文件将少用一些磁盘空间)。这对小的二进制文件经常发生,Linux共享库、一些数据库和其他一些特殊情况。 (孔由存储在间接块或i节点中的作为数据块地址的一个特殊值实现,这个特殊地址说明没有为文件的这个部分分配数据块,即,文件中有一个孔。)
孔有一定的用处。在笔者的系统中,一个简单的测量工具显示在200MB使用的磁盘空间中,由于孔,节约了大约4MB。在这个系统中,程序相对较少,没有数据库文件。有关这个测量工具的细节请看附录 A.
Filesystems galore
Linux支持多种文件系统。下面是最重要的几个:
minix
最老的,相信是最可靠的,但缺少特色(有些没有时间标记,文件名最长30个字符),能力有局限(每个文件系统最多64MB)。
xia
minix文件系统的一个修正版本,提升了文件名和文件系统大小的局限,但没有新的特色。不太流行,但据说工作得很好。
ext2
最好的Linux自己的文件系统,也是当前最通用的。其设计易于向上兼容,所以新版的文件系统代码无需重做已有的文件系统。
ext
ext2的老版,且不向上兼容。难于用新版安装程序安装,大部分人都改用ext2。
另外,支持多种其他现存的外围文件系统,很容易与其他外围文件系统交换文件。这些外围文件系统好象是自己的一样,除了可能缺少一些一般UNIX的特征,或有些不同的局限。
msdos
与MSDOS、OS/2等的FAT文件系统兼容。
umsdos
Linux下的扩展msdos文件系统驱动,支持长文件名、所有者、允许权限、连接和设备文件。允许一个普通的msdos文件系统用于Linux,而无须为Linux建立单独的分区。
iso9660
标准CDROM文件系统,通用的Rock Ridge增强,允许长文件名。
nfs
网络文件系统,允许多台计算机之间共享文件系统,易于从所有这些计算机上存取文件。
hpfs
OS/2文件系统。
sysv
SystemV/386, Coherent, 和Xenix文件系统。
根据情况选择文件系统。如兼容性或其他原因必需使用非Linux文件系统,那就必须用。如果可以自由选择,可能最明智的选择是ext2,因为它拥有全部特征而无须忍受性能缺陷。
还有proc文件系统, 一般在/proc 目录, 它不是一个真正的文件系统,虽然好象是。proc文件系统使用户易于存取全部核心数据结构,比如进程列表。它使这些数据结构看起来象个文件系统,且此文件系统可以用所有一般的文件工具操作。例如,要得到所有进程的列表,可以使用命令
$ ls -l /proc
total 0
dr-xr-xr-x 4 root root 0 Jan 31 20:37 1
dr-xr-xr-x 4 liw users 0 Jan 31 20:37 63
dr-xr-xr-x 4 liw users 0 Jan 31 20:37 94
dr-xr-xr-x 4 liw users 0 Jan 31 20:37 95
dr-xr-xr-x 4 root users 0 Jan 31 20:37 98
dr-xr-xr-x 4 liw users 0 Jan 31 20:37 99
-r--r--r-- 1 root root 0 Jan 31 20:37 devices
-r--r--r-- 1 root root 0 Jan 31 20:37 dma
-r--r--r-- 1 root root 0 Jan 31 20:37 filesystems
-r--r--r-- 1 root root 0 Jan 31 20:37 interrupts
-r-------- 1 root root 8654848 Jan 31 20:37 kcore
-r--r--r-- 1 root root 0 Jan 31 11:50 kmsg
-r--r--r-- 1 root root 0 Jan 31 20:37 ksyms
-r--r--r-- 1 root root 0 Jan 31 11:51 loadavg
-r--r--r-- 1 root root 0 Jan 31 20:37 meminfo
-r--r--r-- 1 root root 0 Jan 31 20:37 modules
dr-xr-xr-x 2 root root 0 Jan 31 20:37 net
dr-xr-xr-x 4 root root 0 Jan 31 20:37 self
-r--r--r-- 1 root root 0 Jan 31 20:37 stat
-r--r--r-- 1 root root 0 Jan 31 20:37 uptime
-r--r--r-- 1 root root 0 Jan 31 20:37 version
$
(可能有些文件与进程不符。上面的例子被简短了。)
注意虽然叫文件系统,proc文件系统没有一个部分与磁盘有关,它只在核心映象中存在。任何人任何时候想看proc文件系统的任何部分,核心使它看起来好象这部分在什么地方存在(虽然没有)。因此,虽然/proc/kcore 文件有好多兆字节,但它根本没用任何磁盘空间。
应该用哪个文件系统?
一般没有什么理由用许多不同的文件系统。当前,ext2fs是最流行的,可能是最明智的选择。根据记录结构、速度、(感觉的)可靠性、兼容性和其他不同的理由,适当地使用其他文件系统。个别情况需要个别决定。
建立文件系统
用mkfs 命令建立文件系统,即初始化。实际上,对每个不同种类的文件系统有一个单独的程序。 mkfs 只是为了建立不同文件系统种类确定运行不同程序的一个前端。用-t fstype选项选择种类。
被mkfs 调用的程序有不同的命令行接口。最通用和最重要的选项如下,细节请看手册。
-t fstype
选择文件系统种类。
-c
查找坏块,初始化坏块列表。
-l filename
从文件filename读入坏块列表。
用如下命令在软盘上产生ext2文件系统:
$ fdformat -n /dev/fd0H1440
Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
$ badblocks /dev/fd0H1440 1440 > bad-blocks
$ mkfs -t ext2 -l bad-blocks /dev/fd0H1440
mke2fs 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10
360 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1 block group
8192 blocks per group, 8192 fragments per group
360 inodes per group
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
$
首先,格式化软盘(-n选项不进行确认,即坏块检查)。然后用badblocks 查找坏块, 输出定向到文件bad-blocks。最后,产生文件系统,坏块列表由文件badblocks 初始化。
-c选项可以与mkfs 一起使用,而无须badblocks 和一个单独的文件。如下:
$ mkfs -t ext2 -c /dev/fd0H1440
mke2fs 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10
360 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1 block group
8192 blocks per group, 8192 fragments per group
360 inodes per group
Checking for bad blocks (read-only test): done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
$
使用-c比用单独使用badblocks 更方便, 但建立文件系统后检查,badblocks 是必要的。
在硬盘或分区上准备文件系统的过程和软盘是一样的,除了无须格式化。 |
|