歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

Solaris下維護文件系統


文件系統檢測程序文件系統可以因為電源的損壞的原因,內核中的軟件錯誤,硬件故障,或者不正確的關閉了系統。
文件系統檢測程序,fsck,檢測一個文件系統的數據一致性,並且糾正或者修復任何被找到的不同或者故障
每次系統啟動,fsck自動的預先運行一個文件系統一致性檢測。Fsck在文件系統被裝配之前檢測和修復任何遇到的文件系統的問題。
當文件系統被裝配,並且附加了ufs logging選項,就不需要運行fsck。因為logging禁止文件系統發生變化。
每次他掃描到檢測下列類型的文件系統沖突,fsck命令讓幾個通行證通過一個文件系統。
lost+found目錄fsck命令放置分派文件和目錄,但是不參考位於那個文件系統中的lost+found目錄。每個文件的inode編號當作名字分配。如果lost+found目錄不存在,fsck就建立他,並且如果在lost+found目錄中的空間不足,fsck就增加他的空間。
Superblock一致性
文件系統超級塊是為了檢測調用的文件系統長度的不同,空余塊計數器,和空余的inode計數器。
Inode一致性
Fsck命令為每個inode檢測分派狀態,類型,連接計數器,復制塊,錯誤塊,inode長度和塊計數器。任何未使用的inode和非0的連接計數器都鏈接到文件系統的lost+found目錄。
數據塊一致性
fsck命令不能檢測普通的數據塊,但是可以檢測目錄數據塊。在這個數據塊中,為inode指針檢測未分配的塊,標記為以用的未分配的塊,標記為空閒的未分配的塊,“.”和“..”和目錄沒有鏈節到文件系統的錯誤的inode。這些目錄是連接返回到文件系統的lost+found目錄。
柱頭組塊一致性
fsck命令檢測已經要求inode的未分配的數據塊,未分配的數據塊計數器和未分配的inode計數器。
Fsck的狀態
Fsck命令為每個在/etc/vfstab文件中包括設備到fsck和fsck通行條目的文件系統運行通過5個狀態。這5個狀態是:
Phase 1:檢測塊和長度,檢測矛盾的inodePhase 2:檢測路徑名,檢測目錄inode一致性Phase 3:檢測連通性,檢測所有目錄是否已經連接到文件系統Phase 4:檢測參考計數器,從Phase 2和3比較連接計數器信息,校正誤差。Phase 5:檢測柱頭組,檢測空余塊和已經使用inode映象的一致性
非交互式模式在一個普通系統啟動期間,fsck操作在非交互式模式,經常整理查閱或者無記載的模式。
在這個過程期間,fsck僅修復可以修復的問題。
可是,如果一個較大的問題被發現,並且產生了結果,fsck程序就中斷並且使系統進入但用戶模式。用戶必須運行交互式的fsck來繼續。
交互式模式在這個過程中間,fsck列出每個遇到的問題,下列在下列的糾正建議的動作中,問題需要回答yes或者no
通過回應yes,fsck允許糾正動作並且繼續。回應no,fsck將報告最初的問題,並且提出解決的方法,並且不在繼續向前直到用戶回應yes。
使用fsck命令下面的實例中示范root用戶如何使用fsck命令來完整的檢測文件系統。
。檢測單獨的沒有裝配的文件系統,執行下列命令# fsck /dev/rdsk/c0t0d0s7這是檢測沒有加入/etc/vfstab文件的文件系統的唯一方法。。使用列在/etc/vfstab文件中的文件系統的裝配點目錄名檢測文件系統,執行下列命令# fsck /opt
fsck發現並修理故障
如果文件系統中顯示了問題,用戶可以接到來自fsck的警告。下面描述了一些比較多需要采用交互式干涉的文件系統錯誤。
從新連接一個已經分配的不可引用的文件。
在這個例子中,fsck程序發現一個已經分配的inode,但是不能引用或者不能連接到其他目錄。
在RECONNECT?後面回答yes,會導致fsck保存文件到lost+found目錄,並且以inode編號命名。
** Phase 3 – Check ConnectivityUNREF FILE I=788 OWNER=root Mode=100644SIZE=19994 MTIME=Jan 18 10:49 1999RECONNECT? Y
決定什麼類型的文件被移動到lost+found目錄中1.列出文件系統的lost+found目錄的內容,比如# ls /export/home/lost+found#7882.決定文件的類型,使用file命令# file /export/home/lost+found/#788/export/home/lost+found/#788:ascii text3.使用more或者cat命令顯示ACSII文本文件的內容。使用strings命令顯示二進制文件的內容。如果文件是與一個應用相關的,就必須使用該應用程序來打開這個文件# cat /export/home/lost+found/#7884.如果文件是完整的並且用戶知道他屬於哪裡,文件可以直接拷貝回他應該在的文件系統
校正連接計數器在這個實例中,fsck程序發現一個目錄的inode的連接計數器的數值和實際目錄的連接計數器的數值不符。
在ADJUST?後面回答yes,fsck將校正目錄inode的連接計數器** Phase 4 – Check Reference CountsLINK COUNT DIR I=2 OWNER=root MODE=40755SIZE=512 MTIME=Jan 18 15:59 1999 COUNT 4 SHOULD BE 3ADJUST? y
搶救空余列表
在這個實例中,fsck程序發現未分配的塊計數器和空余塊編號列表中的超級塊不符合。
在SALVAGE?後面回答yes,fsck將升級文件系統的超級塊的信息。
** Phase 5 – Check Cyl groupsCG 0: BAD MAGIC NUMBERFREE BLK COUNT(S) WRONG IN SUPERBLKSALVAGE? y
使用備份的超級塊文件系統不能被裝配,超級塊碎片是可能的原因。
在系統啟動的時候或者手動裝配文件系統的時候,顯示信息“Can’t mount file system name”表示一個文件系統不可用。例如:Can’t mount /dev/dsk/c0t0d0s7
如果fsck因為超級塊錯誤而返回一個錯誤信息,用戶必須選擇一個超級塊來恢復系統。
糾正的動作是運行fsck的-o選項,並且加b標志。標志後面跟超級塊號碼。
每個文件系統通常有一個預備超級塊在32號塊上,可以利用他來修復主超級塊。# fsck –o b=32 /dev/rdsk/c1t3d0s0
fsck程序在備份的超級塊上提取信息,與實際的文件系統比較並且重建主超級塊。
可是如果這個被破壞的塊是文件系統的部分。用戶必須選擇其他的備份超級塊使fsck繼續。
要列出文件系統所有的備份超級塊的位置,就運行newfs –N命令,例如# newfs –N /dev/rdsk/c#t#d#s#
用戶可以使用-N選項來顯示出文件系統參數到that would be used來建立即將使用的新文件系統而沒有真正的建立文件系統
輸出的一部分是列出所有可以被-o參數使用的備份超級塊的位置
用戶也可以使用任何備份塊編號來列出每個備份超級塊的內容。
監視文件系統的使用
系統管理員的一個重要工作就是監視普通用戶的文件系統的使用。有4個可以使用命令用於這個任務,包括df,du,ff和quot
df:顯示空閒磁盤塊和文件的編號du:總結磁盤的使用ff:為文件系統列出文件名和統計報表quot:總結文件系統所有權
df命令
用戶使用df命令來顯示已經裝配的文件系統使用的磁盤空間的數量。他列出的是已經使用的和可用空間的數量,並且用了多少文件系統的總容量。
命令格式
df [-k] [directory]
選項
-k顯示已經使用的K字節和從可用空間的部分通過操作系統減去保留的空間。
顯示文件系統的容量,使用下面的命令# df –k
在文件系統中,已用的空間加上空閒的空間是小於整個空間的。其中的一小部分空間,大約是1%到10%是保留給每個文件系統的。
當文件系統報告所有的空間都被使用的時候,容量顯示100%。普通用戶就會接到信息“File System Full”,並且不能繼續工作。而保留的空間,root仍然可以使用,root用戶可以刪除或者備份文件到有空閒空間的文件系統。
Df –k顯示下列的部分
File system:已經裝配的文件系統Kbytes:文件的長度(K為單位)Used:已經使用的空間(K為單位)Avail:空閒的空間(K為單位)Capacity:文件系統已經使用的部分的百分比Mounted on:裝配點
Du命令用戶使用du命令來顯示每個目錄或者文件已經使用的磁盤塊的數量
命令格式du [-a] [-s] [-k] [directory]
選項-k以K字節為單位顯示-s顯示只有512字節的塊。S和k一起使用,顯示總共使用的K字節-a顯示所有文件和目錄已經使用的塊的數目,可以指定目錄體系
ff命令
ff文件提供文件系統中的路徑名的列表和文件的inode編號。
Quot命令
Quot命令顯示了每個用戶使用了多少空間。(K為單位)
命令格式quot [-af] [file system …]
選項
a報告所有已經裝配的文件系統f包含的文件的數目
故障解決
如果boot損壞了,修復重要的文件。
/etc/vfstab文件是一個重要的系統文件。如果出現問題或者包含了編輯上的錯誤,就會導致系統啟動錯誤。
使用下面的方法從Solaris操作環境光盤中啟動並且修復編輯/etc/vfstab文件1.插入Solaris 8光盤(Software 1 of 2)2.利用光盤啟動到單用戶模式ok boot cdrom -s3.使用fsck命令修復/(root)分區的潛在問題# fsck /dev/rdsk/c0t0d0s04.如果fsck成功完成,裝配/(root)文件系統到/a目錄,以允許對磁盤上的文件系統的訪問。# mount /dev/dsk/c0t0d0s0 /a5.設置並且輸出TERM變量允許vi編輯器進行工作# TERM=sun# export TERM6.編輯/etc/vfstab文件並且糾正問題。然後退出保存文件# vi /a/etc/vfstab:wq!7.卸載文件系統# cd /# umount /a8.重新啟動系統# reboot
1、fsck fsck是可以說是使用次數第一的工具(系統自己使用占90%以上)。它是FS完整性 檢查,包括supblk,cylgrpblk,inode.tab,data區等。檢查的原理是:冗余發。修 復時按照實際情況調整記錄信息。 lost+found目錄:在fsck的時候,將找不到父目錄的那些文件拷貝到該目錄中,並 以i節點號作為文件名。 當系統啟動的時候會使用fsck對文件系統進行掃描,並相應的報出掃描結果。例 如:/dev/rdsk/c0t0d0s7 stable等。 後面是Fs的狀態。其中,clean表示文件系統umount後無人用,stable表示文件系 統用過,但卻是完整的,好的。而出一大堆的話,還有什麼fragment %什麼的的那 都表示文件系統上有亂的地方,那麼就應該進入系統後使用fsck來整理。提起這個 來,我想說說在非法關機後(各種原因),再次啟動的時候會有很多的情況,上面 說的是一種情況,再厲害一些是系統只能進入但用戶狀態,最厲害的是連單用戶的 狀態都無法進入(肯定是/和/usr區有問題。這是因為fsck對/區的掃描無法通過的 話,系統當然無法啟動,而fsck調用的一些函數庫又在/usr上。。。。) 當系統的狀態是clean,stable和logging的狀態的時候(logging??不知道的看上 一課吧)fsck不運行。
2、fsck的使用 本課講的三個參數: -o f 對系統進行強制檢查,不論系統是否在clean等狀態 -o p 非交互式檢查並修復文件系統,對有的問題則立即退出 -o b=xx 用來修復超級塊的錯誤,就是將備份的超級塊內容拷入超級塊中。solaris對 超級塊很重視,它的備份有很多,一般的b=32就可以了,如果不行可以使用命令 newfs -N /dev/rdsk/cxtxdxsx來查看超級塊的位置,其中任何一個備份塊都可使用
3、一些錯誤的情況 一、RECONNECT 表示目錄丟失,可將其存入lost+found中再作轉移。回答yes 二、SUPERBLK壞(注意是壞,不是wrong) 修復見上面(如果是wrong就隨便了,修不修都可以) 三、CLEAR 刪i節點,可能會錯 四、REMOVE 刪文件,一般給出文件名。file=.... 五、ADJUST 調整連接數。實際數與原記錄不符。回答yes 六、SALVAGE 自由列表計數不正確。回答yes (題外話:其實我使用一般都是yes過去的,而且書上說不能在正在mount的文件系統上 操作,否則有可能導致文件系統損壞。但我也沒有碰到過用fsck導致發生錯誤的情況。 不過還是建議大家操作的時候規范一些,否則出錯了不要來找我呀。尤其是考試的時候)
4、df和du命令 最長用的是 df -k看現在系統的掛接和使用情況 du -ks看一個目錄的總容量。
Copyright © Linux教程網 All Rights Reserved