由于各种情况,我给自己上了一个关于 ZFS 文件系统的速成课程。我需要一些帮助来适应未知。不管那些是什么。
数据:
一些问题:
我无法访问 Debian 上的 zfs 池,因为它说我的版本太旧:
root@Microknoppix:~# zpool import
pool: WD_4TB
id: 12726205736285302822
state: UNAVAIL
status: The pool is formatted using an incompatible version.
action: The pool cannot be imported. Access the pool on a system running newer
software, or recreate the pool from backup.
see: http://www.sun.com/msg/ZFS-8000-A5
config:
WD_4TB UNAVAIL newer version
disk/by-id/ata-WDC_WD40EZRX-00SPEB0_WD-WCC4E0184707-part1 ONLINE
Run Code Online (Sandbox Code Playgroud)
此外,提供的sun 链接已损坏。
我已经通过以下方式安装了最新的 zfs-fuse:
root@Microknoppix:~# apt-cache madison zfs-fuse
zfs-fuse | 0.7.0-12 | http://ftp.de.debian.org/debian/ testing/main i386 Packages
zfs-fuse | 0.7.0-12 | http://ftp.de.debian.org/debian/ unstable/main i386 Packages
zfs-fuse | 0.7.0-8 …Run Code Online (Sandbox Code Playgroud) 因此,我在基于 zfs 的备份服务器上空间不足,并删除了一些旧备份,但文件系统上的空间随后并未释放。
第一个猜测?周围一定还残留着一些旧的快照。所以我跑了:
zfs list -t snapshot | grep "pool/backups@"
Run Code Online (Sandbox Code Playgroud)
确实有一些:
NAME USED AVAIL MOUNTPOINT
pool/backups@auto-20140118.1656-5y 4.81M 0 0
pool/backups@auto-20140120.0900-5y 270K 0 0
pool/backups@auto-20140121.0901-5y 270K 0 0
pool/backups@auto-20140122.0902-5y 270K 0 0
pool/backups@auto-20140123.0903-5y 270K 0 0
pool/backups@auto-20140124.0904-5y 270K 0 0
pool/backups@auto-20140125.0905-5y 270K 0 0
pool/backups@auto-20140126.0906-5y 270K 0 0
Run Code Online (Sandbox Code Playgroud)
但是,虽然我本希望看到USED我刚刚删除的大小约为 400G 的快照,但根本没有任何大小值得注意的快照。
我确实花了几个小时试图在其他地方找到问题,当我最终运行时:
zfs destroy -nv pool/backups@
Run Code Online (Sandbox Code Playgroud)
令人惊讶的输出是:
will destroy pool/backups@auto-20140118.1656-5y
will destroy pool/backups@auto-20140120.0900-5y
will destroy pool/backups@auto-20140121.0901-5y
will destroy pool/backups@auto-20140122.0902-5y
will destroy pool/backups@auto-20140123.0903-5y
will destroy pool/backups@auto-20140124.0904-5y
will destroy pool/backups@auto-20140125.0905-5y …Run Code Online (Sandbox Code Playgroud) 我的台式计算机上有一个名为 data 的单驱动器 zfs 池,是使用zpool create data /dev/mapper/data(zfs on luks) 之类的内容创建的。我想将其转换为 raid1 池,但我的机器上只有 1 个驱动器可供使用,并且还有一个插槽。
我能否以某种方式告诉 zfs 将我的数据池转换为镜像,使用新驱动器作为该组中的第二个驱动器?
如果这是不可能的,是否有办法仅使用新驱动器创建新的降级镜像池(因为我还没有第二个驱动器)?这将使我有机会将数据从旧池复制到新镜像池,然后将原始驱动器添加到新池。
我最近安装了Ubuntu 20.04,使用 ZFS作为文件系统。我检查了我的 RAM/交换区,如下所示:
qallaf89@desktop : ~ $ 免费 -h
可用的免费共享缓冲区/缓存总数
内存:31Gi 22Gi 4.1Gi 1.9Gi 4.2Gi 6.0Gi
交换:2.0Gi 0B 2.0Gi
现在,如果我想正常增加交换空间,我会按照Digital Ocean 中的教程进行操作,效果非常好。但是,由于我有 ZFS,我遇到了一些问题:
qallaf89@desktop : ~ $ sudo fallocate -l 100G /swapfile Fallocate: Fallocate 失败:不支持操作
我环顾四周,确实ZFS / Fallocate()似乎有问题。
我也从 oracle看到了这个文档,但它对我来说也没有用:
qallaf89@desktop : ~ $ 交换 -l 未找到命令“交换”,您的意思是: deb systemtap 中的命令“stap”(4.2-3) deb DVB-apps 中的命令“szap”(1.1.1+rev1500-1.2) debsoapaligner 中的命令“soap”(2.20-3) deb sway 中的命令 'sway' (1.4-2) 来自 deb slurm-client 的命令“smap”(19.05.5-1) deb secure-delete 中的命令“sswap”(3.1-6ubuntu2) deb snapd (2.44.3+20.04) 中的命令“snap” 来自 debuckless-tools …
我在 RAID10 中有一个带有 6 个驱动器的 ZFS 池——嗯,它曾经是。
我试图将 146GB 驱动器升级到 1TB 驱动器,但搞砸了。
root@x7550:~# zpool status
pool: stuffpool
state: ONLINE
scan: scrub repaired 0 in 0h6m with 0 errors on Mon May 9 15:26:39 2016
config:
NAME STATE READ WRITE CKSUM
stuffpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ata-HGST_HTS721010A9E630_JR10004M0LGN6E-part1 ONLINE 0 0 0
ata-HGST_HTS721010A9E630_JR10004M0M17TE-part1 ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
ata-HGST_HTS541010A9E680_JA1000102MG9UR-part1 ONLINE 0 0 0
ata-HGST_HTS541010A9E680_JA1009C03158BP-part1 ONLINE 0 0 0
scsi-35000c50016ebcdfb-part1 ONLINE 0 0 0 …Run Code Online (Sandbox Code Playgroud) 有没有人见过或尝试过在 Linux 的 Windows 子系统下运行 OpenZFS?
我知道有人正在开发OpenZFS的Windows 端口,但似乎从使用 Linux 端口开始会更加稳定。
我知道像副本和压缩这样的 ZFS 属性只会影响新写入的数据。
但是我想知道磨砂膏是否会更新它?
假设我已经创建了一个池并在写入 1TB 文件之前设置了 compression=lz4 和副本=2。
然后我决定我不需要保留同上块,但我也想使用另一种类型的压缩。
如果我现在设置副本 = 1 和压缩 = gzip-9,有没有办法将其应用于已写入池的数据?
磨砂膏对我有用吗?
我正在编写一个脚本,该脚本需要任意池的所有 vdev 中磁盘的设备名称。(我的池中 vdev 中的所有设备都是磁盘。)
zpool list -v mypoolname 似乎主要是我想要的:
$ zpool list -v mypoolname
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
mypoolname 100G 90G 10.0G 90% 1.00x ONLINE -
mirror 100G 90G 10.0G -
devicename1 - - - -
devicename2 - - - -
Run Code Online (Sandbox Code Playgroud)
但是,确定输出的哪一行是磁盘的唯一明显方法是检查该行开头是否有四个空格。
有没有更好的,脚本安全的命令我可以运行?
偶然地,我使用/dev/sda等创建了一个 zpool 。我知道这是个坏主意;我只是想测试我的设置。原来,它的工作这么好,我忘了设备名称,并开始使用我的zpool作为NAS,仍与sda,sdb,sdc和sdd。我的操作系统从sde. 所以我的 zpool 已经充满了一些数据,准确地说是 16?TB 左右。所以我想知道是否可以修改现有池以按 id 而不是按名称使用磁盘?sdX
我的 NAS 已经连续运行了大约 1 年,我从来没有重启过。如果我现在重新启动并且某些磁盘名称会更改,我的 zpool 会被破坏吗?(例如,因为我后来添加了一些新磁盘)
我读到可以使用
zpool export
and
zpool import -d /dev/disk/by-id。这是否会导致一些重新同步开始,或者当我导出和导入时究竟会发生什么?由于它有很多数据,如果我不必复制我的数据,我会更喜欢。这简直太多了,需要几天时间。我的 zpool 在 raidz2 配置下运行,操作系统是 Debian。
这就是我得到的zfs list all:
root@pve:~# zfs get all
NAME PROPERTY VALUE SOURCE
tank type filesystem -
tank creation Sat May 12 15:22 2018 -
tank used 1.00T -
tank available 4.26T -
tank referenced …Run Code Online (Sandbox Code Playgroud)