昨天,我把一个新的磁盘放到我的服务器上。 可悲的是,我没有在失败之前检查磁盘。 我使用命令zpool add nas /dev/disk/by-id/scsi-SATA_ST31500341AS_9VS27Z4M-part1将其添加到池中 之后不久,服务器的CPU负载几乎变成了无穷大,我甚至无法login。 所以我执行了硬重启(Alt + SysRq + b),但服务器无法启动。 (在GRUB出现后,大约5分钟没有发生什么事,然后关掉它,拿出新的磁盘,我启动并运行。 但现在,我遇到了问题,因为最后一个(新的)磁盘显示状态为“UNAVAIL”,因此无法访问所谓的“nas”池,并且由于没有镜像池,因此整个池都处于州UNAVAIL。 如果我再次放入磁盘并执行zpool online nas /dev/disk/by-id/scsi-SATA_ST31500341AS_9VS27Z4M-part1它不起作用,并告诉我“磁盘找不到”。 所以我尝试了一些从oracle-docs读取的可能性,并使用zpool export nas将其zpool export nas 。 现在,我甚至无法导入池。 zpool import nas -f cannot import 'nas': one or more devices is currently unavailable 如果我看zpool import ,它告诉我: pool: nas id: 3366469163144781663 state: UNAVAIL status: One or more devices are missing […]
我用ZFSonlinux使用MongoDB(我相信它是mmapped数据库)有巨大的性能问题。 我们的Mongodb几乎只是写道。 对于没有ZFS的副本,磁盘完全忙于〜5秒的峰值,当应用程序每30秒写入一次数据库,并且两者之间没有磁盘活动时,我将其作为基准行为进行比较。 在使用ZFS的副本上,磁盘始终处于繁忙状态,副本持续跟踪MongoDB主节点。 我在所有副本上都启用了lz4压缩function,节省的空间非常大,所以应该有更less的数据打到磁盘上 所以在这些ZFS服务器上,我首先有默认的recordsize = 128k。 然后我擦除数据,并设置recordsize = 8K,然后再同步Mongo数据。 然后我又擦了一遍,试着logging= 1k。 我也尝试logging= 8K没有校验 尽pipe如此,它并没有解决任何问题,磁盘总是保持100%的繁忙。 在logging大小= 8k的服务器上只有一次,磁盘比任何非ZFS复本less得多,但是在尝试不同的设置并再次尝试recordize = 8k后,磁盘是100%,我看不到以前的良好行为,并不能在任何其他副本上看到它。 而且,应该几乎只有写入,但是看到在不同设置下的所有副本上, 磁盘完全忙于75%的读取,只有25%的写入 (注意,我相信MongoDB是mmap数据库,有人告诉我在AIO模式下试用MongoDB,但是我没有find如何设置它,而在另一个运行MySQL InnoDB的服务器上,我意识到ZFSonLinux不支持AIO。 我的服务器是CentOS 6.5内核2.6.32-431.5.1.el6.x86_64。 spl-0.6.2-1.el6.x86_64 zfs-0.6.2-1.el6.x86_64 #PROD 13:44:55 root@rum-mongo-backup-1:~: zfs list NAME USED AVAIL REFER MOUNTPOINT zfs 216G 1.56T 32K /zfs zfs/mongo_data-rum_a 49.5G 1.56T 49.5G /zfs/mongo_data-rum_a zfs/mongo_data-rum_old 166G 1.56T 166G /zfs/mongo_data-rum_old #PROD 13:45:20 […]
考虑下面的命令和输出: zfs send -Pvi \ tank/vms/langara@zfsnap-2016-05-11_00.00.00–1w \ tank/vms/langara@zfsnap-2016-05-13_00.00.00–1w \ | dd > /dev/null 运行1: incremental zfsnap-2016-05-11_00.00.00–1w tank/vms/langara@zfsnap-2016-05-13_00.00.00–1w 4903284160 size 4903284160 17:29:42 1244483472 tank/vms/langara@zfsnap-2016-05-13_00.00.00–1w 17:29:43 2487508120 tank/vms/langara@zfsnap-2016-05-13_00.00.00–1w 17:29:44 3741453864 tank/vms/langara@zfsnap-2016-05-13_00.00.00–1w 9582310+895 records in 9582799+1 records out 4906393272 bytes (4.9 GB) copied, 3.94883 s, 1.2 GB/s 运行2: incremental zfsnap-2016-05-11_00.00.00–1w tank/vms/langara@zfsnap-2016-05-13_00.00.00–1w 4903284160 size 4903284160 17:30:07 1209666712 tank/vms/langara@zfsnap-2016-05-13_00.00.00–1w 17:30:08 […]
我有一个根据ZFS的用户是在他们的配额。 但是,我无法find他们如何使用他们所有的空间。 此文件系统没有后代文件系统,根据手册页the userquota space calculation does not include space that is used by descendent datasets, such as snapshots and clones. 为什么zfs会在很大程度上发现和不同意? # zfs get -H userquota@user1 zpool/zfs1 && zfs get -H userused@user1 zppol/zfs1 zpool/zfs1 userquota@user1 20G local zpool/zfs1 userused@user1 20.0G local # find $(zfs get -H -o value mountpoint zpool/zfs1) -user user1 -print0 | […]
我们的存储服务器有一些问题,前面我们有一个损坏的磁盘(WD 4TB RE SAS),虽然RAID控制器( LSI MegaRAID 9271-8i )保持磁盘联机(状态:ok)。 只有媒体错误显示1错误。 我们决定保存并更换磁盘,在重新标记为(重新同步)的情况下,重新同步磁盘,尽pipe只有一个磁盘出现1个读取错误。 今天的韧性是完整的(没有腐败,所有oke),我开始擦洗,遇到了这个: zpool status pool: data state: DEGRADED status: One or more devices could not be used because the label is missing or invalid. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Replace the device using 'zpool replace'. see: http://zfsonlinux.org/msg/ZFS-8000-4J […]
就我所知,ZFS作为一个文件系统在每次访问数据时都会检查数据错误。 因此,我会假设在发送数据之前,它实际上执行了一个类似于擦洗的操作,从而确保发送数据的完整性。 我的问题是:这是真的吗? 如果没有,那么在zfs发送关于该特定数据集之前,执行zfs scrub还有什么额外的好处。
我已经从版本13.04更新了Ubuntu到版本13.10,只是发现SATA磁盘ID已经改变,我的ZFS池现在失败了。 在新的Ubuntu 13.10上,磁盘ID现在是ata- *而不是scsi-SATA_ *。 这是更新后的池状态: pool: nestpool state: UNAVAIL status: One or more devices could not be used because the label is missing or invalid. There are insufficient replicas for the pool to continue functioning. action: Destroy and re-create the pool from a backup source. see: http://zfsonlinux.org/msg/ZFS-8000-5E scan: none requested config: NAME STATE READ […]
我已经在我的Centos 7中安装了ZFS(0.6.5),而且我也创build了一个zpool,除了重启后我的数据集消失之外,一切正常。 我一直试图在各种在线资源和博客的帮助下debugging这个问题,但无法得到预期的结果。 在重新启动后,当我发出zfs list命令时,我得到“没有可用的数据集” ,而zpool list给出了“没有可用的池”在做了大量的在线研究之后,我可以通过使用zpool import手动导入caching文件来使其工作, c cachefile ,但仍然必须在重新启动之前运行zpool set cachefile = / etc / zfs / zpool.cache Pool ,以便稍后在重新启动后导入。 这就是systemctl status zfs-import-cache样子, zfs-import-cache.service – Import ZFS pools by cache file Loaded: loaded (/usr/lib/systemd/system/zfs-import-cache.service; static) Active: inactive (dead) cat /etc/sysconfig/zfs # ZoL userland configuration. # Run `zfs mount -a` during system start? ZFS_MOUNT='yes' […]
我有一个服务器有8个磁盘托架,里面装满了3TB的磁盘。 每个使用2个磁盘的4个镜像vdevs,这给了我12TB的冗余存储。 这就是问题所在 – 我在某处读到,我需要“每TB重复数据的x GB内存”(释义)。 我愚蠢地认为,如果我的池中大部分数据不能被重复的话,就不会使用太多的内存。 令我沮丧的是,通过“重复数据”,他似乎意味着池中所有已经启用了重复数据删除的数据。 结果是我的系统最近开始locking,可能是因为内存不足,需要重新设置。 当我意识到自己的错误时,我想我可以通过创build一个禁用了去重复数据的新数据集来修复它,将所有数据复制到新数据集中,然后销毁旧数据集。 幸运的是,我只填充了大约35%的游泳池。 在尝试这之前,我禁用了所有数据集上的重复数据删除。 不幸的是,任何时候我试图从旧的数据集中删除一些东西,我的系统上的所有16个线程都会达到100%,所有24 GB的内存突然被填满(我通过htop看到这个),然后我的系统被locking。 有没有什么办法可以把我自己从这个洞中挖出来,而不会破坏我的整个泳池并重新开始?
我有一个ZFS服务器8个zpools。 每个池都是10 + 2 RAIDZconfiguration中的12个6TB磁盘。 因此,每个池的原始存储空间为12 * 6 = 72 TB,可用空间为10 * 6 = 60 TB。 但是,当我使用zfs list与使用zpool list来查询它时,我看到了不同的结果,如下所示: # zfs list NAME USED AVAIL REFER MOUNTPOINT intp1 631K 48.0T 219K /intp1 intp2 631K 48.0T 219K /intp2 intp3 631K 48.0T 219K /intp3 jbodp4 631K 48.0T 219K /jbodp4 # zpool list NAME SIZE ALLOC FREE EXPANDSZ […]