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

您可以使用 聯機幫助幫助 提到的每個命令的語法檢查完成。