1. 程式人生 > >解決掛載新硬盤原有目錄下文件消失的方法

解決掛載新硬盤原有目錄下文件消失的方法

原因 fault 鏈接 nbsp popu 硬鏈接 全部 存儲 defaults

新硬盤掛載目錄後文件消失解決辦法 版權聲明:本文為博主原創文章,未經博主允許不得轉載。

項目初期用戶文件較少,全部存儲在/home目錄下,/home目錄沒有單獨劃開分區,隨著項目網站做大,用戶文件越來越多,/home目錄不夠空間,想掛載一個新硬盤來負責儲存

但發現新掛載/home到新硬盤時,/home原來數據變空了,這個原因是由於Linux的VFS(虛擬文件系統)機制導致的,正常登錄以後,所看到的各個目錄,文件都是內核在加載時候構造在內存中的VFS目錄樹,而不是直接看到硬盤上的實際目錄樹。當你掛載某個設備到一個VFS掛載點上時(比如/home),系統就把VFS中的這個掛載點/home指向你最後所掛載的那個設備上。那麽你現在訪問該掛載點時,就會看到你最後掛載在此處的設備。而之前所掛載的設備依然在那裏,只不過掛載點/home已經不再指向之前的設備。所以之前的數據是被隱藏了,但並沒有刪除,若umount掛載後,數據又重新回來了

基於這種情況,只能通過跳板的方式把原來的/home數據復制到新的/home分區下了 ,如何添加新硬盤,請查找相關資料

mkdir /new ###跳板目錄

mount /dev/sdb1 /new ###首先掛載跳板目錄

cp -R /home/* /new ###復制/home目錄所有數據到/new先

rm -rf /home/* ####可選,主要為了騰出空間給原來的硬盤

mount /dev/sdb1 /home ###掛載/home 到新硬盤,此時你會神奇的發現之前的/home目錄文件已經全部轉移過來了,也許你會有點疑問,我並沒有復制或移動/new文件到新掛載的/home目錄啊,其實此時的/home目錄相當於/new目錄的硬鏈接,可以測試下mkdir /new/test 你會發現/home目錄也存在test

umount /new ###解除掛載

rm -rf /new ###刪除跳板目錄

echo "/dev/sdb1 /home ext3 defaults 0 0" >> /etc/fstab ###開機啟動掛載目錄

解決掛載新硬盤原有目錄下文件消失的方法