在進行文件系統維護和管理過程中,會碰到這樣一些問題,例如無法安裝文件系統或者無法拆卸文件系統,當文件系統的超級塊被破壞,而無法正常使用文件系統,如何修復rootvg中的主要文件系統,下面就討論如何解決一些常見的文件系統問題。
一、恢復超級塊錯誤
有些用戶在使用fsck或mount命令時,當見到下面的提示信息時,可能是文件系統的超級塊出了問題:
fsck: Not an AIX3 file system
fsck: Not an AIXV3 file system
fsck: Not an AIX4 file system
fsck: Not an AIXV4 file system
fsck: Not a recognized file system type
mount: invalid argument
例如,當用戶安裝一個/allenfs文件系統時,出現下面的錯誤提示:
#mount /allenfs
mount: 0506-324 Cannot mount /dev/lv1 on /allenfs: A system call received a parameter that is not valid.
修復該文件系統時,出現下面錯誤提示,並異常終止:
#fsck /dev/lv1
Not a recognized filesystem type. (TERMINATED)
要解決這個問題,只能用備份的超級塊來恢復主超級塊,我們都知道,在文件系統中,1號邏輯塊是主超級塊,31號邏輯塊是備份超級塊,因此就把31號邏輯塊上的內容寫到1號邏輯塊上去。
例如文件系統對應的邏輯卷為/dev/lv1,則恢復該文件系統的超級塊命令如下:
#dd count=1 bs=4k skip=31 seek=1 if=/dev/lv1 of=/dev/lv1
當恢復完成,就要用fsck命令來檢查文件系統的完整性:
#fsck /dev/lv1
** Checking /dev/rlv1 (/allen)
** Phase 0 - Check Log
log redo processing for /dev/rlv00
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Inode Map
** Phase 6 - Check Block Map
9 files 608 blocks 15776 free
在許多情況下,通過恢復備份超級塊到主超級塊可以解決這個問題,使文件系統處於正常工作狀況下。如果這樣做還不能解決問題,那只能刪除文件系統,然後重新建立文件系統,再恢復備份的數據。
二、無法拆卸文件系統
如果有用戶或程序在一個文件系統中活動,就無法拆卸這個文件系統,當使用拆卸命令時,會提示下面的錯誤:
Device busy 或者 A device is already mounted or cannot be unmounted 例如由於安裝程序的異常終止或其它原因經常會遇到不能正常釋放光驅(光驅是CDROM文件系統)的問題,當用戶再次訪問光盤驅動器時就產生錯誤0514- 062: 指定的設備忙。
按照下面的步驟去解決:
1、檢查用戶自己的當前工作目錄是否在這個文件系統中,如果是,則用cd /命令使當前工作目錄回到根目錄,然後再試著拆卸文件系統;
2、如果還是不能拆卸文件系統,可能在文件系統有文件正在被打開使用,因此在拆卸文件系統之前應該關閉這些文件。有時候可能還有一些進程在使用這個文件系統的資源,可以使用fuser命令來檢查有那些進程仍然在這個文件系統中活動。Fuser命令將顯示在這個文件系統中正在活動的所有進程ID號。下面就 fuser命令使用的例子:
#fuser /dev/cd
/dev/cd: 2910 3466
如果使用fuser –u /dev/cd將在進程號後指出用戶名。如果root用戶用fuser –k /dev/cd命令,則給這些進程發出SIGKILL信號,來殺死這些進程。然後用kill命令將這些正在活動的進程殺死,然後再試著拆卸文件系統。例如:
#kill –9 2910 3466
這時您可以用下面命令檢查設備的狀態是否為可用:
#lsdev -Cc cdrom
或者
#lsdev –C –l cd0
(若為其它文件系統,將cd0換為文件系統的邏輯名)如果設備狀態為可用,您就可以使用該設備或卸載文件系統。
3、如果文件系統仍然處於忙狀態,不能被拆卸,可能是在這個文件系統中加載了一個內核擴展,這種情況用fuser命令無法檢查到內核擴展,系統提供了一個檢查內核擴展的工具——genkex,用這個命令可以顯示目前已加載的所有擴展內核。
4、如果在一個文件系統還安裝了另一個文件系統,則要直接拆卸這個文件系統也是不能成功,必須先將該文件系統中所有安裝的文件系統拆卸掉,才能拆卸自己。使用mount命令查看有那些文件系統還在安裝在系統上,然後根據安裝點將安裝在這個文件系統中的所有其它文件系統用umount命令拆卸掉,再試著拆卸自己。
三、 無法刪除文件系統
當一個文件系統可以用mount命令安裝或用unmount拆卸,但是無法刪除該文件系統,在刪除時,系統會報如下錯誤:
0516-306:get lvodm: unable to find in the device confgiguration data. 發生此錯誤的原因可能是ODM數據庫中的定義與實際不一致。可以用下面命令檢查該文件系統的類型:
#lsvg -l rootvg
若類型顯示為???,則用synclvodm -P rootvg 和 syncvg -v rootvg 命令對卷組進行同步,之後,再用命令 lsvg -l rootvg 顯示出正確的文件類型。此時可以成功刪除該文件系統。
四、 修復rootvg中的主要文件系統和日志
如果要檢查和修復rootvg中的/、/tmp、/usr、/var文件系統,必須先將它們卸載,然而在正常的多用戶環境下是無法卸載這些文件系統,要完成這些工作必須在維護模式下進行。
首先重啟動系統,在系統引導時按F6鍵(對於圖形方式)或數字“6”鍵(對於字符方式)進入到系統的在線診斷(Online Diagnostics)服務模式,選擇“5”進入單用戶模式,即維護模式。
如果當前的AIX是AIX 3.2.4或3.2.5版本,還必須設置ODMDIR環境變量,命令如下:
#ODMDIR=/etc/objrepos;export ODMDIR
運行fsck命令清理檢查上面提到的文件系統,命令如下:
#fsck /dev/hd4
#fsck /dev/hd2
#fsck /dev/hd3
#fsck /dev/hd9var
當然也可使用其fsck選項。如果rootvg中缺省文件系統的日志(JFSLOG)即/dev/hd8有問題,這時也可以重建它,命令如下:
#logform /dev/hd8
然後會提示您是否繼續初始化,如果回答y,以前在/dev/hd8上的日志信息就被清掉。初始化成功後,輸入exit命令就退出單用戶模式,根據提示按回車進入多用戶模式,這些文件系統會自動被安裝上。最後用shutdown命令關閉系統。