星期四, 1月 17, 2013

xfs repair in root fs

用 xfs 好一陣子了,都沒有發生過什麼問題,但今天在做系統 update 的時候居然發現有硬碟有資料毀損的情況,而且還是 root fs... 頓時背脊都涼了一半,才發現 xfs 居然都沒有自己 repair(但說實在其實那些會自己修復的 fsck 有時候也蠻恐怖的)。

xfs 在開機 fsck 的時候並不會做任何動作,所以有問題的話要自己用 xfs_check 及 xfs_repair 做檢查及修復。

但 xfs_check 時需要 fs 在 read-only 的狀況下,xfs_repair 需要 fs 不被 mount 的狀況下才能動作,但這次是 root filesystem... umount 了就不能執行 xfs_repair 了阿!
首先想到的是用 ubcd 或其他 livecd 來做但有點麻煩,翻了一下 man 看到 xfs_repair 的 -d 選項:
Repair dangerously. Allow xfs_repair to repair an XFS filesystem mounted read only. This is typically done on a root fileystem from single user mode, immediately followed by a reboot.
有多 dangerous 我是不知道,但 google 了一下好像也沒發現過有什麼災情,反正 /home 還在,大部分的 config 都在這裡了,大不了重灌嘛!
於是就豁達的重開機到 recovery mode:(/dev/sda1 是我的 root device)
$ mount -oremount,ro /
$ xfs_check /dev/sda1
$ xfs_repair -n /dev/sda1 #測試, 看到好長的一串要修復蠻抖的...
$ xfs_repair /dev/sda1 #但指令還是拍了下去
然後重開機就正常了(汗...(至少看起來沒什麼問題,雖然 /lost+found 有 93 個檔案,但大部分好像都是每刪除乾淨的而已)

星期三, 1月 16, 2013

vim command/search history

用 vim 用了快十年了吧,對於這個一直會不小心跳出來的功能總是覺得有點煩。今天終於是受不了了,查了一下發現是 command/search history 的功能,觸發的方式是 q: 及 q/, 前者跟 :q 太接近了難怪常常莫名其妙的跑出來。本來是要找到把這個功能關掉的方法但突然覺得好像還有點用處,於是乎就研究了一下。

他作用的法式就跟很多 plugin 一樣,會開啓一個 split window 來瀏覽過去的記錄,這個 window 裡面可以搜尋,找到要重複的 cmd/search 按下 enter 就可以了。

比較有趣的地方是,vim 的 cmdline mode 提供的移動指令實在不是很符合 vim 的精神,但用 cmdline window 就可以做到這件事:假如我在打一串很長很複雜的指令,打到一半發現中間有錯,這時候可以按 C-f 打開 cmdline window,剛剛輸入的指令會在最下面,這邊就可以用 vim 的其他移動方法來做修改,修改完再按 enter 就會送出了,同時,在這個 window 裡也可以用 <tab> 來 auto-complete command (多選的話會有 menu)。

更多詳情可以參考 :help cmdline-history