如果您的数据没有冗余,没有备份,它几乎是不存在的。
大公司将处理任何数据量巨大的关键交易数据,采取数据冗余和备份措施确保数据安全。已经成为行业内的标准。但是对于中小型公司、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>
在我的这种情况下,挂在点是 ‘/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
相关链接:
http://open-zfs.org/wiki/System_Administration
https://www.freebsd.org/doc/zh_CN.UTF-8/books/handbook/filesystems-zfs.html