![OpenIndiana - ZFS 存储](https://linux22.com/image/549698/OpenIndiana%20-%20ZFS%20%E5%AD%98%E5%82%A8.png)
我对 Linux / opensolaris 命令行选项比较熟悉,但不是很好。
我正在尝试构建基于 ZFS 的存储,其规格如下:
- 配有 4 个硬盘(SATA 和 IDE)的戴尔 670 机器
- 我已经下载并创建了 Open Indiana USB,可以实时启动并安装
- 我也见过 napp-it (http://www.napp-it.org/index_en.html) 并将其安装在 Oracle Solaris Express(个人家用电脑)上
我有点困惑,有几个问题:
- 启动/安装磁盘是分开的,并且我有额外连接的 4 个内部驱动器,当我进行安装时,如何形成一个包含所有 4 个驱动器的池?
- 如果我采用 napp-it 方式(这对我来说似乎更容易)并通过 Web GUI 形成所有 4 个驱动器的池,我如何通过网络将其共享到我的 Windows 机器,我也有两台 iMac(Apple OSX)。
- 有没有关于 ZFS 以及如何处理/维护它的文档可以供我阅读?
- 您认为还有其他有帮助的建议吗?
我真的很想在 openindiana 上安装 zfs NAS,如果有专家可以提供一步一步的命令行或 napp-it web gui 说明,包括设置与 windows、osx 客户端的共享,我将不胜感激。
答案1
关于 1:在单个磁盘上安装 OpenIndiana(基本安装程序不支持镜像,如果需要,您必须稍后再做)
2. 在 OpenIndiana 运行时创建您的池
3.如果您使用 napp-it,您可以使用池菜单创建池并通过共享菜单共享文件夹(只需点击 ZFS 文件夹 - 共享 smb 列)以及执行其他管理任务,如磁盘、池、共享 acl、作业、快照和复制管理。
4.如果您想通过 afp 和 napp-it(完全由 Web-UI 支持)共享您的文件夹,您需要先运行 napp-it online-afp-installer。请参阅此 pdf。
答案2
我可以告诉你创建池的 CLI 命令。但我不知道 GUI 或 WebUI。
#replace drive0... with your drives
zpool create tank drive0 drive1
#This will create a striped set, no redundancy, single failure = dead pool
zpool create tank mirror drive0 drive1 mirror drive2 drive3
#This will create a stripe set of mirrors, basically RIAD10
zpool create tank raidz drive0 drive1 drive2 drive3
#Thid create a stripe set with single parity, like RAID5
zpool create tank raidz2 drive0 drive1 drive2 drive3
#Thid create a stripe set with double parity, like RAID6
运行zpool status
以确保您运行的命令成功。
您可以使用以下命令更改池的挂载点(默认情况下/tank
,因为这是上面选择的名称)zfs set mountpoint=/another_location tank
它不直接适用于你的情况,但可能会有所帮助,我有一个简短的FreeBSD 的 ZFS 简介在我的博客。
答案3
关于问题 1:ZFS 启动池只能是单个磁盘或简单镜像。由于启动加载程序(x86 上的 GRUB、SPARC 上的 OpenBoot)的限制,您目前无法使用多个镜像或 RAID-Z 池进行启动。如果我没记错的话,Google Summer of Code 提议将 GRUB 2.0 支持纳入 OI,这可能允许从更复杂的池进行启动。目前,如果您想在单个池中使用四个当前磁盘,则需要为根/启动池添加额外的磁盘。
关于问题 #2:请参阅 zfs(1) 手册页中的“sharesmb”属性,了解如何为 Windows 客户端启用 CIFS 共享。MacOS X 也应该能够连接到 CIFS 共享,尽管 NFS 可能也可以在那里使用。
关于问题 3:《ZFS 最佳实践指南》包含大量信息,可帮助您:http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide
关于问题#4:我同意上面的 ewwhite 的观点:如果您想要做的只是构建 NAS,请考虑 NexentaStor。
答案4
不久前我写了一个 OpenIndiana 教程。
另一个功能是简单解释如何锁定它。我的一些朋友和家人在服务器上,因此就我的系统而言,我对他们的信任度几乎不亚于陌生人。
他们终究还是‘用户’。你永远不能相信‘用户’。
- 编辑 -
根据建议,帖子的文本已被剪切和粘贴。
但是,我的博客上的格式更好。所以,无论在哪里,都可以在这里阅读。
自从写这篇文章以来,我做了一些不同的事情,比如删除用户的权限,以及在可访问的目录中仅对 SFTP 所需的工具进行符号链接。我觉得这让机器更安全了。
当我升级到 16-20 托架服务器时,我将重写此内容。
使用 Open Indiana 和 ZFS 创建某种程度上锁定的文件服务器
使用 SSH 安装 OpenIndiana v148
对于此示例,您将需要一个至少有四 (4) 个磁盘的系统
The system disk
This disk is to put the operating system on.
I recommend at least 30GB
The faster the better
The first data disk
This the first disk of a pair.
Reliablilty is paramount
Buy as big as you can afford
The second data disk
This the second disk of a pair.
Reliablilty, again, is paramount
And buy as big as you can afford
AT LEAST ONE BACKUP DISK
RAID, ZFS, OTHER... their purpose is to help with uptime
ZFS also assists in somewhat painlessly growing your storage capacity
Backup is backup, redundant disk strategies are for use and failure
Buy as big as you can afford
按照提示,开启SSH,使用整个系统磁盘。
通过 CLI 更新系统
pkg 映像更新 --require-new-be
安装后,版本 148 中的 GUI 工具无法运行。
查找磁盘名称
格式
使用[CTRL + C]退出格式化命令
创建镜像 zpool
zpool 创建新池镜像 c2t2d0 c2t3d0
检查你的作品
zpool 状态 df -h
创建基本目录结构
newpool|-商业 |-爱好 |-书籍 |-用户|-admin01 | |-asmith|-共享 | |-lsmith|-共享 |-杂项
mkdir /newpool/business/ mkdir /newpool/hobby/ mkdir /newpool/books/ mkdir /newpool/users/ mkdir /newpool/users/admin01/ mkdir /newpool/users/asmith/ mkdir /newpool/users/asmith/shared/ mkdir /newpool/users/lsmith/ mkdir /newpool/users/lsmith/shared/ mkdir /newpool/misc/
如果需要,可以创建任意组
groupadd admin01 groupadd internal groupadd external groupadd common
添加任何不存在的初始用户
请注意,我正在使用两个命令创建两个用户,它们很长,所以文本会换行。
useradd -d /newpool/users/asmith/-c “亚当·斯密”-G 内部,常见 -s /usr/lib/rsh asmith useradd -d /newpool/users/lsmith/-c “卢安·史密斯”-G 外部,常见 -s /usr/lib/rsh lsmith
选项如下:
-d is the home directory /newpool/users/username/ in this example.
-c is the real name, it can really be anything. But it you want it to contain a space then enclose the value in double quotes.
-G list all the groups of the directories you want the people to have access to separated by commas.
At the very least I give membership to the common group -G common .
But maybe I want to give access to the external directory as well -G external,common .
-s /usr/lib/rsh is the 'restricted shell' to prevent a lot of funny business.
为任何不存在的初始用户设置密码
密码 lsmith 密码 asmith
密码 用户名
(输入两次密码--好了!)
(passwd:用户名的密码已成功更改)
修改现有用户
usermod -G admin01,内部,普通admin01
(UX:usermod:admin01 当前已登录,某些更改可能要等到下次登录才能生效。)
您可以在明文/etc/passwd文件中验证用户信息
您可以在纯文本 /etc/group 文件中验证组创建
应用适当的所有者:组属性
chown admin01:admin01 /newpool/business/ chown admin01:peers /newpool/hobby/ chown admin01:peers /newpool/books/ chown admin01:admin01 /newpool/users/ chown admin01:admin01 /newpool/users/admin01/ chown asmith:admin01 /newpool/users/asmith/ chown asmith:admin01 /newpool/users/asmith/shared/ chown lsmith:admin01 /newpool/users/lsmith/ chown lsmith:admin01 /newpool/users/lsmith/shared/ chown admin01:common /newpool/misc/
应用适当的权限
(4 读取 2 写入 1 执行)
(!非所有者:组需要在目录中执行以遍历文件系统)
chmod 700 /newpool/business/ chmod 750 /newpool/hobby/ chmod 750 /newpool/books/ chmod 711 /newpool/users/ chmod 770 /newpool/users/admin01/ chmod 770 /newpool/users/asmith/ chmod 770 /newpool/users/asmith/shared/ chmod 770 /newpool/users/lsmith/ chmod 770 /newpool/users/lsmith/shared/ chmod 750 /newpool/misc/
770 为所有者和组成员提供可写性、可读性、遍历性,而对其他用户则不提供任何权限 - 对于常规用户目录
750 授予所有者写入权限、授予所有者和组成员读取和遍历权限,其他用户无权访问 - 普通用户只能访问只读权限
711 向所有者授予所有访问权限,并允许所有人遍历目录 - 允许普通用户更深入地访问他们可能有权访问的目录树
700 除了所有者之外,任何人都无法访问,甚至无法打开目录 - 完全撤销普通用户的访问权限
NFS 和 Samba
目前,我没有为该服务器设置任何 NFS 或 Samba 共享。
如果有变化,我会更新说明。
设定配额
在我的文件服务器上,我不打算拥有太多用户,甚至更少的用户组。到目前为止,我没有任何配额计划。
如果我确实设定了配额,我可能会根据每个用户的情况进行设定。
zfs 设置用户配额@用户名=100G newpool/users/用户名
但是,ZFS 15 版本也提供用户组配额。
zfs 设置 groupquota@common=250GB newpool/misc
更多用户?
添加新目录
在用户 /newpool/users/username/ 和 /newpool/users/username/shared/ 中创建 mkdir
添加新用户
useradd -d /newpool/users/username/ -c "Fname Lname" -G [逗号分隔列表,]common -s /usr/lib/rsh 用户名
更改所有者:新用户目录的组属性
同上
对新目录应用适当的权限
同上
设置新用户密码
同上