發表文章

目前顯示的是 十二月, 2013的文章

ZFS VDEV 虛擬裝置介紹與使用 (3)

這邊的內容是本人參考 ZFS on Linux上面的Document加上自己的使用心得所寫,由於本人學識尚淺若有錯誤在請留言告知~謝謝 <(_ _)> 首先我們必須介紹何謂虛擬裝置(Virtual Devices)或者在ZFS中被廣泛稱為VDEVs,如果你對於RAID已經足夠熟悉,這個觀念對你並不會太過陌生,雖然基本上你並不會將RAID稱之為VDEVs。我們會把一個或多個物理裝置(Physical devices)表示為後設設備或是元設備(Meta devices),在Linux中的軟體RAID (Software RAID)中我們會在/dev/下得到一個名為md0的裝置名稱,它可以被用來表示你所建制的RAID 例如: 一個擁有四個硬碟的RAID-5。這邊我們稱它為VDEV
VDEVs在ZFS中有以下七種型態: 硬碟(預設)~系統上的物理硬體裝置。檔案~已分配大小並有絕對路徑的檔案/映像檔。鏡像裝置(Mirror)~標準軟體RAID-1的鏡像備份裝置。RAIDZ-1/2/3~非標準分散奇偶式軟體RAID (ZFS專屬的特殊RAID)。備用磁碟(Spare)~用來作為ZFS軟體RAID之『熱備份』(Hot Spare)用的硬體裝置。快取(Cache)~用來作為Level 2 快取用的硬體裝置(L2ARC)。Log~一個分離式的Log,ZFS稱之為SLOG或是ZIL(ZFS Intent Log)。 這邊需要注意的事 VDEVs是一個動態的Striped;待我們操作指令後會比較有感覺。底下會由四個硬碟所組成的ZFS striped,這個Striped的總容量大小是看有多少顆硬碟所組成的陣列容量。所以越多顆硬碟加入容量大小就會隨著調整,因此稱為動態Striped。 Zpool的注意事項 這邊只有針對一些關於ZFS的注意事項。 一旦將一個裝置加入VDEV後,此裝置就無法從VDEV中移除。你無法縮小Zpool,只能加大它。RAID-0的速度比RAID-1快,RAID-1又比RAIDZ-1快,RAIDZ-1又比RAIDZ-2快,RAIDZ-2又比RAIDZ-3快。Hot Spare的動態替換功能預設是關閉,除非你去開啟它一個Zpool中若使用較大的硬碟來替換原本裡面較小的硬碟時,Zpool不會自動變更總體容量大小!除非在你建立此Zpool時有開啟resiz…

ZFS on linux file system 使用PPA安裝(2)

由於ZFS以Kernel Module的方式在Linux上面執行,並且目前在Ubuntu這個distribution是沒有官方的ZFS on Linux,所以只能透過PPA的方式來安裝。
何謂PPA?
PPA全名:Personal Package Archive,因為有時候要安裝一些不是Ubuntu 預設的軟體時必須透過第三方的PPA套件庫才能用 apt-get install來安裝。 通常使用add-apt-repositor來增加伺服器,然後再使用apt-get來安裝,但是這必須安裝Python套件才能使用。
在ubuntu下開啟command mode  (desktop版本可以按熱鍵 Ctrl+Alt+t) 輸入並執行:
#sudo apt-get install python-software-properties #sudo apt-get install python-software-properties 安裝完後加入ZFS on Linux 維護團隊的PPA System:
#sudo add-apt-repository ppa:zfs-native/stable 接著更新apt-get:
#sudo apt-get update 接著安裝ZFS:
#sudo apt-get install ubuntu-zfs 這邊就會連帶把SPL、DKMS....等相關套件直接下載原始碼、編譯與安裝。
這邊請注由於ZFS是透過Kernel Module的方式掛載在Linux下,控制掛載的套件為DKMS但是目前DKMS這版的程式有些小問題會在Linux Kernel 3.12.x編譯失敗,如果你是用Ubuntu 13.10( linux kernel 3.11.0-12-generic)的話是能夠使用的,如果是自己更新Kernel到3.12.x版那就只好等ZFS 0.6.3版了。 接著在command mode 下下zfs ? 看看有沒有help資訊。許多資料可以用man zfs來觀看。 #zfs ? #man zfs 下一篇會開始介紹ZFS相關的指令與使用.......待續 ZFS on linux file system簡介 (1) ZFS on linux file system 使用PPA安裝(2)ZFS VDEV 虛擬裝置介紹與使…

ZFS on linux file system簡介 (1)

本篇會先介紹 ZFS file system 的一些背景,後續文章在慢慢介紹如何使用與安裝在linux下。由於本人使用的是ubuntu 13.10 Server X86_64 bit下(ZFS 目前只能安裝在64位元的linux 下),建議記憶體4GB以上。
簡介ZFS 源自Sun Microsystem (目前已被Oracle買下) 為Solaris所開發的檔案系統,由Jeff Bonwick所領導團隊在2006年6月整合進s搬6/06版
不同於一般檔案系統以類似LVM的方式將許多儲存裝置集合成一的Pool(儲存池)並將這些儲存裝置稱為『虛擬裝置(vdev)』,所以Zpool 上的檔案系統可以使用這些vdev的總儲存容量。可以使用qutoa來限制儲存池中單個檔案系統所佔的空間。
本身為128位元的檔案系統,支援最大單一檔案大小為16EB,最大單一Volume size為16EB,支援ACL ( POSIX ACL需0.6.3版之後)。
每個pool最大總體容量為256ZB,單一目錄的檔案數量為248個,264單一zpool的裝置數,264系統的zpool數量。
針對每個檔案給於一個checksum做為類似ECC的功能來驗證每個寫入到storage的檔案是否正確避免silent corruption。
由於使用Copy-On-Write 技術所以本身提供Snapshot與Clone。
Dynamic striping:可以動態加入vdev到pool來加大pool總體容量,但是無法移除vdev來縮小pool
支援檔案加密技術。ZFS本身提供一個工具為scrub來對檔案做Deduplication,把可能在寫入過程重複的檔案刪除,但是此功能滿吃記憶體的所以官方建議要有4GB以上給他用。
ZFS提供一個自己的LVM為ZVOL。
ZFS本身為一個Block Journling(區塊日誌系統),也可以針對file system提供Compression的功能,官方建議Compression以目前的電腦硬體而言非常的廉價所以在建立file system的時候建議設打開
就寫入檔案方面為Allocate-on-Flush,也就是說寫入時會先存在記憶體內,待系統較閒置時在整個寫入。
可以配合SSD作為一個類似L2 Cache的功能(ZFS稱為L2ARC)當作Cache來對檔案處理做加速動作,由於SS…

Ubuntu 上使用 NFS server with ZFS

NFS server是由Sun 這家公司發展出來的系統,主要目的是透過網路讓不同的系統(Unix-like)、不同的機器可以透過網路共享、掛載同一個目錄。詳細內容可以參考鳥哥NFS伺服器

這邊由於我是要透過ZFS這個File System來跟NFS做結合,所以簡單紀錄Ubuntu快速安裝NFS Server;至於ZFS改天有空再上來介紹安裝與使用。

================================================================
 Server 方假設IP為192.168.1.99
================================================================
首先開啟command-line 或是Ctrl+Alt+T開啟指令模式輸入:
  #sudo apt-get install -y nfs-kernel-server

安裝NFS Server時會連同安裝NFS的Client 套件(nfs-common)。

安裝後會從提示看到並未啟動NFS Server,NFS本身透過daemon來做啟動。
至於要分享的資料夾由於只做測試用,所以自己簡單mkdir一個來測試
 #mkdir test_nfs

那由於我們是Server要告訴Server我們要分享的是test_nfs這個資料夾而設定檔案
就放在/etc/exports這個檔案內。於是我們使用vim 來修改內容。
  #vim /etc/exports

開啟後上方有簡單的說明檔若想要針對特殊權限或是針對某個IP在google一下吧。
這個說明檔很簡單的跟你說:
--------------------------------------------------------------------------
/srv/home             hostname1(rw,sync,no_subtree_check)
-------------            -----------------------------------------
你要分享資料     rw/ro 這個很好理解吧
夾的路徑             sync表示一旦有修改就馬上寫入
no_subtree_check我就沒查了 XD

所以我這邊的設定就是:
-----…