容器密码:e10adc3949ba59abbe56e057f20f883e
ZFS基础学习
参考:https://szclsya.me/zh-cn/posts/storage/zfs-intro/
ZFS几大概念:写时复制,由此引伸磁盘快照,RAIDZ,存储池
ZFS存储池
ZFS 则整合了逻辑卷管理功能,因此一个存储池可以被部署在许多块存储盘之上。存储池在 ZFS 中被称为 zpool。在一个 zpool 里面可以存在多个 VDEV (Virtual DEVices, 虚拟设备) 。写入 zpool 的数据将被分散到各个 VDEV 上,有点类似于 RAID0。
如果你曾经配过 RAID 阵列的话,这样做也许听上去蠢极了,毕竟只要一个 VDEV 失效,整个阵列就完蛋了。不过 ZFS 允许在 VDEV 级别上创建冗余,这样就可以保证 VDEV 在合理的冗余配置下不会轻易失效。这样做也使扩展和收缩存储池极为灵活:只需增减 VDEV 即可。集成逻辑卷管理及 RAID 也意味着硬件 RAID 系统中常见的 Write hole 问题不会影响到 ZFS。
为了适应不同的可靠性要求,存储数据的 VDEV 分为以下几种:
- single: 简单的单盘 VDEV,无冗余
- mirror: 镜像 VDEV,允许多块存储盘,只要一块可用就可以保证数据安全,性能最高,类似于 RAID 1
- RAIDz1, RAIDz2, RAIDz3: 允许多块存储盘,各自在数据丢失前允许 1/2/3 块盘失效
相应的,最少需要 3/4/5 块存储盘
使用校验信息块,类似于 RAID 5/6
#架构如下
物理磁盘
sdb
sdc
sdd
│
└─────────────┐
▼
Pool(存储池)
pgscup2026-js
│
┌────────┴────────┐
▼ ▼
Dataset Dataset
data web
│ │
▼ ▼
/home/data /web
│ │
▼ ▼
文件 网站源码
#命令
zpool status #存储池状态
pool: pgscup2026-js
zpool status -P #查看池中的磁盘
zpool create tank mirror sdb sdc #mirror,类比raid1
zpool create tank raidz sdb sdc sdd #raidz,类比raid5
zfs list #查看所有数据集
pgscup2026-js
pgscup2026-js/data
pgscup2026-js/web
zfs create pgscup2026-js/test #创建数据集
zfs get mountpoint pgscup2026-js/web #查看挂载点
zfs set mountpoint=/var/www pgscup2026-js/web #修改原挂载点
zfs set quota=10G pgscup2026-js/web #限制容量
zfs snapshot pgscup2026-js/web@bak1 #创建快照
zfs list -t snapshot #查看快照
zfs destroy pgscup2026-js/web@bak1 #删除快照
zfs rollback pgscup2026-js/web@bak1 #回滚
zfs mount #查看数据集挂载情况
服务器
1、对服务器进行系统取证,提取该服务器安装的操作系统版本名称?[答案格式:XX XX.XX]
Ubuntu 24.04
2、对服务器进行内核取证,提取该服务器的完整内核版本号?[答案格式:1.0.0-000-xxxx]
6.8.0-110-generic
3、对服务器进行取证分析,提取系统所有ZFS存储池名称?[答案格式:英文字母、数字、符号的组合] pgscup2026-js

发现/web /home/data都是ext4,应该是zfs没挂载全,/web /home/data都没挂载上