Unix 文件系统基础 - Unix

文件系统是一个分区或磁盘上的文件的逻辑集合。分区是信息的容器,如果需要的话,可以跨越整个硬盘驱动器。

你的硬盘驱动器,可以有不同的分区通常只包含一个文件系统,如一个文件系统 / 文件系统或其他包含/home文件系统。

每个分区的一个文件系统允许不同的文件系统的维护和管理逻辑。

在Unix中的一切都被认为是一个文件,包括物理设备,如DVD-ROM,USB设备,软盘驱动器,等等。

目录结构:

Unix 使用层次结构的文件系统的结构,很象一个倒置的树,在该文件系统的基础上,并从那里扩展的所有其他目录的根目录(/)。

UNIX 文件系统中的文件和目录的集合,具有以下属性:

  • 它有一个根目录(/),其中包含其他文件和目录。

  • 每个文件或目录被唯一标识,它的名字,它的目录,以及一个唯一的标识符,通常被称为一个inode。

  • 按照惯例,根目录下有一个inode号为2和3的lost + found目录中有一个inode号。 inode编号0和1不使用。指定-i选项的ls命令可以看到文件的inode编号。

  • 这是自包含的。没有一个文件系统,以及任何其他的之间的依赖关系。

目录有特定的目的,普遍持相同类型的信息,轻松定位文件。以下是主要的Unix版本上存在的目录:

目录 描述
/ This is the root directory which should contain only the directories needed at the top level of the file structure.
/bin This is where the executable files are located. They are available to all user.
/dev These are device drivers.
/etc Supervisor directory commands, configuration files, disk configuration files, valid user lists, groups, ethernet, hosts, where to send critical messages.
/lib Contains shared library files and sometimes other kernel-related files.
/boot Contains files for booting the system.
/home Contains the home directory for users and other accounts.
/mnt Used to mount other temporary file systems, such as cdrom and floppy for the CD-ROM drive and floppy diskette drive, respectively
/proc Contains all processes marked as a file by process number or other information that is dynamic to the system.
/tmp Holds temporary files used between system boots
/usr Used for miscellaneous purposes, or can be used by many users. Includes administrative commands, shared files, library files, and others
/var Typically contains variable-length files such as log and print files and any other type of file that may contain a variable amount of data
/sbin Contains binary (executable) files, usually for system administration. For examplefdisk and ifconfig utlities.
/kernel Contains kernel files

浏览文件系统:

现在你了解基本的文件系统,你就可以开始导航到你需要的文件。以下是您将使用浏览系统的命令:

命令 描述
cat filename Displays a filename.
cd dirname Moves you to the directory identified.
cp file1 file2 Copies one file/directory to specified location.
file filename Identifies the file type (binary, text, etc).
find filename dir Finds a file/directory.
head filename Shows the beginning of a file.
less filename Browses through a file from end or beginning.
ls dirname Shows the contents of the directory specified.
mkdir dirname Creates the specified directory.
more filename Browses through a file from beginning to end.
mv file1 file2 Moves the location of or renames a file/directory.
pwd Shows the current directory the user is in.
rm filename Removes a file.
rmdir dirname Removes a directory.
tail filename Shows the end of a file.
touch filename Creates a blank file or modifies an existing file.s attributes.
whereis filename Shows the location of a file.
which filename Shows the location of a file if it is in your PATH.

您可以使用联机帮助帮助这里提到的每个命令的语法检查完成。

df 命令:

第一种方式来管理你的分区空间使用df(磁盘空闲)命令。命令df-K(可用磁盘)以KB为单位显示磁盘空间使用情况,如下图所示:

$df -k
Filesystem      1K-blocks      Used   Available Use% Mounted on
/dev/vzfs        10485760   7836644     2649116  75% /
/devices                0         0           0   0% /devices
$

一些目录,如 /devices,显示0字节,使用和可用列的能力,以及0%。这些特殊的文件系统(或虚拟),虽然它们驻留在磁盘上/下,它们本身不占用磁盘空间。

df -k 输出所有的Unix系统上大致相同。下面是它通常包括:

Column 描述
Filesystem The physical file system name.
kbytes Total kilobytes of space available on the storage medium.
used Total kilobytes of space used (by files).
avail Total kilobytes available for use.
capacity Percentage of total space used by files.
Mounted on What the file system is mounted on.

你可以使用-h(人类可读的)选项显示的输出格式,显示的大小更容易理解的符号。

du 命令:

使用du(磁盘使用率)命令使您能够在一个特定的目录指定目录显示磁盘空间使用情况。

此命令是有帮助的,如果你要确定一个特定的目录多大的空间。下面的命令将显示每个目录所消耗的块数。单块可能需要512字节或1千字节,这取决于你的系统。

$du /etc
10     /etc/cron.d
126    /etc/default
6      /etc/dfs
...
$

-h选项使输出更容易理解:

$du -h /etc
5k    /etc/cron.d
63k   /etc/default
3k    /etc/dfs
...
$

安装的文件系统:

必须安装的文件系统,以便使用该系统。要看到什么是目前在您的系统上安装(可以使用),使用这个命令:

$ mount
/dev/vzfs on / type reiserfs (rw,usrquota,grpquota)
proc on /proc type proc (rw,nodiratime)
devpts on /dev/pts type devpts (rw)
$

/ mnt目录下,Unix的惯例,是位于临时装片(如CD-ROM驱动器,远程网络驱动器,软盘驱动器)。如果您需要挂载文件系统,可以使用mount命令的语法如下:

mount -t file_system_type device_to_mount directory_to_mount_to

例如,如果你想要的CD-ROM安装到目录 /mnt/cdrom,例如,您可以键入:

$ mount -t iso9660 /dev/cdrom /mnt/cdrom

假定您的CD-ROM设备名为 /dev/cdrom命令要挂载到 /mnt/cdrom。更具体的信息或帮助信息在命令行中键入mount -h ,请参阅安装手册页。

安装后,您可以使用cd 命令导航最新的文件系统挂载点。

卸载文件系统:

从您的系统中卸载(删除)文件系统,使用umount命令识别挂载点或设备

例如,要卸载光驱,使用下面的命令:

$ umount /dev/cdrom

mount 命令,使您能够访问您的文件系统,但最现代的Unix系统,自动装载功能,使这个过程对用户不可见,无需干预。

用户和组配额:

用户和组配额提供的机制,可以限制特定组内的单个用户或所有用户使用的空间量由管理员定义的值。

配额围绕两个限制,允许用户采取一些行动,如果量的空间或磁盘块数开始超过管理员定义的限制:

  • Soft Limit: 如果用户超过定义的限制,有一个宽限期,允许用户腾出一些空间。

  • Hard Limit: 当达到硬限制,无论在宽限期,没有进一步的文件或块可以分配。

有一些命令来管理配额:

命令 描述
quota Displays disk usage and limits for a user of group.
edquota This is a quota editor. Users or Groups quota can be edited using this command.
quotacheck Scan a filesystem for disk usage, create, check and repair quota files
setquota This is also a command line quota editor.
quotaon This announces to the system that disk quotas should be enabled on one or more filesystems.
quotaoff This announces to the system that disk quotas should be disabled off one or more filesystems.
repquota This prints a summary of the disc usage and quotas for the specified file systems

您可以使用 联机帮助帮助 提到的每个命令的语法检查完成。