文件系统
什么是文件系统?
文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构 即在磁盘上组织
文件的方法 也指用于存储文件的磁盘或分区 或文件系统种类 因此 可以说"我有 2 个
文件系统"意思是他有 2 个分区 一个存文件 或他用 "扩展文件系统" 意思是文件系统的
种类
磁盘或分区和它所包括的文件系统的不同是很重要的 少数程序(包括最有理由的产生
文件系统的程序)直接对磁盘或分区的原始扇区进行操作 这可能破坏一个存在的文件系统
大部分程序基于文件系统进行操作 在不同种文件系统上不能工作
一个分区或磁盘能作为文件系统使用前 需要初始化 并将记录数据结构写到磁盘上
这个过程就叫建立文件系统
大部分 UNIX 文件系统种类具有类似的通用结构 即使细节有些变化 其中心概念是超
级块 superblock, i 节点 inode, 数据块 data block,目录块 directory block, 和间接块 indire
ction block 超级块包括文件系统的总体信息 比如大小(其准确信息依赖文件系统) i 节
点包括除了名字外的一个文件的所有信息 名字与 i 节点数目一起存在目录中 目录条目包
括文件名和文件的 i 节点数目 i 节点包括几个数据块的数目 用于存储文件的数据 i 节
点中只有少量数据块数的空间 如果需要更多 会动态分配指向数据块的指针空间 这些动
态分配的块是间接块 为了找到数据块 这名字指出它必须先找到间接块的号码
20 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
21 网络文件系统 允许多台计算机之间共享文件系统 易于从所有这些计算机上存取文件
hpfs
OS/2 文件系统
sysv
SystemV/386, Coherent, 和 Xenix 文件系统
根据情况选择文件系统 如兼容性或其他原因必需使用非 Linux 文件系统 那就必须用
如果可以自由选择 可能最明智的选择是 ext2 因为它拥有全部特征而无须忍受性能缺陷
还有 proc 文件系统, 一般在/proc 目录, 它不是一个真正的文件系统 虽然好象是 pr
oc 文件系统使用户易于存取全部核心数据结构 比如进程列表 它使这些数据结构看起来
象个文件系统 且此文件系统可以用所有一般的文件工具操作 例如 要得到所有进程的列
表 可以使用命令
$ 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 文件系统没有一个部分与磁盘有关 它只在核心映象中存
22 在 任何人任何时候想看 proc 文件系统的任何部分,核心使它看起来好象这部分在什么地方
存在(虽然没有) 因此 虽然/proc/kcore 文件有好多兆字节 但它根本没用任何磁盘空间
应该用哪个文件系统?
一般没有什么理由用许多不同的文件系统 当前 ext2fs 是最流行的 可能是最明智的
选择 根据记录结构 速度 (感觉的)可靠性 兼容性和其他不同的理由 适当地使用其他
文件系统 个别情况需要个别决定
建立文件系统
用 mkfs 命令建立文件系统 即初始化 实际上 对每个不同种类的文件系统有一个单
独的程序 mkfs 只是为了建立不同文件系统种类确定运行不同程序的一个前端 用-t fst
ype 选项选择种类
被 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
23 $
首先 格式化软盘(-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 是必要
的
在硬盘或分区上准备文件系统的过程和软盘是一样的 除了无须格式化
Mount 和 unmount
一个文件系统可以使用之前 必须 mount 操作系统然后做一些记录以确认正常 因为
UNIX 所有的文件在一个目录树中 mount 操作的结果使新的文件系统的内容好象在某个
已经 mount 的文件系统的一个已经存在的子目录中
上面的 mount 可能使用如下命令
$ mount /dev/hda2 /home
$ mount /dev/hda3 /usr
$
mount 命令使用 2 个参数 第一个是与包括文件系统的磁盘或分区相关的设备文件
第二个是要 mount 到的目录 mount 以后 这 2 个文件系统的内容好象是/home 和/usr
目录 这样就可以说 /dev/hda2 被 mount 到 /home , /usr 也同样 要看每个文件系统
就看其被安装的目录 好象它就是在那里 注意设备文件的区别 /dev/hda2 , 和安装到的
目录/home 设备文件给出硬盘原始内容的存取 安装到的目录给出磁盘上文件的存取
安装到的目录叫安装点
Linux 支持许多文件系统 mount 会试着猜测文件系统种类 也可以使用-t fstype 选
项直接定义种类 这有时是必要的 因为自检测 mount 并非总能成功 例如要 mount 一个
24 MSDOS 软盘 可以用如下命令
$ mount -t msdos /dev/fd0 /floppy
$
安装点目录不必是空的 但必须存在 其中的所有文件当文件系统 mount 后将不可用
名字存取(已经打开的文件将继续可存取 有其他目录硬连接的文件可以通过那些名字存
取) 这没有坏处 反而可能更有用 例如 有人喜欢将/tmp 和/var/tmp 作为同义 将/tmp
作为/var/tmp 的符号连接 系统启动时 在/usr 文件系统被 mount 之前 使用驻留在根
文件系统的 /var/tmp 目录 当/usr 被 mount 上以后 根文件系统上的/var/tmp 将不可用
如果根文件系统上不存在 /var/tmp 那么在 mount 上/var 之前将不可能使用暂存文件
如果不打算在一个文件系统上写任何东西 可以使用 mount 的-r 开关做一个只读 mou
nt 这将使核心停止任何对此文件系统的写要求 也将停止核心的对 i 节点的文件存取时间
的更新 只读 mount 对不可写介质是必要的 例如 CDROM
细心的读者可能已经注意到一个小的逻辑问题 第一个文件系统(叫根文件系统 因为
它包含根目录)如何 mount 因为很明显 它不能 mount 到另一个文件系统? Well, the an
swer is that it is done by magic. The root filesystem is magically mounted at boot
time, and one can rely on it to always be mounted-- 如果根文件系统不能 mount 系
统将不能启动 The name of the filesystem that is magically mounted as root 被编
译进核心 或用 LILO 或 rdev 设置
根文件系统通常先被只读 mount 然后启动手稿运行 fsck 校验它的有效性 如果没有
问题 将 re-mount 它 使之可写 fsck 不能运行于一个已 mount 的文件系统 因为 fsck
运行时 任何文件系统的改变将导致错误 因为根文件系统在被检查时是只读 fsck 可以
无虑地修复任何问题 因为 re-mount 操作将刷新文件系统在内存中的所有数据
在有其他文件系统的许多系统中 启动时要自动 mount 可以在/etc/fstab 文件中定义
文件格式细节请参考 fstab 的手册页 mount 特别的文件系统的特别细节依赖于许多因素
可以根据需要由每个管理员设置 When the chapter on booting is finished, you may
read all about it there.
当一个文件系统不需要再 mount 着 可以用 umount . umount 加一个参数 unmount
它 参数可以是设备文件或安装点 例如 要 unmount 上面例子中的目录 可以用
$ umount /dev/hda2
$ umount /usr
$
要了解使用这个命令的更多的说明 参阅手册 注意 记住 unmount 已经 mount 的软
盘 而不能仅仅将软盘弹出软驱!由于磁盘缓冲 在你 unmount 软盘之前无须回写 因此
过早取出软盘将导致内容不正确 只从软盘上读还不要紧 如果写 就可能发生灾难性的损
失
25 mount 和 umount 需要超级拥护特权 即只有 root 用户可以做 原因是 如果任何用
户都可以 mount 软盘到任何目录 那么很容易用软盘做 比如 用特洛伊木马替换/bin/sh ,
或者其他常用的程序 但是允许用户使用软盘经常又是必要的 有几种方法
给用户 root 口令 很明显这对安全不利 但是最简单的方法 如果没有安全要求 这
个方法很好 比如在非网络的 个人系统上
使用一个程序比如 sudo 允许拥护使用 mount 这同样对安全不利 但没有直接给任何
人超级用户特权
让用户使用 mtools , 这是一个利用 MSDOS 文件系统的软件包 无须 mount 如果是
MSDOS 软盘这样做很好 否则不好
在/etc/fstab 中用合适的选项列出软驱设备和允许的安装点
最后一个选择可以在/etc/fstab 文件中加类似下面的一行来完成
/dev/fd0 /floppy msdos user,noauto 0 0
各列分别是 要 mount 的设备文件 要安装到的目录 文件系统类型 选项 备份频
率(用于 dump ) 和 fsck 次序(定义启动时文件系统被检查的次序 0 表示不检查)
noauto 选项使系统启动是不自动 mount(即, it stops mount -a from mounting it) user
允许任何用户 mount 这个文件系统 并且 由于安全原因 不允许执行程序(normal or se
tuid) and interpretation of device files from the mounted filesystem 这样 任何用户
都可以用如下命令 mount 一个 msdos 文件系统的软盘
$ mount /floppy
$
软盘可以用相关的 umount 被 unmount
如果想提供多种软盘的存取 需要给出多个安装点 对每个安装点的设置可以不同 例
如 提供 MSDOS 和 ext2 文件系统的存取 可以在/etc/fstab 文件中加如下行:
/dev/fd0 /dosfloppy msdos user,noauto 0 0
/dev/fd0 /ext2floppy ext2 user,noauto 0 0
对于 MSDOS 文件系统(不仅是软盘) 可能需要用 uid, gid,和 umask 文件系统选项来
限制存取权限 请看 mount 手册页 如果不小心 mount 一个 MS-DOS 文件系统将给予
任何用户至少是读权限 这可不是一个好主意
用 fsck 检查文件系统完整性
26 文件系统很复杂 因此易于发生错误 可以用 fsck 命令检查文件系统是否正确和有效
它可以根据指令修复找到的小错误 并将未修复错误报告用户 幸运的是 文件系统的代码
非常有效 所以根本极少出现问题 并且问题通常原因是电源失败 硬件失败 或操作错误
例如没有正常关闭系统
大多数系统设置为启动时自动运行 fsck 因此任何错误将在系统使用前被检测到(并根
据希望修正) 使用有错误的文件系统可能使问题变得更坏 如果数据结构有问题 使用这
个文件系统可能使之更糟 导致更多的数据丢失 当然 在大的文件系统上运行 fsck 会花
一定的时间 如果系统正常关闭 几乎从不发生错误 因此有一些方法可以不进行检查 如
果文件/etc/fastboot 存在 就不检查 另外 如果 ext2 文件系统在超级快中有一个特定的
标记告知该文件系统在上次 mount 后没有正常 unmount. 如果标记指出 unmount 正常完成
(假设正常 unmount 指出没问题) e2fsck (fsck 的 ext2 文件系统版) 就不检查系统 /etc/f
astboot 是否影响系统依赖于你的启动手稿 但 ext2 标记则在你使用 e2fsck 时发生作用--
基于一个 e2fsck 选项(参阅 e2fsck 手册页)
自动检查只对启动时自动 mount 的文件系统发生作用 使用 fsck 手工检查其他文件系
统 比如软盘
如果 fsck 发现为修复的问题 你需要深入了解文件系统的一般工作原理和有问题的文
件系统的细节 或好的备份 最后一个办法容易(虽然冗长)安排 如果你自己不知道 有时
可以通过朋友 Linux 新闻组 电子邮件列表或其他支持源安排 我很想告诉你更多 但我
对这的学习和实践也并不多 Theodore T'so 的 debugfs 程序应该有用
fsck 只能运行于未 mount 的文件系统 不要用于已 mount 的文件系统(除了启动时的
只读根文件系统) 这是因为它存取原始磁盘 在操作系统不知道的情况下修改文件系统
There will be trouble, if the operating system is confused.
用 badblocks 检查磁盘错误
应该周期性地用 badblocks 命令检查坏块它输出找到的所有坏块的编号的列表 列表
给 fsck 记录在文件系统数据结构中 使操作系统存储数据时不使用这些坏块 举例
$ badblocks /dev/fd0H1440 1440 > bad-blocks
$ fsck -t ext2 -l bad-blocks /dev/fd0H1440
Parallelizing fsck version 0.5a (5-Apr-94)
e2fsck 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Check reference counts.
Pass 5: Checking group summary information.
/dev/fd0H1440: ***** FILE SYSTEM WAS MODIFIED *****
27 /dev/fd0H1440: 11/360 files, 63/1440 blocks
$
如果 badblocks 报告一个块已经使用 e2fsck 将试着将此块移到其他地方 如果该块
真的坏了 而不是在坏块边缘 文件内容可能丢失
Fighting fragmentation
文件写到磁盘时 不一定在连续的块中 没在连续块中的文件叫碎片 因为磁盘的读写
头回更多地移动 读碎片文件会花较长的时间 虽然如果有好的读前缓冲系统不会有什么问
题 但最好还是避免碎片
Ext2 文件系统试图使碎片最少 即使不能将一个文件的所有块存在连续扇区中 也尽
量靠近 Ext2 通常有效地安排里文件其他块最近的空闲块 因此很少需要关心碎片问题
Ext2 文件系统有一个消除碎片程序 请看参考书目中的 [TV]
有许多 MSDOS 消碎片程序在文件系统中移动块以消除碎片 其他一些文件系统 消
碎片必须通过备份-重产生-回存文件系统来完成 对于所有文件系统 消碎片应该备份文件
系统 因为很多原因可能在消碎片过程中导致错误
对所有文件系统的其他工具
一些其他工具对管理文件系统有用 df (Disk Free)显示一个或多个文件系统的空闲磁
盘空间 du (Disk Usage)显示一个目录和其内的所有文件使用了多少磁盘空间 这用于
发现磁盘空间浪费
sync 强制将磁盘缓冲的所有未写块写入磁盘(见 5.6) 这一般无须手工完成 由守护
进程 update 自动完成 这在有些情况下很有用 例如 如果 update 或其辅助进程 bdflus
h 死了 或你不能等运行 update 必须马上 关闭电源
对 ext2 文件系统的其他工具
除了产生文件系统的 mke2fs 和检查文件系统的 e2fsck 直接或通过与文件系统类型无
关的前端存取外 Ext2 文件系统还有几个有用的工具
tune2fs 调整文件系统参数 一些有趣的参数有
最大 mount 数 当文件系统被 mount 过多少次以后 即使标志是干净的 e2fsck 强制
检查 对用于开发或测试的系统 应该降低这个限制数
最大检查间隔 到达这个间隔时间 即使标志是干净的 e2fsck 强制检查 如果文件
系统不是经常 mount 可以不使能这个功能
保留给 root 的块数 Ext2 给 root 保留一些块 这样如果文件系统满了 还可能无须删
除任何东西做系统管理 保留量确省是 5% 这在大多数磁盘上不会造成浪费 当然 软盘
28 没有理由保留块
参阅 tune2fs 手册页
dumpe2fs 显示一个 ext2 文件系统的信息 大部分来源于超级块 有些输出信息是技
术性的 要求对文件系统工作的理解(见附录 ), 但许多即使是一般管理员是也易于理解的
debugfs 是一个文件系统调试器 它允许直接存取磁盘上的文件系统数据结构 可用
于修复 fsck 不能自动修复的磁盘 它也可用于恢复被删除的文件 但是 debugfs 非常要
求你理解你所干的事 错误的理解和操作将破坏你的所有数据
dump 和 restore 可用于备份一个 ext2 文件系统 它们是传统 UNIX 备份工具的 ext2
版 关于更有关备份的信息见 9 章
没有文件系统的磁盘
并非所有磁盘或分区都作为文件系统使用 例如对换分区 就没有文件系统 许多软盘
作为磁带仿真使用 所以 tar 或其他文件可以直接写到原始磁盘 而不是文件系统 Linux
启动软盘不包括文件系统 只是原始核心
不用文件系统的优点是有更多的磁盘可用空间 因为文件系统需要一些记录 也更容易
与其他系统兼容 例如 tar 文件格式在所有系统上相同 而文件系统则在大多数系统上不同
如果需要 你会很快使用没有文件系统的磁盘 可启动的 Linux 软盘无需文件系统 虽然
有也可能
使用原始磁盘的一个原因是做映象拷贝 比如 如果磁盘包含部分损坏的文件系统 那
么在修复前做一个完全拷贝是个好主意 因为如果你修错了 可以重来 做映象拷贝的一个
方法是用 dd :
$ dd if=/dev/fd0H1440 of=floppy-image
2880+0 records in
2880+0 records out
$ dd if=floppy-image of=/dev/fd0H1440
2880+0 records in
2880+0 records out
$
第一个 dd 给软盘做了一个完全映象到文件 floppy-image , 第二个把映象写到软盘
(假设用户在第二个命令前换了软盘 否则这个命令对可能没用 )
分配磁盘空间
分区概要
用最好的方式给磁盘分区不容易 而且 没有一个通用的正确方法 这包括很多因素
29 传统的方法是有个(相对)小的根文件系统 包括 /bin , /etc , /dev , /lib , /tmp , 和其
他系统启动和运行需要的东西 这种方法 根文件系统(在它自己的分区或硬盘上)是所有系
统启动需要的东西 理由是如果根文件系统小而不常用 系统崩溃时它就不太容易损坏 而
且崩溃时也易于修复 然后给/usr 目录树 用户主目录(经常在/home ) 对换空间产生单
独的分区或使用单独的硬盘 分离的用户主目录(存用户文件)在其自己的分区中易于备份
因为一般无须备份程序(/usr 中) 网络环境中 这样可以使多台计算机共享/usr (例如使用
NFS) 这样每台机器可以节约数十 数百兆的磁盘空间
多分区的问题是将整个磁盘的空闲空间分割成若干小片 现在 由于磁盘和操作系统已
经很可靠 许多人更倾向与一个分区存所有文件 当然 这样可能比备份 回存小分区痛苦
些
对于小硬盘(假设你不做核心开发) 最好的方法可能是只要一个分区 对于大硬盘 分
几个大分区可能更好 尤其在某种情况下出现错误时 (注意这里说的小和大是相对的 根
据你对磁盘空间的需求而言 )
如果你有多个硬盘 你可能想让根文件系统(包括/usr ) 在一个上 而用户主目录在另
一个上
最好准备尝试几个不同的分区方案(over time, not just while first installing the syst
em) 这有些工作量 因为这其实是从头安装系统若干遍 但这是确认正确的唯一方法
空间要求
你安装的 Linux 给出一些对不同配置所需磁盘空间的指示 单独安装的程序可能也是
这能帮助你计划你的磁盘使用 但你应该为以后可能的需求保留一些额外空间
拥护文件总量基于你的用户希望 许多人好象想要他们所有可能的文件量 但多多益善
有些人只有很少的文字处理 也许几兆就够 而有些人可能需要上 GB 的空间做图象处理
顺便说一句 用 KB 或 MB 比较文件大小和用 MB 给出的磁盘空间时 应当注意这 2 者
的可能的不同 一些硬盘制造商喜欢称 1000 字节为 1KB 1000KB 为 1MB 而计算机世界
的其他地方都以 1024 为因数 因此我的 MB 硬盘实际只是 330MB 硬盘
对换空间在 5.5 章讨论
硬盘分配举例
我原来有个 109MB 的硬盘 现在我用一个 330MB 硬盘 我解释一下我如何分区这些
硬盘并说明为什么
当我的需要和操作系统变化时 我用不同的方法分区 109MB 硬盘 我说明 2 种方案
30 首先 我曾和 Linux 一起运行 MSDOS 为此 我需要大约 20MB 给 MSDOS C 编译器
编辑器 一些其他工具 我工作的程序 和足够的空闲空间 给 Linux 开了 10MB 对换分区
其他 79MB 作为一个分区给 Linux 我曾试验给出单独的根 /usr , 和/home 但这样就没
有什么空闲空间干什么有趣的事了
当我不再需要 MSDOS 我重新分区 12MB 对换分区 其他是一个单独的文件系统
从头分区是为了玩玩要求自己分区的一些东西 例如试试不同的 Linux 或比较文件系
统的速度 当没有这些需要后 就把它作为对换区(我喜欢打开好多窗口)
给 Linux 增加更多的磁盘空间
给 Linux 增加更多的磁盘空间很容易 至少在硬件都安装好后(硬件安装不在本书所述
的范围) 如果需要 先格式化 然后产生分区和上面说过的文件系统 在/etc/fstab 中加入
正确的行使之能自动 mount
节约磁盘空间的提示
节约磁盘空间的最好提示是不要安装不必要的程序 许多 Linux distributions 给出安装
其所带软件包某些部分的选择 分析你的需求你可能发现好多你并不需要 这会节约很多磁
盘空间 因为许多程序需要很大空间 即使你需要某部分包或程序 也不一定需要其全部
例如有些在线文档可能不必要 有些 GNU Emacs 的 Elisp 文件, 有些 X11 的字体 或者有
些编程库
如果你不能卸装包 你可以压缩 如 gzip 或 zip 的压缩程序可以压缩/解压文件或文件
群 gzexe 系统可以对用户透明地压缩/解压程序 (没用的程序被压缩 当被使用时解压)
实验中的 DouBle 系统对程序透明地压缩文件系统中的所有文件 (如果你熟悉例如 Stacke
r for MS-DOS 等产品 原理是一样的 )
相关栏目:
您当前位置:
返回顶部