目录

如何在您的系统碟执行 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