问题标签 [zfs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
550 浏览

centos - 使用不同 LUN 号挂载的 ISCSI 目标

在 centOS 主机上,我可以使用以下命令从 SAN 中发现 ISCSI 目标:

iscsiadm -m discovery -t sendtargets -p IPOfMySan

从上一个命令的结果列表中登录指定目标就可以了。

但是当我检查时:

ls -l /dev/disk/by-path/

这真是一团糟。

我的目标在线但多次出现不同的 LUN 编号,我的条目与发现的目标数量一样多。

iqn.(..)-eb1ecece5792-lun-0 -> ../../sdb
iqn.(..)-eb1ecece5792-lun-1 -> ../../sdc
iqn.(..)-eb1ecece5792 -lun-2 -> ../../sdd
iqn.(..)-eb1ecece5792-lun-3 -> ../../sde
iqn.(..)-eb1ecece5792-lun-4 -> .. /../sdf
iqn.(..)-eb1ecece5792-lun-5 -> ../../sdg
iqn.(..)-eb1ecece5792-lun-6 -> ../../sdh
iqn.( ..)-eb1ecece5792-lun-7 -> ../../sdi

我怎样才能避免这个问题?

我的描述够清楚吗?

任何帮助将不胜感激

0 投票
0 回答
246 浏览

kernel - Darwin内核磁盘设备通过磁盘仲裁

所以我将最新的 ZFS 移植到 OSX ( github/osx.zfs),然后添加了 ZVOL,因为它是我想要的。现在,纯 BSD 内核方面的东西似乎确实可以工作,但我在 Apple 特定的集成方面遇到了问题。我只是错过了一块拼图。

bdevsw我通过定义andcdevsw并调用bdevsw_addand来创建类似于其他 Darwin 内核示例的新虚拟磁盘 (ZVOL) cdevsw_add_with_bdev。从这里可以看出:创建 /dev/zfs,它是主 ZFS 节点并处理所有特定的 ioctl。然后这里创建ZVOL虚拟磁盘节点create /dev/disk_POOL_name

(我已经尝试将开发节点命名为disk3并且rdisk3没有任何区别)。

我处理我收到的大多数 ioctl newfs_msdos newfs_hfs newfs_udf,这里处理 ioctl

所以,基本上,它会创建 BSD /dev/ 条目,我可以新建我的虚拟磁盘,我可以挂载它,使用它。从 Unix POV 来看,它似乎可以作为磁盘工作。

但不是在 OSX 中。它不显示在“diskutil 列表”中,也不显示在 GUI 磁盘实用程序中。显然我需要在内核中做一些其他的事情来考虑它。或者,这是我应该在用户区做的事情吗?

我还没有处理任何与分区有关的事情,但我觉得原始磁盘至少应该显示在磁盘工具中,以便我可以尝试对其进行分区。

0 投票
1 回答
1930 浏览

linux - ZIL 在单个 SSD 上工作的风险

我正在尝试为我的家庭服务器制作一个由 ZFS 制作的存储。我只有 1 个 SSD,但通过快速谷歌搜索,我发现很多人将 ZIL 设置在镜像阵列上。ZIL 只有 1 个 SSD 有风险吗?

我知道当 SSD 损坏时,我会丢失 ZIL 上的一些日志。小数据会丢失没关系,因为存储仅供个人使用。如果没有丢失的日志,raidz 可以正常工作吗?例如,我可以在没有损坏 ZIL 的情况下将 raidz 恢复到最新的快照吗?

我在 Linux 0.6.1 上使用 Debian 7.0 和 ZFS。

0 投票
2 回答
5040 浏览

hadoop - hadoop中什么样的JBOD?和 COW 与 hadoop?

hadoop新手,只设置了3个debian服务器集群进行练习。

我正在研究 hadoop 的最佳实践并遇到:JBOD no RAID Filesystem: ext3, ext4, xfs - 你在 zfs 和 btrfs 中看到的那些花哨的 COW 东西都没有

所以我提出这些问题...


我在任何地方读到 JBOD 都比 hadoop 中的 RAID 好,最好的文件系统是 xfs 和 ext3 和 ext4。除了文件系统的东西,这完全有道理,为什么那些是最好的......你如何实现这个 JBOD?如果你自己进行谷歌搜索,你会看到我的困惑,JBOD 暗示了一个线性附件或只是一堆磁盘的组合,有点像逻辑卷,至少有些人是这样解释的,但 hadoop 似乎想要一个不结合的 JBOD。没有身体在上面展开……

  • 问题 1)hadoop 世界中的每个人都对 JBOD 意味着什么,你如何实现它?
  • 问题2)是否就像将每个磁盘安装到不同的目录一样简单?
  • 问题 3) 这是否意味着 hadoop 在 JBOD 上运行得最好,其中每个磁盘都简单地挂载到不同的目录?
  • 问题 4)然后您只需将 hadoop 指向那些 data.dirs 吗?

  • Question5) 我看到 JBODS 有两种方式,每个磁盘单独挂载,或者磁盘的线性连接,可以通过 mdadm --linear 模式完成,或者 lvm 我打赌也可以,所以我看不到大处理那个......如果是这种情况,可以使用 mdadm --linear 或 lvm 因为JBOD人们指的是磁盘的连接,那么这是“JBOD”或线性连接磁盘的最佳方式Hadoop?


这是题外话,但是有人可以验证这是否正确吗?使用cow,写时复制的文件系统,如zfs和btrfs只会减慢hadoop,但不仅cow实现对hadoop来说是浪费。

  • 问题 6) 为什么 COW 和 RAID 之类的东西在 hadoop 上是一种浪费?我认为好像您的系统崩溃了,并且您使用 if 来恢复它,当您恢复系统时,hdfs 已经发生了很多变化,它可能只会认为那台机器有故障,最好从头开始重新加入它(将它作为一个新的数据节点启动)......或者hadoop系统将如何看到旧的数据节点?我的猜测是它不会认为它是旧的或新的,甚至是数据节点,它只会将其视为垃圾...... Idk......

  • 问题 7)如果 hadoop 发现一个数据节点从集群中掉下来,然后数据节点又恢复在线,数据稍微旧一点,会发生什么?数据必须有多旧?这个题目怎么样?


重新提出问题 1 至 4

  • 我刚刚意识到我的问题很简单,但我很难解释它,我不得不把它分成 4 个问题,但我仍然没有从听起来很聪明的人那里得到我正在寻找的答案,所以我必须以不同的方式重新问..

  • 在纸上我可以很容易地或用图画...我会再次尝试用文字..

  • 如果对我在 JBOD 问题中所问的内容感到困惑......

  • ** 只是想知道大家在 hadoop 世界中一直提到的 JBOD 是什么 **

  • JBOD 与 hadoop 的定义不同,然后在正常世界中,我想知道如何实现 hadoop 的最佳方法是在 jbods 的 concat(sda+sdb+sdc+sdd) 上,或者只保留磁盘(sda,sdb,sdc ,sdd)

  • 我认为下面的图形表示解释了我最好的要求

(JBOD 方法 1)

  • 正常世界:jbod 是磁盘的串联 - 那么如果您要使用 hadoop,您会将 data.dir(其中 hdfs 虚拟站点)覆盖到此磁盘串联内的目录上,所有磁盘也将显示为 1.. . 所以如果你有 sda 和 sdb 和 sdc 作为你节点中的数据磁盘,你会让 em 显示为某个实体 1(使用主板的硬件或 mdadm 或 lvm),它是 sda 和 sdb 和 sdc 的线性连接. 然后,您可以将此 entity1 挂载到 Unix 命名空间中的文件夹,例如 /mnt/jbod/,然后设置 hadoop 以在其中运行。

  • 文本摘要:如果磁盘 1 和磁盘 2 和磁盘 3 分别为 100gb 和 200gb 和 300gb,那么这个 jbod 将是 600gb 大,并且来自这个节点的 hadoop 将获得 600gb 的容量

* TEXTO-GRAPHICAL OF LINEAR CONCAT OF DISKS BEING A JBOD: * disk1 2 and 3 used for datanode for hadoop * disk1 is sda 100gb * disk2 is sdb 200gb * disk3 is sdc 300gb * sda + sdb + sdc = jbod of name entity1 * JBOD MADE ANYWAY - WHO CARES - THATS NOT MY QUESTION: maybe we made the jbod of entity1 with lvm, or mdadm using linear concat, or hardware jbod drivers which combine disks and show them to the operating system as entity1, it doesn't matter, either way its still a jbod * This is the type of JBOD I am used to and I keep coming across when I google search JBOD * cat /proc/partitions would show sda,sdb,sdc and entity1 OR if we used hardware jbod maybe sda and sdb and sdc would not show and only entity1 would show, again who cares how it shows * mount entity1 to /mnt/entity1 * running "df" would show that entity1 is 100+200+300=600gb big * we then setup hadoop to run its datanodes on /mnt/entity1 so that datadir property points at /mnt/entity1 and the cluster just gained 600gb of capacity

..另一个观点是这个..

(JBOD 方法 2)

  • 在 hadoop 中,在我看来,他们希望每个磁盘都是分开的。因此,我会将 unix 命名空间中的磁盘 sda 和 sdb 和 sdc 挂载到 /mnt/a 和 /mnt/b 和 /mnt/c ......从网上阅读看来,许多 hadoop 专家将 jbods 归类为只是一个一堆磁盘,所以对于 unix,它们看起来像磁盘而不是磁盘的连接......然后当然我可以结合逻辑卷管理器(lvm)或 mdadm(以突袭或线性方式)成为一个实体, jbod 首选线性)......但是......不,我们不要将它们组合起来,因为在 hadoop 世界中,jbod 似乎只是它们自己坐在一堆磁盘......

  • 如果磁盘 1 和磁盘 2 和磁盘 3 分别为 100gb 和 200gb 和 300gb,则每个挂载 disk1->/mnt/a 和 disk2->/mnt/b 和 disk3->/mnt/c 将分别为 100gb 和 200gb 并且分别为 300gb 大,来自该节点的 hadoop 将获得 600gb 容量

TEXTO-GRAPHICAL OF LINEAR CONCAT OF DISKS BEING A JBOD * disk1 2 and 3 used for datanode for hadoop * disk1 is sda 100gb * disk2 is sdb 200gb * disk3 is sdc 300gb * WE DO NOT COMBINE THEM TO APPEAR AS ONE * sda mounted to /mnt/a * sdb mounted to /mnt/b * sdc mounted to /mnt/c * running a "df" would show that sda and sdb and sdc have the following sizes: 100,200,300 gb respectively * we then setup hadoop via its config files to lay its hdfs on this node on the following "datadirs": /mnt/a and /mnt/b and /mnt/c.. gaining 100gb to the cluster from a, 200gb from b and 300gb from c... for a total gain of 600gb from this node... nobody using the cluster would tell the difference..

问题摘要

** 大家指的哪种方法是hadoop这种组合jbod磁盘分离的最佳实践- 根据在线文档,这仍然是一个jbod?**

  • 这两种情况都会获得hadoop 600gb ...它只是1。看起来像一个concat或一个实体,它是所有磁盘的组合,我一直认为这是一个jbod ...或者它就像每个磁盘的2在系统被挂载到不同的目录时,最终结果与hadoop容量方面的结果都是一样的......只是想知道这是否是提高性能的最佳方式
0 投票
1 回答
605 浏览

zfs - 如何启动 ZFS 文件系统的完全解压缩

我创建了一个带有压缩功能的大型文件系统。现在我禁用了压缩,但我没有获得完整的性能。原因是解压缩是惰性的,并且只适用于新文件。

有没有办法在后台启动解压缩?

我知道将文件复制到新分区并返回,但是有更聪明的方法吗?

0 投票
1 回答
2099 浏览

linux - 如何在 zfs 文件系统中设置默认用户配额

我知道如何为用户设置 ZFS 配额(例如:zfs set userquota@username=10GB),但我不知道如何为每个用户默认设置用户配额?

0 投票
1 回答
154 浏览

mysql - 将 MyISAM 表从 Solaris 复制到 Linux

我们计划将生产数据库从 Solaris 迁移到 Red Hat Linux。我们的数据库纯粹是 MyISAM。

如果我们只是将文件从 zfs (solaris) 文件系统复制到 ext3 (linux) 文件系统并启动 MySQL,它们可以使用吗?

如果它们不兼容,有没有办法让它们在 Linux 上兼容?

0 投票
1 回答
8638 浏览

linux - Linux 上的内存丢失 - 不是缓存,不是缓冲区

我的 Ubuntu 12 服务器神秘地丢失/浪费内存。它有 64GB 的内存。即使我关闭了所有应用程序,也显示大约 46GB 已使用。此内存未报告为用于缓冲区或缓存。

top 的结果(当我的应用程序正在运行时;应用程序使用大约 9G):

请注意,top 报告的缓存为 4.8G,而不是 48G,使用的是 55G。free -m 的结果:

什么在使用我的记忆?我已经尝试了所有可能遇到的诊断。论坛上挤满了问同样问题的人,因为 Linux 正在使用他们的内存作为缓冲区/缓存。这似乎不是这里发生的事情。

该系统可能是 lxc 容器的主机。上面报告的 top 和 free 结果来自主机,但在容器中报告了类似的内存使用情况。停止所有容器不会释放内存。一些 46G 仍在使用中。但是,如果我重新启动主机,内存是空闲的。过段时间就达不到46G了。(我不知道需要几天还是几周。需要几个小时以上。)

系统使用 zfs 也可能是相关的。Zfs 被称为内存饥渴,但不是那么多。该系统在两个 raidz 池上具有两个 zfs 文件系统,一个是 1.5T,一个是 200G。我有另一台服务器出现完全相同的问题(46G 没有使用),并且配置几乎相同,但使用 3T 阵列而不是 1.5T。每个 zfs 文件系统都有很多快照(大约 100 个)。我通常在任何时候都挂载每个文件系统的一个快照。卸载那些并没有让我恢复记忆。

我可以看到上面屏幕截图中的 VIRT 数字与使用的内存大致一致,但即使在我关闭这些应用程序之后,内存仍然在使用——即使在我关闭运行它们的容器之后也是如此。

编辑:我尝试添加一些交换,并且发生了一些有趣的事情。我加了30G的swap。片刻之后,标记为缓存在顶部的内存量从 5G 增加到了 25G。free -m 表示大约多出 20G 可用内存。我添加了另外 10G 的交换空间,并将缓存内存提高到 33G。如果我再添加 10G 的交换,我会得到 6G 更多的被识别为缓存。一直以来,报告只使用了几千字节的交换。就好像内核需要为它识别或报告为缓存的每一位匹配交换。这是带有 40G 交换的 top 的输出:

任何建议高度赞赏。

编辑 2:这是来自 /proc/spl/kstat/zfs/arcstats 的 arc* 值

没有为 ZFS 激活 L2ARC

0 投票
2 回答
682 浏览

cassandra - 如何让 Cassandra 在 SmartOS 的 ZFS 上使用两个磁盘?

我听说 Cassandra 可以将它的日志文件写入一个磁盘,并将 SS 表写入另一个磁盘时会有很大的改进。我有两个磁盘,如果我运行的是 Linux,我会将每个磁盘安装在不同的路径中并配置 Cassandra 以在这些磁盘上写入。

我想知道的是如何在 ZFS 和 SmartOS 中做到这一点。

我是SmartOS的新手,据我了解,我将磁盘添加到存储池中,然后将它们作为一个进行管理吗?

0 投票
2 回答
2266 浏览

filesystems - 128 位文件系统是什么意思?

在ZFS文件系统的介绍中,我看到了一个说法:

ZFS 文件系统是相当可扩展的,128 位文件系统

128 位文件系统是什么意思?是什么让它可扩展?