====== 如何在您的系统碟执行 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 套件伺服器。建立的过程可能需要花费几分钟。 当新的伺服器建立好后,将发生错误的伺服器停止。卸载硬碟后 [[zh:hosting:manage-disk:attach-disk|挂载]] 到新的伺服器上。 ==== 卸载系统碟并挂载到新的伺服器上 ==== 一旦系统碟附加到新的伺服器上,挂载的动作就会自动进行。您可以用 "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