linux 系统盘无法ls,系统故障排除
1.系統(tǒng)故障排除
1)模擬磁盤/dev/sda的MBR故障,并執(zhí)行修復(fù)
01.備份磁盤/dev/sda的MBR扇區(qū)
選擇一個(gè)/dev/sda以外的文件系統(tǒng)(比如/dev/sdb1)來存放備份文件:
[root@svr5 ~]# df -hT/home//選擇/dev/sdb1存放備份
文件系統(tǒng)???????? 類型???? 容量???? 已用???? 可用???? 已用%???? 掛載點(diǎn)
/dev/sdb1???? ext3????19G????? 173M???? 18G?????1%? ????/home
使用dd命令復(fù)制/dev/sda設(shè)備的第一個(gè)扇區(qū)(512字節(jié)):
[root@svr5 ~]# dd if=/dev/sdaof=/home/sda.mbr bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.013492 seconds,37.9 kB/s
確認(rèn)已存放到/dev/sdb1下的備份文件:
[root@svr5 ~]# ls -l /home/sda.mbr
-rw-r--r-- 1 root root 512 10-15 15:50/home/sda.mbr
02.模擬對(duì)MBR扇區(qū)的破壞
使用dd命令對(duì)MBR扇區(qū)清零,然后重啟系統(tǒng):
[root@svr5 ~]# dd if=/dev/zero of=/dev/sdabs=512 count=1//破壞MBR
1+0 records in
1+0 records out
512 bytes (512 B) copied, 2e-05 seconds, 26MB/s
[root@svr5 ~]# reboot//重啟系統(tǒng)
.. ..
重啟系統(tǒng)后,因磁盤sda的MBR被破壞而無法找到分區(qū)表,從而也就無法加載Linux操作系統(tǒng)。如果網(wǎng)絡(luò)啟動(dòng)或光盤啟動(dòng)也失敗,則提示“Operating System not found”而停滯,如圖-2所示。
圖-2
03.進(jìn)入RHEL 5光盤的救援模式
修改RHEL 5虛擬機(jī)的光盤設(shè)置,將其改為RHEL 5系統(tǒng)的.iso安裝鏡像文件,比如rhel-server-5.9-x86_64-dvd.iso,如圖-3所示。
圖-3
然后重啟虛擬機(jī)電源,默認(rèn)將從光盤引導(dǎo)。待出現(xiàn)“boot:”提示界面時(shí),輸入“l(fā)inux rescue”指令,如圖-4所示,按回車鍵。
圖-4
此后將逐步進(jìn)入RHEL 5光盤提供的救援模式,大部分交互接受默認(rèn)即可。
首先選擇要使用的語言,救援模式為命令行、不支持中文,因此接受默認(rèn)的“English”,按Tab鍵定位到“Ok”后回車,如圖-5所示。
圖-5
然后選擇要使用的鍵盤類型,也接受默認(rèn)設(shè)置,如圖-6所示。
圖-6
接下來選擇是否使用網(wǎng)絡(luò),一般選擇“No”,如圖-7所示,否則根據(jù)提示設(shè)置好網(wǎng)絡(luò)參數(shù)即可。
圖-7
再接下來會(huì)嘗試自動(dòng)查找待修復(fù)的Linux系統(tǒng),如果找到的話會(huì)自動(dòng)將根分區(qū)掛載到光盤臨時(shí)系統(tǒng)的/mnt/sysp_w_picpath目錄。這里因?yàn)镸BR損壞而無法讀取分區(qū)表,所以肯定是找不到的啦,接受默認(rèn)的“Continue”繼續(xù)或“Skip”跳過都可以,如圖-8所示。
圖-8
提示是否初始化磁盤并刪除所有數(shù)據(jù)時(shí)(如果有多塊磁盤會(huì)提示多次),均選擇“No”,如圖-9所示。
圖-9
找不到待修復(fù)的Linux系統(tǒng)時(shí),會(huì)提示用戶知曉,如圖-10所示,回車確認(rèn)即可。
圖-10
最終用戶將獲得一個(gè)在內(nèi)存中運(yùn)行的臨時(shí)Shell環(huán)境,如圖-11所示,從而可以執(zhí)行大部分系統(tǒng)管理命令,進(jìn)一步完成各種修復(fù)任務(wù)。
圖-11
04.在救援模式下通過備份文件修復(fù)MBR
創(chuàng)建掛載點(diǎn)文件夾,并掛載存放備份文件的/dev/sdb1分區(qū),如圖-12所示,確認(rèn)備份文件。
圖-12
使用dd命令執(zhí)行恢復(fù),讀取備份文件sda.mbr,覆蓋磁盤/dev/sda的第一個(gè)扇區(qū),如圖-13所示。
圖-13
完成后,執(zhí)行exit退出臨時(shí)Shell環(huán)境,系統(tǒng)將會(huì)自動(dòng)重啟,如圖-14所示。重啟后原有Linux系統(tǒng)即可恢復(fù)正常。
圖-14
注意:萬一重啟后出現(xiàn)“GRUB_”提示符后停止、仍然無法進(jìn)入系統(tǒng),如圖-15所示,請(qǐng)參考接下來的GRUB修復(fù)操作。
圖-15
2)模擬GRUB文件丟失故障,并執(zhí)行修復(fù)
01.??備份grub.conf配置文件,破壞GRUB引導(dǎo)程序
在正常的Linux操作系統(tǒng)中,轉(zhuǎn)移grub.conf配置文件并重啟后可模擬引導(dǎo)故障,或者像前一節(jié)的MBR示例中,有時(shí)恢復(fù)不完整也會(huì)出現(xiàn)異常,癥狀如圖-15所示。
如果是手動(dòng)轉(zhuǎn)移grub.conf配置文件,可參考以下操作:
[root@svr5 ~]# mv/boot/grub/grub.conf /boot/grub/grub.conf.bak
//轉(zhuǎn)移grub.conf文件
[root@svr5 ~]# ls -lh/boot/grub/grub.conf//確認(rèn)轉(zhuǎn)移結(jié)果
ls: /boot/grub/grub.conf:沒有那個(gè)文件或目錄
[root@svr5 ~]# reboot//重啟系統(tǒng)
重啟后會(huì)停滯在“grub>”提示符,因找不到內(nèi)核等引導(dǎo)文件而無法進(jìn)入系統(tǒng)。這個(gè)屬于MBR扇區(qū)中的引導(dǎo)程序好使,但找不到有效的啟動(dòng)配置:
grub>//grub啟動(dòng)配置丟失后,啟動(dòng)時(shí)的停滯提示
02.??重建GRUB引導(dǎo)程序、恢復(fù)grub.conf配置文件
參考前一節(jié)以RHEL 5光盤啟動(dòng),并進(jìn)入“l(fā)inux rescue”救援模式。注意當(dāng)提示是否探測(如圖-8所示)待修復(fù)的操作系統(tǒng)時(shí),選擇“Continue”,找到并掛載成功后會(huì)提示用戶確認(rèn),如圖-16所示。
圖-16
這樣在修復(fù)時(shí)就可以直接到/mnt/sysp_w_picpath找到原來Linux的根目錄了。
在救援模式的臨時(shí)Shell環(huán)境下,執(zhí)行“chroot /mnt/sysp_w_picpath”切換到待修復(fù)Linux的根環(huán)境,然后從備份恢復(fù)grub.conf配置文件,并執(zhí)行“grub-install /dev/sda”在磁盤sda上重建GRUB引導(dǎo)程序,如圖-17所示。
圖-17
確認(rèn)修復(fù)完畢后,執(zhí)行兩次exit(先退出chroot環(huán)境、再退出救援模式),系統(tǒng)將會(huì)自動(dòng)重啟,如圖-18所示。重啟后原有的Linux系統(tǒng)即可恢復(fù)正常。
圖-18
3)模擬EXT3分區(qū)超級(jí)塊故障,并執(zhí)行修復(fù)
重新進(jìn)入修復(fù)好的Linux系統(tǒng),選擇/dev/sdb1做超級(jí)塊破壞實(shí)驗(yàn),了解相關(guān)的故障現(xiàn)象及修復(fù)辦法。
01.備份/dev/sdb1的超級(jí)塊
理論上此步驟可不做,保險(xiǎn)起見還是做一下(必要時(shí),其中的文檔最好也備份),萬一后面修復(fù)不好還有機(jī)會(huì)還原。若要破壞EXT3文件系統(tǒng)的超級(jí)塊,一般將前4個(gè)扇區(qū)dd清零就差不多了,所以備份也保存這4個(gè)塊:
[root@svr5 ~]# dd if=/dev/sdb1of=/root/sdb1.sblock count=512 count=4
4+0 records in
4+0 records out
2048 bytes (2.0 kB) copied, 4.5e-05seconds, 45.5 MB/s
[root@svr5 ~]# ls -l /root/sdb1.sblock???????????? //確認(rèn)備份文件
-rw-r--r-- 1 root root 2048 10-15 17:31/root/sdb1.sblock
02.破壞/dev/sdb1的超級(jí)塊
使用dd命令將/dev/sdb1的前4個(gè)扇區(qū)清零:
[root@svr5 ~]# dd if=/dev/zero of=/dev/sdb1count=512 count=4
4+0 records in
4+0 records out
2048 bytes (2.0 kB) copied, 2.7e-05 seconds,75.9 MB/s
然后卸載/dev/sdb1,嘗試重新掛載到/home時(shí)將會(huì)失敗,因?yàn)槌?jí)塊被破壞而導(dǎo)致無法識(shí)別該設(shè)備上的文件系統(tǒng):
[root@svr5~]# umount /dev/sdb1????????????????????//若已經(jīng)掛載,則先卸載
[root@svr5 ~]# mount/dev/sdb1 /home???????????????? //重新掛載失敗
mount: you must specify the filesystem type
03.修復(fù)建立在/dev/sdb1上的EXT3文件系統(tǒng)
使用fsck命令可執(zhí)行修復(fù),通過“-t ext3”指定文件系統(tǒng)類型、“-y”自動(dòng)對(duì)出現(xiàn)的交互選擇“yes”確認(rèn):
[root@svr5 ~]# fsck -y -t ext3 /dev/sdb1
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
Couldn't find ext2 superblock, tryingbackup blocks...
/dev/sdb1: recovering journal
fsck.ext3: unable to set superblock flagson /dev/sdb1
執(zhí)行第2次修復(fù)(第1次因塊數(shù)據(jù)不完整,可能只修復(fù)部分):
[root@svr5 ~]# fsck -y -t ext3 /dev/sdb1
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
/dev/sdb1 was not cleanly unmounted, checkforced.
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
Free blocks count wrong for group #2(32257, counted=32249).
Fix? yes
Free blocks count wrong for group #3(31232, counted=31224).
Fix? Yes
.. ..
Directories count wrong for group #143 (0,counted=4).
Fix? yes
Free inodes count wrong (2443189, counted=2443058).
Fix? yes
/dev/sdb1: ***** FILE SYSTEM WAS MODIFIED*****
/dev/sdb1:142/2443200 files (1.4% non-contiguous), 125963/4885760 blocks
根據(jù)實(shí)際情況,可能還需要再執(zhí)行幾次fsck,直到最后提示“clean”為止,表示該文件系統(tǒng)已經(jīng)完好無損:
[root@svr5 ~]# fsck -y -t ext3 /dev/sdb1
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
/dev/sdb1: clean, 142/2443200 files,125963/4885760 blocks
檢查完畢后,再次將其掛載到/home/目錄,確認(rèn)掛載結(jié)果:
[root@svr5 ~]# mount /dev/sdb1 /home???????????????? //掛載成功
[root@svr5 ~]# ls/home?????????????????????? ??????//查看掛載的目錄內(nèi)容
aquota.group kdev nick pingpingsda.mbr-20131015 vina
aquota.user kenthy obama rsync.test stu20zengye
hunter lost+found pangpang sda.mbr stu21
04.增加單用戶模式密碼
在啟動(dòng)項(xiàng)前增加但用戶模式密碼
[root@RHEL5 ~]# vim /boot/grub/grub.conf
hiddenmenu
password 123456
titleRed Hat Enterprise Linux Server (2.6.18-348.el5)
4)系統(tǒng)文件丟失(/etc/inittab)
1)備份/etc/inittab文件
[root@RHEL5~]#cp /etc/inittab? /root/
2)刪除/etc/inittab文件
[root@RHEL5~]#rm -rf /etc/inittab
3)重啟、查看故障現(xiàn)象(INIT:No inittab file found)
4)修復(fù)此故障
a)進(jìn)光盤救援模式
boot:linux rescue
b)chroot? /mnt/sysp_w_picpath
Sh-3.2#chroot?/mnt/sysp_w_picpath
c)檢查/etc/inittab文件屬于哪個(gè)包
Sh-3.2#rpm -qf /etc/inittab
initscripts-8.45.42-1.el5_8.1
d)將RHEL5.9光盤設(shè)備掛載到/mnt/dvd/
Sh-3.2#mkdir /mnt/dvd
Sh-3.2#mount /dev/sr0(hdc) /mnt/dvd
e)根據(jù)步驟c查詢結(jié)果,從光盤掛載點(diǎn)安裝對(duì)應(yīng)的包
Sh-3.2#rpm -ivh --force
/mnt/dvd/Server/initscripts-8.45.42-1.el5_8.1.x86_64.rpm
Preparing...??????????? ?###########################################[100%]
1:initscripts??????????? ###########################################[100%]
f)exit 退出chroot環(huán)境
Sh-3.2#exit
g)exit 退出救援模式,自動(dòng)重啟、修復(fù)完成
Sh-3.2#exit
01.磁盤或分區(qū)的壞道檢測
故障現(xiàn)象
--讀取磁盤數(shù)據(jù)時(shí),發(fā)出異常聲響
--訪問某個(gè)文件時(shí),讀取出錯(cuò)或提示文件損壞
--新建立的分區(qū)無法執(zhí)行格式化
--讀寫該磁盤時(shí)頻繁司機(jī)
1)檢查分區(qū)/dev/sda1是否存在壞道
[root@RHEL5 ~]# badblocks -sv /dev/sdb
Checkingblocks 0 to 20971520
Checkingfor bad blocks (read-only test):??????????????0/?? done
Passcompleted, 0 bad blocks found.
02.誤刪除文件恢復(fù)
1.安裝extundelete 軟件包
yum -y groupinstall開發(fā)工具 開發(fā)庫 ??//安裝開發(fā)工具
./configure ????????????????????????????????????????? //配置
ls
make && make install?????????????????????????????? //編譯安裝
echo $??????????????????????????????????????????????????????? //查看狀態(tài)
cd
rm /boot/vmlinuz-2.6.18-348.el5 ????? //刪除測試
Umount? /boot
extundelete --inode 2 /dev/sda1???????? //查看可恢復(fù)文件
extundelete --restore-all /dev/sda1??? //回復(fù)所有可恢復(fù)文件
ls RECOVERED_FILES/????????????????????????????????????? //查看恢復(fù)目錄
Mount /dev/sda1 /boot
mv RECOVERED_FILES/vmlinuz-2.6.18-348.el5? /boot/ //移動(dòng)刪除文件
ls /boot/
5)i節(jié)點(diǎn)測試
i節(jié)點(diǎn)耗盡驗(yàn)證(盡管有磁盤空間,但已無法寫入文件)
建一個(gè)小分區(qū)(40MB),
格式化:mkfs -text3 /dev/sdb10
|-->創(chuàng)建超級(jí)塊(superblock)—— inode數(shù)量、blocks數(shù)量
查看超級(jí)塊:tune2fs -l /dev/sdb10
快速消耗i節(jié)點(diǎn)資源:
mkdir? /mnt/testdir
mount? /dev/sdb10? /mnt/testdir
for? i? in $(seq 15000) ; do? touch?"/mnt/testdir/file$i.txt"?;? done
|-->設(shè)一個(gè)超過可用i節(jié)點(diǎn)數(shù)量的數(shù)值
** seq命令用來生成一個(gè)數(shù)字序列,for是一個(gè)循環(huán)語句(Shell課程會(huì)詳細(xì)介紹)
** inode,i節(jié)點(diǎn)—— 檔案編號(hào),每一個(gè)文件都需要
**文件名 --> i節(jié)點(diǎn) --> 文件內(nèi)容
6)wget下載整個(gè)網(wǎng)站:
wget?-crpk -np?http://www.lfs.org.cn/book/index.html
選項(xiàng)說明:
-r,--recursive:遞歸下載所有鏈接
-p,--page-requisites:包括頁面顯示必需的目標(biāo)
-k,--convert-links:下載完成后轉(zhuǎn)換鏈接目標(biāo)以便本地瀏覽
-np,--noparent:只向下遞歸,防止下載父級(jí)鏈接或外部鏈接等網(wǎng)頁對(duì)象
-c,--continue:支持?jǐn)帱c(diǎn)續(xù)傳
-t,--tries=:指定重試次數(shù)
總結(jié)
以上是生活随笔為你收集整理的linux 系统盘无法ls,系统故障排除的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python爬取b站排行榜_实时爬取B站
- 下一篇: linux将字符串转小写_小猿圈总结Li