mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2025-05-19 21:00:58 +00:00
Update zfs-cn.html.markdown
completed translation
This commit is contained in:
parent
8b2eff3f0b
commit
c4077317b3
@ -16,59 +16,57 @@ ZFS有一些特有的术语,这把它和传统的存储系统区分开来。
|
|||||||
|
|
||||||
## ZFS概念
|
## ZFS概念
|
||||||
|
|
||||||
### 虚拟设备(Virtual Devices)
|
### 虚拟设备(Virtual Devices,VDEV)
|
||||||
|
|
||||||
A VDEV is similar to a raid device presented by a RAID card, there are several different
|
对于操作系统来说,VDEA和传统的RAID阵列卡所呈现的rai设备类似。VDEV有几种不同的类型,每种类型
|
||||||
types of VDEV's that offer various advantages, including redundancy and speed. In general
|
都有自己的优势,包括冗余和速度。一般来说,VDEV的可靠性和安全性比阵列卡要好。因此使用ZFS时不
|
||||||
VDEV's offer better reliability and safety than a RAID card. It is discouraged to use a
|
建议使用阵列卡。让ZFS直接管理磁盘。
|
||||||
RAID setup with ZFS, as ZFS expects to directly manage the underlying disks.
|
|
||||||
|
|
||||||
Types of VDEV's
|
VDEV的类型
|
||||||
* stripe (a single disk, no redundancy)
|
* stripe (条带。单个磁盘,没有冗余)
|
||||||
* mirror (n-way mirrors supported)
|
* mirror (镜像。支持n-wa镜像)
|
||||||
* raidz
|
* raidz
|
||||||
* raidz1 (1-disk parity, similar to RAID 5)
|
* raidz1 (一个奇偶校验磁盘, 类似于RAID 5)
|
||||||
* raidz2 (2-disk parity, similar to RAID 6)
|
* raidz2 (两个奇偶校验磁盘, 类似于RAID 6)
|
||||||
* raidz3 (3-disk parity, no RAID analog)
|
* raidz3 (三个奇偶校验磁盘, 没有类似RAID等级)
|
||||||
* disk
|
* disk (磁盘)
|
||||||
* file (not recommended for production due to another filesystem adding unnecessary layering)
|
* file (文件。不推荐在生产环境中使用,因为中间又多了一层不必要的文件系统)
|
||||||
|
|
||||||
Your data is striped across all the VDEV's present in your Storage Pool, so more VDEV's will
|
数据会以条带方式存储于存储池中的所有VDE上。因此一个存储池中的VDEV越多,IOPS就越高。
|
||||||
increase your IOPS.
|
|
||||||
|
|
||||||
### Storage Pools
|
### storage pool (存储池)
|
||||||
|
|
||||||
ZFS uses Storage Pools as an abstraction over the lower level storage provider (VDEV), allow
|
ZFS 使用存储池来作为底层存储提供者(VDEV)的抽象。这样可以把用户可见的文件系统和底层的物理磁盘
|
||||||
you to separate the user visible file system from the physical layout.
|
布局分离开来。
|
||||||
|
|
||||||
### ZFS Dataset
|
### ZFS 数据集(Dataset)
|
||||||
|
|
||||||
ZFS datasets are analogous to traditional filesystems but with many more features. They
|
ZFS 数据集类似于传统的文件系统(译者注:或者说是目录),但是提供了更多的功能。ZFS的很多优势也是
|
||||||
provide many of ZFS's advantages. Datasets support [Copy on Write](https://en.wikipedia.org/wiki/Copy-on-write)
|
在这一层体现出来的。数据集支持 [Copy on Write](https://en.wikipedia.org/wiki/Copy-on-write)
|
||||||
snapshots, quota's, compression and de-duplication.
|
快照, 配额, 压缩和重复消除(de-duplication).
|
||||||
|
|
||||||
|
|
||||||
### Limits
|
### 限制
|
||||||
|
|
||||||
One directory may contain up to 2^48 files, up to 16 exabytes each. A single storage pool
|
一个目录最多可包含 2^48个文件, 每个文件最大可以是16 exabytes. 一个存储池最大可包含256 zettabytes 、
|
||||||
can contain up to 256 zettabytes (2^78) of space, and can be striped across 2^64 devices. A
|
(2^78) 的空间, 可以条带化地分布于2^64 设备上. 单一主机最多可以创建2^64个存储池。这些限制可以说是相
|
||||||
single host can have 2^64 storage pools. The limits are huge.
|
当大。
|
||||||
|
|
||||||
|
|
||||||
## Commands
|
## 命令
|
||||||
|
|
||||||
### Storage Pools
|
### 存储池
|
||||||
|
|
||||||
Actions:
|
Actions: (存储池操作)
|
||||||
* List
|
* List (列举)
|
||||||
* Status
|
* Status (查看状态)
|
||||||
* Destroy
|
* Destroy (删除)
|
||||||
* Get/Set properties
|
* Get/Set properties (获取/设置属性)
|
||||||
|
|
||||||
List zpools
|
List zpools (列举存储池(也叫zpool))
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Create a raidz zpool
|
# Create a raidz zpool (创建一个raidz类型的存储池)
|
||||||
$ zpool create bucket raidz1 gpt/zfs0 gpt/zfs1 gpt/zfs2
|
$ zpool create bucket raidz1 gpt/zfs0 gpt/zfs1 gpt/zfs2
|
||||||
|
|
||||||
# List ZPools
|
# List ZPools
|
||||||
@ -76,17 +74,17 @@ $ zpool list
|
|||||||
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
|
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
|
||||||
zroot 141G 106G 35.2G - 43% 75% 1.00x ONLINE -
|
zroot 141G 106G 35.2G - 43% 75% 1.00x ONLINE -
|
||||||
|
|
||||||
# List detailed information about a specific zpool
|
# List detailed information about a specific zpool (列出某一存储池的详细信息)
|
||||||
$ zpool list -v zroot
|
$ zpool list -v zroot
|
||||||
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
|
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
|
||||||
zroot 141G 106G 35.2G - 43% 75% 1.00x ONLINE -
|
zroot 141G 106G 35.2G - 43% 75% 1.00x ONLINE -
|
||||||
gptid/c92a5ccf-a5bb-11e4-a77d-001b2172c655 141G 106G 35.2G - 43% 75%
|
gptid/c92a5ccf-a5bb-11e4-a77d-001b2172c655 141G 106G 35.2G - 43% 75%
|
||||||
```
|
```
|
||||||
|
|
||||||
Status of zpools
|
Status of zpools (存储池状态)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Get status information about zpools
|
# Get status information about zpools (获取全部zpool信息)
|
||||||
$ zpool status
|
$ zpool status
|
||||||
pool: zroot
|
pool: zroot
|
||||||
state: ONLINE
|
state: ONLINE
|
||||||
@ -99,7 +97,7 @@ config:
|
|||||||
|
|
||||||
errors: No known data errors
|
errors: No known data errors
|
||||||
|
|
||||||
# Scrubbing a zpool to correct any errors
|
# Scrubbing a zpool to correct any errors (用scrub来更正存储池错误信息)
|
||||||
$ zpool scrub zroot
|
$ zpool scrub zroot
|
||||||
$ zpool status -v zroot
|
$ zpool status -v zroot
|
||||||
pool: zroot
|
pool: zroot
|
||||||
@ -116,11 +114,12 @@ config:
|
|||||||
errors: No known data errors
|
errors: No known data errors
|
||||||
```
|
```
|
||||||
|
|
||||||
Properties of zpools
|
Properties of zpools (存储池属性)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|
||||||
# Getting properties from the pool properties can be user set or system provided.
|
# Getting properties from the pool properties can be user set or system provided.
|
||||||
|
# (获取zroot存储池的全部属性)
|
||||||
$ zpool get all zroot
|
$ zpool get all zroot
|
||||||
NAME PROPERTY VALUE SOURCE
|
NAME PROPERTY VALUE SOURCE
|
||||||
zroot size 141G -
|
zroot size 141G -
|
||||||
@ -129,7 +128,7 @@ zroot altroot - default
|
|||||||
zroot health ONLINE -
|
zroot health ONLINE -
|
||||||
...
|
...
|
||||||
|
|
||||||
# Setting a zpool property
|
# Setting a zpool property (设置存储池属性,下例蛇这的是commen备注属性)
|
||||||
$ zpool set comment="Storage of mah stuff" zroot
|
$ zpool set comment="Storage of mah stuff" zroot
|
||||||
$ zpool get comment
|
$ zpool get comment
|
||||||
NAME PROPERTY VALUE SOURCE
|
NAME PROPERTY VALUE SOURCE
|
||||||
@ -137,48 +136,48 @@ tank comment - default
|
|||||||
zroot comment Storage of mah stuff local
|
zroot comment Storage of mah stuff local
|
||||||
```
|
```
|
||||||
|
|
||||||
Remove zpool
|
Remove zpool (删除存储池)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ zpool destroy test
|
$ zpool destroy test
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### Datasets
|
### Datasets (数据集)
|
||||||
|
|
||||||
Actions:
|
Actions: (数据集相关操作)
|
||||||
* Create
|
* Create (创建)
|
||||||
* List
|
* List (列举)
|
||||||
* Rename
|
* Rename (重命名)
|
||||||
* Delete
|
* Delete (删除)
|
||||||
* Get/Set properties
|
* Get/Set properties (获取/设置属性)
|
||||||
|
|
||||||
Create datasets
|
Create datasets
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Create dataset
|
# Create dataset (创建数据集)
|
||||||
$ zfs create tank/root/data
|
$ zfs create tank/root/data
|
||||||
$ mount | grep data
|
$ mount | grep data
|
||||||
tank/root/data on /data (zfs, local, nfsv4acls)
|
tank/root/data on /data (zfs, local, nfsv4acls)
|
||||||
|
|
||||||
# Create child dataset
|
# Create child dataset (创建子数据集)
|
||||||
$ zfs create tank/root/data/stuff
|
$ zfs create tank/root/data/stuff
|
||||||
$ mount | grep data
|
$ mount | grep data
|
||||||
tank/root/data on /data (zfs, local, nfsv4acls)
|
tank/root/data on /data (zfs, local, nfsv4acls)
|
||||||
tank/root/data/stuff on /data/stuff (zfs, local, nfsv4acls)
|
tank/root/data/stuff on /data/stuff (zfs, local, nfsv4acls)
|
||||||
|
|
||||||
|
|
||||||
# Create Volume
|
# Create Volume (创建卷)
|
||||||
$ zfs create -V zroot/win_vm
|
$ zfs create -V zroot/win_vm
|
||||||
$ zfs list zroot/win_vm
|
$ zfs list zroot/win_vm
|
||||||
NAME USED AVAIL REFER MOUNTPOINT
|
NAME USED AVAIL REFER MOUNTPOINT
|
||||||
tank/win_vm 4.13G 17.9G 64K -
|
tank/win_vm 4.13G 17.9G 64K -
|
||||||
```
|
```
|
||||||
|
|
||||||
List datasets
|
List datasets (列举数据集)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# List all datasets
|
# List all datasets (列举所有数据集)
|
||||||
$ zfs list
|
$ zfs list
|
||||||
NAME USED AVAIL REFER MOUNTPOINT
|
NAME USED AVAIL REFER MOUNTPOINT
|
||||||
zroot 106G 30.8G 144K none
|
zroot 106G 30.8G 144K none
|
||||||
@ -189,12 +188,12 @@ zroot/backup 5.23G
|
|||||||
zroot/home 288K 30.8G 144K none
|
zroot/home 288K 30.8G 144K none
|
||||||
...
|
...
|
||||||
|
|
||||||
# List a specific dataset
|
# List a specific dataset (列举某一数据集)
|
||||||
$ zfs list zroot/home
|
$ zfs list zroot/home
|
||||||
NAME USED AVAIL REFER MOUNTPOINT
|
NAME USED AVAIL REFER MOUNTPOINT
|
||||||
zroot/home 288K 30.8G 144K none
|
zroot/home 288K 30.8G 144K none
|
||||||
|
|
||||||
# List snapshots
|
# List snapshots (列举快照)
|
||||||
$ zfs list -t snapshot
|
$ zfs list -t snapshot
|
||||||
zroot@daily-2015-10-15 0 - 144K -
|
zroot@daily-2015-10-15 0 - 144K -
|
||||||
zroot/ROOT@daily-2015-10-15 0 - 144K -
|
zroot/ROOT@daily-2015-10-15 0 - 144K -
|
||||||
@ -207,24 +206,24 @@ zroot/var/log@daily-2015-10-15
|
|||||||
zroot/var/tmp@daily-2015-10-15 0 - 152K -
|
zroot/var/tmp@daily-2015-10-15 0 - 152K -
|
||||||
```
|
```
|
||||||
|
|
||||||
Rename datasets
|
Rename datasets (重命名数据集)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ zfs rename tank/root/home tank/root/old_home
|
$ zfs rename tank/root/home tank/root/old_home
|
||||||
$ zfs rename tank/root/new_home tank/root/home
|
$ zfs rename tank/root/new_home tank/root/home
|
||||||
```
|
```
|
||||||
|
|
||||||
Delete dataset
|
Delete dataset (删除数据集)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Datasets cannot be deleted if they have any snapshots
|
# Datasets cannot be deleted if they have any snapshots (数据集如果有快照则无法删除)
|
||||||
zfs destroy tank/root/home
|
zfs destroy tank/root/home
|
||||||
```
|
```
|
||||||
|
|
||||||
Get / set properties of a dataset
|
Get / set properties of a dataset (获取/设置数据集属性)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Get all properties
|
# Get all properties (获取全部属性)
|
||||||
$ zfs get all zroot/usr/home │157 # Create Volume
|
$ zfs get all zroot/usr/home │157 # Create Volume
|
||||||
NAME PROPERTY VALUE SOURCE │158 $ zfs create -V zroot/win_vm
|
NAME PROPERTY VALUE SOURCE │158 $ zfs create -V zroot/win_vm
|
||||||
zroot/home type filesystem - │159 $ zfs list zroot/win_vm
|
zroot/home type filesystem - │159 $ zfs list zroot/win_vm
|
||||||
@ -235,15 +234,15 @@ zroot/home referenced 11.9G -
|
|||||||
zroot/home mounted yes -
|
zroot/home mounted yes -
|
||||||
...
|
...
|
||||||
|
|
||||||
# Get property from dataset
|
# Get property from dataset (获取数据集属性)
|
||||||
$ zfs get compression zroot/usr/home
|
$ zfs get compression zroot/usr/home
|
||||||
NAME PROPERTY VALUE SOURCE
|
NAME PROPERTY VALUE SOURCE
|
||||||
zroot/home compression off default
|
zroot/home compression off default
|
||||||
|
|
||||||
# Set property on dataset
|
# Set property on dataset (设置压缩属性compressio)
|
||||||
$ zfs set compression=gzip-9 mypool/lamb
|
$ zfs set compression=gzip-9 mypool/lamb
|
||||||
|
|
||||||
# Get a set of properties from all datasets
|
# Get a set of properties from all datasets (列举所有数据集的名称,配额和预留属性)
|
||||||
$ zfs list -o name,quota,reservation
|
$ zfs list -o name,quota,reservation
|
||||||
NAME QUOTA RESERV
|
NAME QUOTA RESERV
|
||||||
zroot none none
|
zroot none none
|
||||||
@ -257,31 +256,31 @@ zroot/var none none
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### Snapshots
|
### Snapshots (快照)
|
||||||
|
|
||||||
ZFS snapshots are one of the things about zfs that are a really big deal
|
快照是ZFS 的一个非常重要的功能
|
||||||
|
|
||||||
* The space they take up is equal to the difference in data between the filesystem and its snapshot
|
* 快照占用的空间等于它和原始数据的差异量
|
||||||
* Creation time is only seconds
|
* 创建时间以秒计
|
||||||
* Recovery is as fast as you can write data.
|
* 恢复时间和写入速度相同
|
||||||
* They are easy to automate.
|
* 易于自动化
|
||||||
|
|
||||||
Actions:
|
Actions: (快照相关操作)
|
||||||
* Create
|
* Create (创建)
|
||||||
* Delete
|
* Delete (删除)
|
||||||
* Rename
|
* Rename (重命名)
|
||||||
* Access snapshots
|
* Access snapshots (访问)
|
||||||
* Send / Receive
|
* Send / Receive (发送/接收)
|
||||||
* Clone
|
* Clone (克隆)
|
||||||
|
|
||||||
|
|
||||||
Create snapshots
|
Create snapshots (创建快照)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Create a snapshot of a single dataset
|
# Create a snapshot of a single dataset (为单一数据集创建快照)
|
||||||
zfs snapshot tank/home/sarlalian@now
|
zfs snapshot tank/home/sarlalian@now
|
||||||
|
|
||||||
# Create a snapshot of a dataset and its children
|
# Create a snapshot of a dataset and its children (为数据集及其子集创建快照)
|
||||||
$ zfs snapshot -r tank/home@now
|
$ zfs snapshot -r tank/home@now
|
||||||
$ zfs list -t snapshot
|
$ zfs list -t snapshot
|
||||||
NAME USED AVAIL REFER MOUNTPOINT
|
NAME USED AVAIL REFER MOUNTPOINT
|
||||||
@ -291,65 +290,64 @@ tank/home/alice@now 0 - 156M -
|
|||||||
tank/home/bob@now 0 - 156M -
|
tank/home/bob@now 0 - 156M -
|
||||||
...
|
...
|
||||||
|
|
||||||
Destroy snapshots
|
Destroy snapshots (删除快照)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# How to destroy a snapshot
|
# How to destroy a snapshot (如何删除)
|
||||||
$ zfs destroy tank/home/sarlalian@now
|
$ zfs destroy tank/home/sarlalian@now
|
||||||
|
|
||||||
# Delete a snapshot on a parent dataset and its children
|
# Delete a snapshot on a parent dataset and its children (删除某一数据集及其子集的快照)
|
||||||
$ zfs destroy -r tank/home/sarlalian@now
|
$ zfs destroy -r tank/home/sarlalian@now
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Renaming Snapshots
|
Renaming Snapshots (重命名)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Rename a snapshot
|
# Rename a snapshot (重命名快照,示例)
|
||||||
$ zfs rename tank/home/sarlalian@now tank/home/sarlalian@today
|
$ zfs rename tank/home/sarlalian@now tank/home/sarlalian@today
|
||||||
$ zfs rename tank/home/sarlalian@now today
|
$ zfs rename tank/home/sarlalian@now today
|
||||||
|
|
||||||
# zfs rename -r tank/home@now @yesterday
|
# zfs rename -r tank/home@now @yesterday
|
||||||
```
|
```
|
||||||
|
|
||||||
Accessing snapshots
|
Accessing snapshots (访问快照)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# CD Into a snapshot directory
|
# CD Into a snapshot directory (cd进入一个快照目录)
|
||||||
$ cd /home/.zfs/snapshot/
|
$ cd /home/.zfs/snapshot/
|
||||||
```
|
```
|
||||||
|
|
||||||
Sending and Receiving
|
Sending and Receiving
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Backup a snapshot to a file
|
# Backup a snapshot to a file (备份快照到一个文件)
|
||||||
$ zfs send tank/home/sarlalian@now | gzip > backup_file.gz
|
$ zfs send tank/home/sarlalian@now | gzip > backup_file.gz
|
||||||
|
|
||||||
# Send a snapshot to another dataset
|
# Send a snapshot to another dataset (发送快照到另一个数据集)
|
||||||
$ zfs send tank/home/sarlalian@now | zfs recv backups/home/sarlalian
|
$ zfs send tank/home/sarlalian@now | zfs recv backups/home/sarlalian
|
||||||
|
|
||||||
# Send a snapshot to a remote host
|
# Send a snapshot to a remote host (发送快照到一个远程主机)
|
||||||
$ zfs send tank/home/sarlalian@now | ssh root@backup_server 'zfs recv tank/home/sarlalian'
|
$ zfs send tank/home/sarlalian@now | ssh root@backup_server 'zfs recv tank/home/sarlalian'
|
||||||
|
|
||||||
# Send full dataset with snapshos to new host
|
# Send full dataset with snapshos to new host (发送数据集及其快照到一个新主机)
|
||||||
$ zfs send -v -R tank/home@now | ssh root@backup_server 'zfs recv tank/home'
|
$ zfs send -v -R tank/home@now | ssh root@backup_server 'zfs recv tank/home'
|
||||||
```
|
```
|
||||||
|
|
||||||
Cloneing Snapshots
|
Cloneing Snapshots (克隆快照)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Clone a snapshot
|
# Clone a snapshot
|
||||||
$ zfs clone tank/home/sarlalian@now tank/home/sarlalian_new
|
$ zfs clone tank/home/sarlalian@now tank/home/sarlalian_new
|
||||||
|
|
||||||
# Promoting the clone so it is no longer dependent on the snapshot
|
# Promoting the clone so it is no longer dependent on the snapshot(提升克隆,让它不再依赖原始数据)
|
||||||
$ zfs promote tank/home/sarlalian_new
|
$ zfs promote tank/home/sarlalian_new
|
||||||
```
|
```
|
||||||
|
|
||||||
### Putting it all together
|
### Putting it all together (汇总)
|
||||||
|
|
||||||
This following a script utilizing FreeBSD, jails and ZFS to automate
|
下面这个脚本使用了FreeBSD, jails和ZFS,来自动在一个mysql群集的热备主机上为一个mysq staging数据库
|
||||||
provisioning a clean copy of a mysql staging database from a live replication
|
创建一份纯净的拷贝。
|
||||||
slave.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
@ -390,7 +388,7 @@ echo "RESET SLAVE;" | /usr/local/bin/mysql -u root -pmyrootpassword -h staging
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### Additional Reading
|
### Additional Reading (延伸阅读)
|
||||||
|
|
||||||
* [BSDNow's Crash Course on ZFS](http://www.bsdnow.tv/tutorials/zfs)
|
* [BSDNow's Crash Course on ZFS](http://www.bsdnow.tv/tutorials/zfs)
|
||||||
* [FreeBSD Handbook on ZFS](https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/zfs.html)
|
* [FreeBSD Handbook on ZFS](https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/zfs.html)
|
||||||
|
Loading…
Reference in New Issue
Block a user