如何在您的系統碟執行 fsck(檔案系統檢查)

有時候您的虛擬伺服器的系統碟在執行時出現一些檔案上的錯誤。

在這個情況下,只能夠過執行系統檔案檢查來修正錯誤。

“fsck” 在執行時,被檢查的硬碟必須是未掛載或是唯讀的狀態。如果不是這兩個狀態,會有很大的風險造成資料遺失!在每次檢查前都要注意硬碟的狀態並且注意程式提出的警告訊息

有兩個方法可以執行系統硬碟檢查,區別於您是否有 shell 的存取權限。

如果您可以存取 shell 來執行指令:

您可以登入伺服器並且有 shell 的情況下,您可以直接在伺服器上面執行硬碟檢查。

將硬碟改成唯讀

首先,您需要輸入下列指定讓您的硬碟變成唯讀狀態:

# mount -o remount,ro /

如果出現 mount: / is busy 這樣的訊息。表示有某些程序正在使用硬碟中。您將需要停止或是刪除使用 ”/” 的程序。”lsof /” 這個指令會顯示誰正在使用硬碟的資訊,如下:

# lsof /
COMMAND   PID   USER  FD  TYPE DEVICE SIZE/OFF  NODE NAME
rsyslogd  1237  root  3u  REG  202,1  3762377   3544 /var/log/syslog
rsyslogd  1237  root  5w  REG  202,1    29569  25879 /var/log/messages
rsyslogd  1237  root  6w  REG  202,1  2217748  25872 /var/log/auth.log
rsyslogd  1237  root  7w  REG  202,1 36729452  17350 /var/log/daemon.log
rsyslogd  1237  root  9w  REG  202,1   978650  25878 /var/log/user.log
rsyslogd  1237  root 10w  REG  202,1     8108  12417 /var/log/kern.log

如上,我們可以看到 “rsyslogd” 正在讀寫硬碟中。 因此,您需要停止或中止 “rsyslogd”,其他的程序也是同樣的道理。

接下來,請用 “mount” 來檢查硬碟是否已經是唯讀狀態(“ro”):

# mount
/dev/xvda1 on / type ext4 (ro,noatime,errors=remount-ro)

執行 fsck

請使用下列指令來執行 “fsck”:

# fsck -f /dev/xvda1

系統訊息會看起來很像如下:

fsck from util-linux 2.20.1
e2fsck 1.42.5 (29-Jul-2012)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
DEBIAN7_64: 32869/196608 files (0.2% non-contiguous), 274868/786432 blocks

如果您無法存取 shell 來執行指令

如果您無法在您的伺服器執行 shell,您可以在另外一台 Gandi 伺服器上來做硬碟檢查。這就是虛擬化的好處,您可以將硬碟掛載到另外一台伺服器進行檢查。

要建立一台新的伺服器,您的 Gandi 帳戶必須要足夠的點數。

當您購買一台新的伺服器,請不要選擇 “Obligation” 。這樣,一旦您完成了系統檔案修復,您可以刪除伺服器並且拿回依比例的退款。

一旦您完成,選擇您要的 Linux 套件伺服器。建立的過程可能需要花費幾分鐘。

當新的伺服器建立好後,將發生錯誤的伺服器停止。卸載硬碟後 掛載 到新的伺服器上。

卸載系統碟並掛載到新的伺服器上

一旦系統碟附加到新的伺服器上,掛載的動作就會自動進行。您可以用 “mount” 這個指令來確認是否掛載:

# mount
/dev/xvda1 on / type ext4 (rw,noatime,errors=remount-ro)
/dev/xvdk on /srv/DEBIAN7_64 type ext4 (rw,nosuid,nodev,noatime)

在上述的範例,要檢查的系統硬碟是 'DEBIAN6_64'。先執行下列指令卸載:

# umount /srv/label_of_the_disk

執行 fsck

一旦硬碟被卸載後,您可以使用下列的指令進行檢查程序 “fsck -f /dev/xvdX” ( X 是您的實際要檢查的硬碟)

# fsck -f /dev/xvdk
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
DEBIAN7_64: 32869/196608 files (0.2% non-contiguous), 274868/786432 blocks
上一次變更: 2016/05/31 10:22 (外部編輯)