亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

對(duì)話 UNIX: 關(guān)于 inode

瀏覽:5日期:2024-06-17 11:23:56

inode 是 Unix 操作系統(tǒng)中的一種數(shù)據(jù)結(jié)構(gòu),它包含了與文件系統(tǒng)中各個(gè)文件相關(guān)的一些重要信息。在 UNIX 中創(chuàng)建文件系統(tǒng)時(shí),同時(shí)將會(huì)創(chuàng)建大量的 inode 。通常,文件系統(tǒng)磁盤(pán)空間中大約百分之一空間分配給了 inode 表。

有時(shí),人們使用了一些不同的術(shù)語(yǔ),如 inode 和索引編號(hào) (inumber)。這兩個(gè)術(shù)語(yǔ)非常相似,并且相互關(guān)聯(lián),但它們所指的并不是同樣的概念。 inode 指的是數(shù)據(jù)結(jié)構(gòu);而索引編號(hào)實(shí)際上是 inode 的標(biāo)識(shí)編號(hào),因此也稱(chēng)其為 inode 編號(hào) 或者索引編號(hào)。索引編號(hào)只是文件相關(guān)信息中一項(xiàng)重要的內(nèi)容。下一個(gè)部分將介紹 inode 中的其他一些屬性。

inode 表包含一份清單,其中列出了對(duì)應(yīng)文件系統(tǒng)的所有 inode 編號(hào)。當(dāng)用戶搜索或者訪問(wèn)一個(gè)文件時(shí),UNIX 系統(tǒng)通過(guò) inode 表查找正確的 inode 編號(hào)。在找到 inode 編號(hào)之后,相關(guān)的命令才可以訪問(wèn)該 inode ,并對(duì)其進(jìn)行適當(dāng)?shù)母摹?/p>

例如,使用 vi 來(lái)編輯一個(gè)文件。當(dāng)您鍵入 vi <filename> 時(shí),在 inode 表中找到 inode 編號(hào)之后,才允許您打開(kāi)該 inode 。在 vi 的編輯會(huì)話期間,更改了該 inode 中的某些屬性,當(dāng)您完成操作并鍵入 :wq 時(shí),將關(guān)閉并釋放該 inode 。通過(guò)這種方式,如果兩個(gè)用戶試圖對(duì)同一個(gè)文件進(jìn)行編輯, inode 已經(jīng)在第一個(gè)編輯會(huì)話期間分配給了另一個(gè)用戶 ID (UID),因此第二個(gè)編輯任務(wù)就必須等待,直到該 inode 釋放為止。

inode 的結(jié)構(gòu)

對(duì)于經(jīng)驗(yàn)豐富的 UNIX 開(kāi)發(fā)人員或者管理員來(lái)說(shuō), inode 的結(jié)構(gòu)相對(duì)比較簡(jiǎn)單,但是可能還有一些您尚不了解的、令人驚訝的有關(guān) inode 的內(nèi)幕。下面的定義僅給出了 inode 中所包含的、UNIX 用戶經(jīng)常使用的一些重要信息:

inode 編號(hào)

用來(lái)識(shí)別文件類(lèi)型,以及用于 stat C 函數(shù)的模式信息

文件的鏈接數(shù)目

屬主的 UID

屬主的組 ID (GID)

文件的大小

文件所使用的磁盤(pán)塊的實(shí)際數(shù)目

最近一次修改的時(shí)間

最近一次訪問(wèn)的時(shí)間

最近一次更改的時(shí)間

從根本上講, inode 中包含有關(guān)文件的所有信息(除了文件的實(shí)際名稱(chēng)以及實(shí)際數(shù)據(jù)內(nèi)容之外)??梢栽?AIX 的 Header 文件 /usr/include/jf/ino.h 中、或者 Web 頁(yè)面 http://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/com.ibm.aix.files/doc/aixfiles/inode.h.htm 中可以找到完整的 inode 結(jié)構(gòu)。

以上所列舉的信息對(duì)于文件來(lái)說(shuō)非常重要,并且在 Unix 中頻繁使用。如果沒(méi)有這些信息,那么文件將被認(rèn)為遭到破壞和不可用。

與其他的操作系統(tǒng)相比,UNIX 系統(tǒng)中的目錄和文件可能看起來(lái)有所不同,但事實(shí)并非如此。在 UNIX 中,目錄本身就是文件,只是在它們的 inode 中使用了一些附加的設(shè)置。目錄 本質(zhì)上就是一個(gè)包含了其他文件的文件。另外,其模式信息中設(shè)置了一些相應(yīng)的標(biāo)志,以告知系統(tǒng)該文件實(shí)際上是一個(gè)目錄。

使用 inode

了解如何在 UNIX 中使用 inode 可以節(jié)約大量的時(shí)間,并提高工作效率。在尚未了解 inode 之前,您可以使用下面的命令,以減少可能碰到的問(wèn)題。

df 命令

如前所述,當(dāng)您在 UNIX 中創(chuàng)建一個(gè)文件系統(tǒng)時(shí),將為 inode 表分配大約百分之一的總磁盤(pán)空間。每次在文件系統(tǒng)中創(chuàng)建一個(gè)文件時(shí),都會(huì)為該文件分配一個(gè) inode 。通常,與一個(gè)文件系統(tǒng)相關(guān)聯(lián)的 inode 的數(shù)目足夠多,但耗盡 inode 的可能性始終存在。要監(jiān)視是否發(fā)生了這種情況,您可以觀察 df 的輸出。

使用 df 命令,您可以查看所有已掛載的文件系統(tǒng)或者特定的文件系統(tǒng)。在該命令的輸出中,您可以查看各個(gè)文件系統(tǒng)中已使用的 inode 的數(shù)目,以及文件系統(tǒng)中總體使用情況百分比,如清單 1 中所示。

清單 1. 使用 df 來(lái)監(jiān)視 inode 的使用

# df -k|head -6Filesystem1024-blocks Free %UsedIused %Iused Mounted on/dev/hd4  229376138436  40% 473013% //dev/hd2 8028160962692  89%  11003433% /usr/dev/hd9var  1835008366400  81%2582924% /var/dev/hd3  5242885235641%  98 1% /tmp/dev/hd132768 324162%5 1% /home

如果由于某種原因,某個(gè)文件系統(tǒng) inode 的使用率達(dá)到百分之百,那么您將無(wú)法在該文件系統(tǒng)中創(chuàng)建更多的文件、設(shè)備、目錄等等。對(duì)于這種情況,一種解決方案是通過(guò) smitty chfs 命令為該文件系統(tǒng)添加更多的空間,如圖 1 所示。另一種解決方案是創(chuàng)建較小的 inode 區(qū)段。現(xiàn)在,在增強(qiáng)的日志文件系統(tǒng) (Enhanced Journal File System) 中,IBM AIX 5L 允許 inode 區(qū)段小于 16KB 的缺省大小。請(qǐng)記住,如果您在 AIX 5L 中使用這個(gè)選項(xiàng),那么將無(wú)法從較早版本的 AIX 訪問(wèn)該文件系統(tǒng)。

圖 1. smitty chfs 命令的結(jié)果

istat 和 stat

在 AIX 中檢查 inode 的一種快捷的方式是使用 istat 命令。使用這個(gè)命令,您可以找到特定文件的索引編號(hào),以及其他的 inode 項(xiàng)目,如權(quán)限、文件類(lèi)型、UID、GID、鏈接的數(shù)目(非符號(hào)鏈接)、文件大小和最近一次更新、最近一次修改以及最近一次訪問(wèn)的時(shí)間戳。

清單 2 顯示了 AIX 中文件 /usr/bin/ksh 的 inode 信息。

清單 2. /usr/bin/ksh 的 inode 信息

# istat /usr/bin/kshInode 18150 on device 10/8 FileProtection: r-xr-xr-xOwner: 2(bin)  Group: 2(bin)Link count:  5 Length 237804 bytesLast updated:  Wed Oct 24 17:37:10 EDT 2007Last modifIEd: Wed Apr 18 23:58:06 EDT 2007Last accessed: Mon Apr 28 11:25:35 EDT 2008

除了顯示來(lái)自 istat 的標(biāo)準(zhǔn)信息之外,現(xiàn)在您還知道了 /usr/bin/ksh 對(duì)應(yīng)的索引編號(hào)。如果您同時(shí)還找到了該文件所處的邏輯卷,那么甚至可以顯示更多的信息。要查找該信息,一種方式是通過(guò)使用 df 命令來(lái)查看該文件位于哪個(gè)已掛載的文件系統(tǒng)中:

# df /usr/binFilesystem512-blocks Free %UsedIused %Iused Mounted on/dev/hd216056320  1925384  89%  11003433% /usr

文件 /usr/bin/ksh 位于目錄 /usr/bin 中。查看 df 命令的輸出,您可以發(fā)現(xiàn),目錄 /usr/bin 包含于 /usr 文件系統(tǒng)中,并且 /usr 文件系統(tǒng)位于邏輯卷 /dev/hd2 之中?,F(xiàn)在,您已經(jīng)知道了索引編號(hào)和邏輯卷的名稱(chēng),那么就可以將這兩個(gè)信息項(xiàng)作為參數(shù)來(lái)使用 istat,這樣一來(lái),您可以確定組成該文件的磁盤(pán)塊的十六進(jìn)制地址,如清單 3 中所示。

清單 3. 確定文件磁盤(pán)塊的十六進(jìn)制地址

# istat 18150 /dev/hd2Inode 18150 on device 10/8 FileProtection: r-xr-xr-xOwner: 2(bin)  Group: 2(bin)Link count:  5 Length 237804 bytesLast updated:  Wed Oct 24 17:37:10 EDT 2007Last modified: Wed Apr 18 23:58:06 EDT 2007Last accessed: Mon Apr 28 11:44:20 EDT 2008Block pointers (hexadecimal):11620 ef8c0

Linux 提供了其特有的 istat 版本:stat。Linux stat 命令可以顯示類(lèi)似的信息,并且還包括一些在 AIX istat 命令中沒(méi)有提供的命令開(kāi)關(guān):

# stat /bin/bash File: `/bin/bash' Size: 722684 Blocks: 1432  IO Block: 4096  regular fileDevice: fd00h/64768dInode: 12799859Links: 1Access: (0755/-rwxr-xr-x) Uid: (0/root)  Gid: (0/root)Access: 2008-04-06 19:13:50.000000000 -0400Modify: 2006-07-12 03:11:53.000000000 -0400Change: 2007-11-22 04:05:30.000000000 -0500

ls 命令

在您的日常工作中總會(huì)碰到這樣的情況,難以刪除或者管理某些文件,因?yàn)檫@些文件的文件名中使用了短橫線或者其他特殊字符、或者其文件名完全不正確。這很可能是有人對(duì)該文件進(jìn)行了錯(cuò)誤命名。

因?yàn)?Unix 中的大多數(shù)命令,包括開(kāi)關(guān)或者選項(xiàng)在內(nèi),都是以連字符 (-) 或者雙連字符 (--) 開(kāi)頭的,很難使用諸如 rm、mv 和 cp 之類(lèi)常用的命令來(lái)操作這些文件。幸運(yùn)的是,某些命令提供了一些選項(xiàng),以用來(lái)顯示相關(guān)文件所關(guān)聯(lián)的 inode 的索引編號(hào)。ls 命令就提供了一個(gè)這樣的選項(xiàng):

# ls  - -- -p fileA fileB fileC fileDfileE fileF fileG fileH fileI fileJ fileK fileL

使用 ls -i 命令,您可以看到文件名稱(chēng)旁邊的索引編號(hào),如清單 4 中所示?,F(xiàn)在,您已經(jīng)知道了文件的索引編號(hào),那么就可以很容易地操作該文件了。

清單 4. 查看文件的索引編號(hào)

# ls –i3898838991 -p 38984 fileC 38982 fileF 38977 fileI 38978 fileL38989 - 38980 fileA 38986 fileD 38983 fileG 38987 fileJ38990 -- 38979 fileB 38976 fileE 38985 fileH 38981 fileK

find 命令

使用 Unix find 命令,您可以完成使用 ls 命令所開(kāi)始的工作。對(duì)于要進(jìn)行操作的文件,您已經(jīng)知道了它們的索引編號(hào),那么就可以開(kāi)始進(jìn)行相應(yīng)的操作了!

要?jiǎng)h除看似無(wú)名的文件,您只需要使用 find 和 -inum 開(kāi)關(guān)對(duì)索引編號(hào)和文件進(jìn)行定位。然后,在找到該文件之后,使用 find 和 -exec 開(kāi)關(guān)刪除該文件:

# find . -inum 38988 -exec rm {} ;

要對(duì)該文件進(jìn)行重命名,可以再次進(jìn)行相同的操作,但這一次使用 mv 而不是 rm:

# find . -inum 38989 -exec mv {} fileM ;

為了驗(yàn)證取得了預(yù)期的結(jié)果,只需要再次使用 ls -i 命令:

# ls -i38990 -- 38979 fileB 38976 fileE 38985 fileH 38981 fileK38991 -p 38984 fileC 38982 fileF 38977 fileI 38978 fileL38980 fileA 38986 fileD 38983 fileG 38987 fileJ 38989 fileM

fsck 命令

不幸的是,硬件設(shè)備不可能一直使用下去,系統(tǒng)可能會(huì)在使用多年后出現(xiàn)故障。當(dāng)發(fā)生這種情況,以及由于電源故障或者某些其他問(wèn)題而導(dǎo)致操作系統(tǒng)異常關(guān)閉的時(shí)候,您可能會(huì)在還原系統(tǒng)備份時(shí)碰到一些在崩潰期間處于打開(kāi)狀態(tài)的文件,并且現(xiàn)在需要對(duì)其加以處理。此時(shí),您可能會(huì)碰到一些需要修復(fù) inode 或者存在錯(cuò)誤的消息。如果發(fā)生這種狀況,那么 fsck 命令可以用來(lái)救急!您可以使用 fsck 來(lái)修復(fù)文件系統(tǒng)或者修正受損的 inode ,而不是還原系統(tǒng)、或者甚至重新構(gòu)建操作系統(tǒng)。

下面的命令可以嘗試修復(fù)邏輯卷 /dev/hd1:

# fsck –p /dev/hd1 –y

通過(guò)使用 fsck 命令,您還可以縮小受損 inode 的搜索范圍。如果您正在搜索一個(gè)特定的 inode ,那么可以使用帶 -ii-NodeNumber 開(kāi)關(guān)的 fsck 命令。

結(jié)束語(yǔ)

如果沒(méi)有 inode ,那么 UNIX 中的文件和目錄將根本無(wú)法使用。希望在閱讀完本文之后,您可以更好地了解 inode 、它們對(duì)于 AIX 系統(tǒng)的重要性,以及如何管理它們。您可能會(huì)對(duì) df 命令的看法大為改觀。

標(biāo)簽: Unix系統(tǒng)
主站蜘蛛池模板: 成年性午夜免费视频网站不卡 | 国产精品日韩欧美在线 | 337q日本大胆欧美人术艺术 | 欧美精品一区二区三区四区 | avav国产 | 激情啪啪网站 | 91精品国产综合久久青草 | 看特级大黄一片 | 九九精品视频免费 | 精品视频99 | 国产五月婷婷 | 品爱网在线观看视频免费视频 | 久久国产精品无码网站 | 欧美性猛交xxxx乱大交蜜桃 | 亚洲特级aaaaaa毛片 | 五月桃花网婷婷亚洲综合 | 久草在线观看福利视频 | 99精品国产自产在线观看 | 关婷哪一级毛片高清免费看 | 日韩精品欧美一区二区三区 | 青青热久免费精品视频精品 | 亚洲一区二区三区高清不卡 | 丁香六月色婷婷 | 日韩永久在线观看免费视频 | 亚洲春色在线视频 | 亚洲一区二区三区播放在线 | 女性特黄一级毛片 | 国产在线观看一区二区三区四区 | 黄黄的网站在线观看 | 小明永久免费看aⅴ片 | 国产无内制服肉丝精品视频 | 我想看黄色毛片 | 成人h视频在线观看 | 日本欧美不卡一区二区三区在线 | 麻豆精品国产自产在线 | 94在线成人免费视频 | 91在线视| 免费观看欧美一级特黄 | 99在线热视频 | 国产黄毛片 | 国产h版大片在线播放 |