Linux 分区 HOWTO | ||
---|---|---|
上一页 |
在 shell 提示符下,我开始在我的分区上创建文件系统。继续 (参见 第 5.3 节) 中的示例,这是
# mke2fs /dev/sda1 |
我需要为我的每个分区执行此操作,但不包括/dev/sda4(我的扩展分区)。Linux 支持除 ext2 之外的文件系统类型。您可以通过查看以下位置来了解您的内核支持哪些类型/usr/src/linux/include/linux/fs.h
最常见的文件系统可以使用以下位置的程序创建/sbin这些程序以 "mk" 开头,例如 mkfs.msdos 和 mke2fs。
挂载分区意味着将其附加到 Linux 文件系统。要挂载 Linux 分区
# mount -t ext2 /dev/sda1 /opt |
文件系统类型。您可能使用的其他类型包括
ext3 (基于 ext2 的日志文件系统)
msdos (DOS)
hfs (mac)
iso9660 (CDROM)
nfs (网络文件系统)
设备名称。您可能使用的其他设备名称
/dev/hdb2(第二个 IDE 驱动器中的第二个分区)
/dev/fd0(软盘驱动器 A)
/dev/cdrom(CDROM)
挂载点。这是您希望“看到”您的分区的位置。当您输入ls /opt时,您可以看到/dev/sda1中的内容。如果/opt下已经有一些目录和/或文件,它们将在执行此挂载命令后变得不可见。
磁盘空间由操作系统以块和块片段为单位进行管理。在 ext2 中,片段和块必须大小相同,因此我们可以将讨论限制在块上。
文件的大小各不相同。它们并非以块边界结束。因此,对于每个文件,每个文件最后一个块的一部分都会被浪费。假设文件大小是随机的,那么磁盘上的每个文件大约会浪费半个块。Tanenbaum 在他的著作《操作系统》中称之为“内部碎片”。
您可以通过磁盘上已分配的 inode 数量来猜测磁盘上的文件数量。在我的磁盘上
# df -i Filesystem Inodes IUsed IFree %IUsed Mounted on /dev/hda3 64256 12234 52022 19% / /dev/hda5 96000 43058 52942 45% /var |
然而,对于大的连续数据块,数据传输速度更快。这就是为什么 ext2 尝试以 8 个连续块为单位为增长的文件预分配空间。当文件关闭时,未使用的预分配空间会被释放,因此不会浪费空间。
文件中块的非连续放置对性能不利,因为文件通常以顺序方式访问。它迫使操作系统拆分磁盘访问,并迫使磁盘移动磁头。这被称为“外部碎片”或简称为“碎片”,是 MS-DOS 文件系统的常见问题。结合 MS-DOS 使用的糟糕的缓冲区缓存,文件碎片对性能的影响非常明显。DOS 用户习惯于每隔几周对磁盘进行碎片整理,有些人甚至对碎片整理产生了一些仪式化的信仰。
这些习惯都不应带到 Linux 和 ext2 中。Linux 原生文件系统在正常使用下不需要碎片整理,这包括磁盘上至少有 5% 可用空间的任何情况。ext2 有一个名为 defrag 的碎片整理工具,但告诫用户不要随意使用。在这种操作期间断电可能会损坏您的文件系统。由于您无论如何都需要备份数据,因此只需从您的副本写回即可完成这项工作。
MS-DOS 文件系统也因内部碎片而损失大量磁盘空间而闻名。对于大于 256 MB 的分区,DOS 块大小增长得太大,以至于不再有用(这在一定程度上已通过 FAT32 得到纠正)。除了 0.5 TB 范围(即 1 TB 等于 1024 GB 的太字节)及以上的超大文件系统之外,Ext2 不会强迫您为大型文件系统选择大块,在这些情况下,小块大小会变得效率低下。因此,与 DOS 不同,没有必要将大型磁盘拆分为多个分区以减小块大小。
如果您有很多小文件,请使用 1Kb 的块大小。对于大型分区,4Kb 的块大小就可以了。