Tuesday Dec 19, 2006

ZFS文件系统 - (1) zpool create/destroy

        要建立ZFS文件系统,首先要建立一个pool,这个pool是所有在它之上的文件系统所共享的存储空间,当然,每一个文件系统的大小容量等可以分别设定,这个我们以后再分别详细讲述。那么pool是什么?简单的讲,一个pool本身就是一个zfs文件系统,只是它同时又是所有在它之上的文件系统的父文件系统,它确定了整个建立于它之上的所有ZFS文件系统的基本属性,例如,它是一个简单pool还是一个mirror,或者raidz池。它具有zfs文件系统的所以属性,例如在其之上建立文件,目录,创建snapshot,clone等等,同时在它之上还可以进行对pool管理的所有操作。例如,add或remove设备,扩充或缩小池的大小,以及attach或者detach设备等等。

        zpool create的语法如下


zpool create [-fn] [-R root] [-m mountpoint] pool vdev ...

-f    强制执行创建池操作,甚至正在被其他的文件系统所占用
-n    显示配置信息。注:用该参数,该操作并不真正执行
-R    指定整个pool的根目录。也就是所以在这个pool之上的zfs文件系统的mount目录前缀。默认值:/
-m    mount点

pool    所要建立的pool的名字
vdev    "virtual device".具体说包括三类:disk,file和keywords
           disk:就是位于/dev/dsk下的设备文件
           file:普通的文件
           keywords:包括mirror, raidz, raidz1, raidz2 和 spare
 


下来我们看几个个例子,

1. 创建一个无冗余的pool。

        # zpool create tank c1t4d0 

2. 创建一个两路mirror

# zpool create mypool mirror c1t3d0 c1t4d0

3. 创建一个raidz池

# zpool create -f tank raidz2 c2t5d0 c2t4d0 c2t2d0
4. 创建一个带hot spare的池
# zpool create tank c2t5d0 spare c2t4d0

5. 创建一个pool并指定根目录和mount点

# zpool create -f -R /zfsdir -m /root tank c2t4d0
# zfs list
NAME   USED  AVAIL  REFER  MOUNTPOINT
tank    91K  16.5G  24.5K  /zfsdir/root

        /zfsdir就是以后所有创建与tank之上的文件系统mount点前缀,包括tank本身。/root是mount点。

6. 查看创建一个pool结果,但不真正执行

# zpool create -n -R /zfsdir -m /root tank c2t5d0
would create 'tank' with the following layout:

        tank
          c2t5d0

 

      相对应于create,自然就有destroy。destroy的语法如下


zpool destroy [-f] pool

-f    强行删除


 例如

# zpool destroy tank
# zpool create tank c2t5d0
# zfs mount
tank                            /tank
# cd /tank
# zpool destroy tank
cannot unmount '/tank': Device busy
could not destroy 'tank': could not unmount datasets
# zpool destroy -f tank

        通过zfs mount查出tank的mount点,然后进入并占用mount目录,这样当试图删除时系统就会报错。用参数-f,系统将删除tank而忽略警告信息。

About

forrest

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today