[譯]How-to set up a redundant storage pool with ZFS and Ubuntu

如果您的數據沒有冗餘,沒有備份,它幾乎是不存在的。

大公司將處理任何數據量巨大的關鍵交易數據,採取數據冗餘和備份措施確保數據安全。已經成爲行業內的標準。但是對於中小型公司、SOHO(小型辦公室、家庭辦公室)來說,他們無法承受數據丟失所造成的損失。

不像大公司,許多小型企業,SOHO的和個人工作室甚至沒有IT部門,更別說CTOs和CIOs了。

我曾親自處理龐大的數據 – 我有超過6TB的存儲。我在家裏有一臺文件服務器;
上面有我儲存的家庭照片和我的所有文檔,這是我生命中最重要的部分之一。

這種方法有很多優勢:
因爲我所有的數據都存儲在同一個位置上,我可以很容易地管理,維護和保護它。
這是一個集中式的文件服務器,因此任何人在我的本地網絡可以訪問這些文件。
我可以在多個設備上工作 – 筆記本電腦,PC,平板電腦,手機,而不用擔心他們之間複製文件。
如果我主要的個人電腦或筆記本電腦壞了,我不用擔心搶救存儲在計算機上的數據。因爲沒有什麼是永遠保存在我家這樣的設備。

但是,讓所有的雞蛋放在一個籃子裏,這不是一個好主意。所以,你必須給它添加冗餘,確保有多個物理備份。

ZFS 就是答案

這裏有兩個優秀的文件系統可以做這個工作:ZFS 和 Btrfs。
BTRFS是非常新的,仍處於開發狀態,所以我不建議使用它。
ZFS,在另一方面,是經過時間考驗的,穩定的和極其豐富的功能:
它包括存儲池(zpool),寫入時複製,快照,數據完整性驗證,自動修復,保護功能等。
但也有各地的ZFS一些授權問題,我已經寫了以前。

起初,我想到了FreeNAS,跑了一段時間,但我更喜歡使用Linux和完全控制我的服務器。所以我選擇了ZFS文件系統與Ubuntu。

以下是如何在Ubuntu上開始使用ZFS。
要求:
14.04 Ubuntu server
至少有三個硬盤驅動器。一個最爲 Ubuntu系統的,它必須在一個單獨的SSD或硬盤驅動器,兩個用於存儲池進行安裝。
內存至少8GB(1GB爲Ubuntu,然後每增加1TB數據增加1GB RAM)
任何像樣的CPU。

建議:
我強烈建議任何文件服務器上使用 Ubuntu的LTS(長期支持)版本。
要創建RAID-Z,你最少需要兩個具有相同的存儲容量的SATA硬盤。如果您有不同容量的硬盤,總存儲將是較小的硬盤驅動器的大小。
我強烈建議有第三個外部硬盤驅動器,這樣你可以把你的數據定期備份。

一旦你有硬盤驅動器,就可以安裝ZFS了。雖然ZFS預裝在即將到來的Ubuntu16.04的發佈,我們需要在14.04安裝 PPA.

sudo apt-add-repository ppa:zfs-native/stable

之後更新 Repo

sudo apt-get update

現在安裝軟件和加載模塊:

sudo apt-get install ubuntu-zfs

sudo /sbin/modprobe zfs

接着運行下面的命令檢查在系統上是否有“pools”或硬盤驅動器存在:

sudo zfs list

輸出的結果應該是 no datasets available。我們知道這裏沒有創建數據集,但是我們想檢驗它是否安裝正確。

現在是創建磁盤驅動器存儲池的時候了。因爲您需要在您的系統上識別驅動器。所以第一次運行 lsblk 命令來識別每個驅動器。

sudo lsblk

記下塊設備的名稱,它應該是 ‘sda, sdb, sdc,’

現在,我們需要找到每個驅動器的 ID, 我們將在驅動器的“池”中使用它。

sudo ls -l /dev/disk/by-id/

這個命令將會給你一段很長的輸出。這是我的系統的一個例子(在我的Ubuntu系統中,我已刪除輸出的驅動器 SDA。在我的情況下,我將池中使用兩個驅動器SDC和SDD):

swapnil@nas:~$ sudo ls -l /dev/disk/by-id/
total 0
lrwxrwxrwx 1 root root 9 Feb 20 17:48 ata-WDC_WD40EFRX-68WT0N0_WD-WCC4E0318132 -> ../../sdc
lrwxrwxrwx 1 root root 9 Feb 20 17:48 ata-WDC_WD40EFRX-68WT0N0_WD-WCC4E4LRJ111 -> ../../sdd
lrwxrwxrwx 1 root root 9 Feb 20 17:48 wwn-0x50014ee20922e8a8 -> ../../sdc
lrwxrwxrwx 1 root root 9 Feb 20 17:48 wwn-0x50014ee20b453ec7 -> ../../sdd

From this output note down the IDs that start with ‘wwn’, so in my case it was ‘wwn-0x50014ee20922e8a8’ and ‘wwn-0x50014ee20b453ec7’

現在讓我以這種格式創建 zpool:

zpool create -f -o ashift=12 -m <mount_point> <pool_name> raidz <ID_of_the_first_drive> <id_of_the_second_drive>

1

zpool create -f -o ashift=12 -m <mount_point> <pool_name> raidz <ID_of_the_first_drive> <id_of_the_second_drive>

在我的這種情況下,掛在點是 ‘/mnt/bank’, pool 是 ‘swapool’

zpool create -f -o ashift=12 -m /mnt/bank swapool raidz wwn-0x50014ee20922e8a8 wwn-0x50014ee20b453ec7

一旦做檢查狀態,這可能需要一段時間。

sudo zfs list

這一次,你會得到一些輸出,這意味着你的 pool 創建成功。現在這兩個硬盤將鏡像文件。爲了進一步增加冗餘,你可以添加更多的驅動器。

在開始將文件複製到 pool 之前,您還有更多的工作要做。您必須創建 “數據集”,並將這些數據存儲在這些數據集內。數據集是ZFS的功能創建的像目錄或文件夾一樣。您可以爲不同的文件類型創建一些數據集或只創建一個數據 集。一旦創建了一個數據集,您就可以在裏面創建普通的目錄或文件了。

這是創建數據集的命令:

sudo zfs create <pool_name>/directory_name

這裏是在我的系統中的例子,我對不同類型的文件創建了不同的數據集:

sudo zfs create swapool/images
sudo zfs create swapool/music
sudo zfs create swapool/movies
sudo zfs create swapool/documents
sudo zfs create swapool/ebooks

這樣,你將爲您的數據有一個非常有組織的結構。

一旦創建了所有所需的數據集,您就需要在池中更改文件權限,以便正常的系統用戶可以對其進行寫入。

sudo chown -R user_name:group_name /path_of_pool

Example:

sudo chown -R swapnil:users /mnt/bank/

現在您的所有配置都配置完畢。開始將您的文件存儲在新創建的冗餘文件存儲中。在後續的文章中,我將涉及到此存儲的定期維護,如何自動備份驅動器上的數據,並通過本地網絡訪問此存儲,將其變成一個文件服務器。

源文:How-to set up a redundant storage pool with ZFS and Ubuntu


 License:Attribution-NonCommercial-NoDerivatives 4.0 International
 本文出自 Suzf Blog。 如未註明,均爲 SUZF.NET 原創。
 轉載請註明出處:http://suzf.net/thread-0905-1075.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章