2011-12-02

伺服器跨磁區連結(修改)

一個困擾頗久的問題,今天終於解決

Apache 伺服器只能有一個跟目錄,而軟體安裝預設多在磁碟 C,整個伺服器架構也因此跟著在磁碟 C 了!
1. C 是電腦系統磁區,又再包括伺服器資料,實在擁擠。
2. 此外,若網站提供軟體下載,某些軟體因體積龐大,也要放在 C,則 C 的空間將無法限量。

方法一:
利用 NTFS 磁區的掛載特色,在 Windows 的磁碟管理中,可以設定
image


某個磁區掛在伺服器根目錄上,變相當於整個伺服器資料都是在另一個磁區上,空間的問題大大可以解決!

但問題是,NTFS 磁碟的這項功能僅限於「將『磁區』掛於某資料夾」,如果只想要將「『某磁區』的『某資料』夾掛上分享」,這就無效了!!

利用簡單的「建立捷徑」
image
是沒有用的
網頁上點此捷徑會變成
image
如何解決這個問題呢!?

方法二:
Junction、SoftLink、HardLink 連結
前一篇對 HardLink 的描述有誤,這裡重新整理,並將三種連結一次說明。

連結方式

代號

對象

Junction(JL)

/J

資料夾
SoftLink(SL)

/D

檔案、資料夾
HardLink(HL)

/H

檔案

[SL、JL 示範]
在 C 目錄下,我們對名稱為「1」的資料夾進行 SL、JL,分別得到新資料夾「3」、「4」得到結果如下
image
兩者的差異在 Windows 的外觀上無法識別出來,但其「內容有差」
「3」(SL)內容
image
「4」(JL)內容
image
「3」多了一個「捷徑」!與一般「建立捷徑」是一樣的結果。
根據 Microsoft 的 Mklink 說明,差異僅於 SL 只有 admin 能使用!

SL、JL 能完成資料夾、檔案的連結,讓網站架設時能夠讀取跨磁區資料
如下圖中,資料夾「3」、「4」即為 SL、JL 建立的資料夾均能夠由網頁連結,但一般捷徑 (.lnk) 是沒有辦法的。
image
SL、JL 的連結方式與一般捷徑相同,一旦原始檔案被移除,連結也就失效了
image
因為 SL、JL 只是捷徑,因此建立出來的只是 inode,並無實際的新檔案複製,故資料大小問題。

[HardLink (HL)]
根據鳥哥的說法是建立一個新的 inode;兩個目錄連結到同一個檔案,刪除任何一邊,檔案還是存在的
(鳥哥)
但是,HL 只能針對檔案進行連結,無法對目錄、亦無法跨磁區

要特別注意一點,HL 建立的檔案從外觀上也無法察看出來是由 HL 所建立的連結!!
image
HL 檔案有大小!與原來檔案大小相同!(這只是因為 inode 資料相同)但實際上在磁區中並非存在另一個檔案,所以對檔案直接察看內容是有大小,但察看整個磁區的大小會發現沒有變化

 

[SL、JL、HL 使用方法]
開啟 cmd
image
以 SoftLink 在 C:\2 資料夾內建立 22.java 檔案,連結到 11.java
(JL、HL 方法相同)

在 Directory Opus 建立 softlink、junction、hardlink 連結方法
DOpus 建立按鍵的方式不再說明,主要如下圖紅框中的語法
image
三種連結,分別為
Copy MAKELINK=softlink
Copy MAKELINK=junction
Copy MAKELINK=hardlink
建立三顆按鍵image(圖案是自己做的)

Blogger 的標籤:

1 則留言:

雜言雜語 提到...

mklink 語法使用時需注意
欲建立的資料夾不可以先存在 (上面的 software),否則會失敗!