设为首页 收藏本站
查看: 757|回复: 0

[经验分享] Ubuntu 16.04 LTS软件包管理基本操作

[复制链接]

尚未签到

发表于 2018-4-30 16:01:48 | 显示全部楼层 |阅读模式
导读ZFS文件系统的英文名称为ZettabyteFileSystem,也叫动态文件系统(DynamicFileSystem),是第一个128位文件系统。最初是由Sun公司为Solaris10操作系统开发的文件系统。作为OpenSolaris开源计划的一部分,ZFS于2005年11月发布,被Sun称为是终极文件系统,经历了10年的活跃开发,而最新的开发将全面开放,并重新命名为OpenZFS。  ZFS优势
  ZFS是一种先进的、高度可扩展的文件系统,最初是由Sun Microsystems开发的,现在OpenZFS是项目的一部分。有这么多文件系统可用在Linux上,那自然要问ZFS有什么特别之处。不同于其它文件系统,它不仅是一个文件系统逻辑卷管理器。ZFS使其受欢迎的特性是:
  1. 数据完整性——数据一致性和完整性通过即写即拷和校验技术保证。
  2. 存储空间池——可用存储驱动器一起放入称为zpool的单个池。
  3. 软件RAID ——像发出一个命令一样,建立一个raidz数组。
  4. 内置的卷管理器——ZFS充当卷管理器。
  5. Snapshots、克隆、压缩——这些都是一些ZFS提供的高级功能。
  在本指南中,我们将学习在CentOS 7服务器上如何安装、设置和使用一些重要的ZFS命令。
  术语
  在我们继续之前,让我们了解一些ZFS的常用的术语。
  Pool:存储驱动器的逻辑分组,它是ZFS的基本构建块,从这里将存储空间分配给数据集。
  Datasets:ZFS文件系统的组件即文件系统、克隆、快照和卷被称为数据集。
  Mirror:一个虚拟设备存储相同的两个或两个以上的磁盘上的数据副本,在一个磁盘失败的情况下,相同的数据是可以用其他磁盘上的镜子。
  Resilvering:在恢复设备时将数据从一个磁盘复制到另一个磁盘的过程。
  Scrub:擦除用于一致性检验在ZFS像在其他文件系统如何使用fsck。
  安装ZFS
  为了对CentOS安装ZFS,我们需要先安装支持包EPEL仓库,然后在ZFS存储库上安装所需的ZFS包。
yum localinstall --nogpgcheck http://epel.mirror.net.in/epel/7/x86_64/e/epel-release-7-5.noarch.rpm  
yum localinstall --nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm
  现在安装内核开发和zfs包,内核开发的软件包是需要ZFS建立模块和插入到内核中。
yum install kernel-devel zfs  验证zfs模块插入到内核使用的lsmod命令,如果没有,使用‘modprobe命令手动插入它。
[root@li1467-130 ~]# lsmod |grep zfs  
[root@li1467-130 ~]# modprobe zfs
  
[root@li1467-130 ~]# lsmod |grep zfs
  
zfs 2790271 0
  
zunicode 331170 1 zfs
  
zavl 15236 1 zfs
  
zcommon 55411 1 zfs
  
znvpair 89086 2 zfs,zcommon
  
spl 92029 3 zfs,zcommon,znvpair
  让我们检查是否我们可以使用zfs的命令:
[root@li1467-130 ~]# zfs list  
no datasets available
  管理
  ZFS主要有两个工具,zpool和ZFS。zpool处理使用磁盘实用程序创建和维护ZFS池负责数据的创建和维护。
  zpool utility
  创建和销毁池
  首先验证可用的磁盘创建一个存储池。
[root@li1467-130 ~]# ls -l /dev/sd*  
brw-rw---- 1 root disk 8,  0  Mar 16 08:12 /dev/sda
  
brw-rw---- 1 root disk 8, 16 Mar 16 08:12 /dev/sdb
  
brw-rw---- 1 root disk 8, 32 Mar 16 08:12 /dev/sdc
  
brw-rw---- 1 root disk 8, 48 Mar 16 08:12 /dev/sdd
  
brw-rw---- 1 root disk 8, 64 Mar 16 08:12 /dev/sde
  
brw-rw---- 1 root disk 8, 80 Mar 16 08:12 /dev/sdf
  创建一个池的驱动器。
zpool create  <pool name.   ....  
[root@li1467-130 ~]# zpool create -f zfspool sdc sdd sde sdf
  zpool状态的命令显示可用池的状态。
[root@li1467-130 ~]# zpool status  
pool: zfspool
  
state: ONLINE
  
scan: none requested
  
config:
  
NAME STATE READ WRITE CKSUM
  
zfspool ONLINE 0 0 0
  
sdc ONLINE 0 0 0
  
sdd ONLINE 0 0 0
  
sde ONLINE 0 0 0
  
sdf ONLINE 0 0 0
  
errors: No known data errors
  验证如果池创建成功。
[root@li1467-130 ~]# df -h  
Filesystem    Size   Used      Avail  Use%   Mounted on
  
/dev/sda      19G    1.4G        17G      8%      /
  
devtmpfs    488M        0      488M      0%     /dev
  
tmpfs          497M        0      497M      0%    /dev/shm
  
tmpfs          497M    50M     447M     11%   /run
  
tmpfs          497M         0     497M      0%   /sys/fs/cgroup
  
tmpfs          100M         0     100M      0%   /run/user/0
  
zfspool         3.7G         0       3.7G      0%  /zfspoolv
  如你所见,使用zpool创造了一个池的名字zfspool大小3.7 GB的空间,同时挂载在/ zfspool。
  用命令 'zpool destroy' 销毁一个地址池:
zpool destroy  
[root@li1467-130 ~]# zpool destroy zfspool
  
[root@li1467-130 ~]# zpool status
  
no pools available
  现在让我们尝试创建一个简单的镜像池。
zpool create   mirror  ...  通过重复关键字的驱动器我们可以创建多个镜像。
[root@li1467-130 ~]# zpool create -f mpool mirror sdc sdd mirror sde sdf  
[root@li1467-130 ~]# zpool status
  
pool: mpool
  
state: ONLINE
  
scan: none requested
  
config:
  
NAME STATE READ WRITE CKSUM
  
mpool ONLINE 0 0 0
  
mirror-0 ONLINE 0 0 0
  
sdc ONLINE 0 0 0
  
sdd ONLINE 0 0 0
  
mirror-1 ONLINE 0 0 0
  
sde ONLINE 0 0 0
  
sdf ONLINE 0 0 0
  
errors: No known data errors
  在上面的例子中,我们创建了每两个磁盘镜像池。
  同样的,我们可以创建一个raidz池。
[root@li1467-130 ~]# zpool create -f rpool raidz sdc sdd sde sdf  
[root@li1467-130 ~]# zpool status
  
pool: rpool
  
state: ONLINE
  
scan: none requested
  
config:
  
NAME STATE READ WRITE CKSUM
  
rpool ONLINE 0 0 0
  
raidz1-0 ONLINE 0 0 0
  
sdc ONLINE 0 0 0
  
sdd ONLINE 0 0 0
  
sde ONLINE 0 0 0
  
sdf ONLINE 0 0 0
  
errors: No known data errors
  在ZFS池管理设备
  一旦创建一个池,从池中可以添加或删除热备件和缓存设备,从镜像池和替换设备中连接或者分离。但是冗余和raidz设备不能从池中删除。我们将看到如何在这一节中执行这些操作。
  我首先创建一个池称为“testpool”组成的两个设备,sdc和sdd。另一个设备sde将被添加到这里。
[root@li1467-130 ~]# zpool create -f testpool sdc sdd  
[root@li1467-130 ~]# zpool add testpool sde
  
[root@li1467-130 ~]# zpool status
  
pool: testpool
  
state: ONLINE
  
scan: none requested
  
config:
  
NAME STATE READ WRITE CKSUM
  
testpool ONLINE 0 0 0
  
sdc ONLINE 0 0 0
  
sdd ONLINE 0 0 0
  
sde ONLINE 0 0 0
  
errors: No known data errors
  正如前面提到的,我不能删除这个新添加的设备,因为它不是一个冗余或raidz池。
[root@li1467-130 ~]# zpool remove testpool sde  
cannot remove sde: only inactive hot spares, cache, top-level, or log devices can be removed
  但我可以在这个池添加一个空闲磁盘和删除它。
[root@li1467-130 ~]# zpool add testpool spare sdf  
[root@li1467-130 ~]# zpool status
  
pool: testpool
  
state: ONLINE
  
scan: none requested
  
config:
  
NAME STATE READ WRITE CKSUM
  
testpool ONLINE 0 0 0
  
sdc ONLINE 0 0 0
  
sdd ONLINE 0 0 0
  
sde ONLINE 0 0 0
  
spares
  
sdf AVAIL
  
errors: No known data errors
  
[root@li1467-130 ~]# zpool remove testpool sdf
  
[root@li1467-130 ~]# zpool status
  
pool: testpool
  
state: ONLINE
  
scan: none requested
  
config:
  
NAME        STATE       READ  WRITE   CKSUM
  
testpool    ONLINE       0          0               0
  
sdc            ONLINE       0           0               0
  
sdd            ONLINE      0            0               0
  
sde            ONLINE      0            0               0
  
errors: No known data errors
  同样的,我们可以使用attach命令附加磁盘镜像或非镜像的池和detach命令从镜像磁盘池来分离。
zpool attach  
zpool detach
  当设备发生故障或损坏,我们可以使用replace命令替换它。
zpool replace  在镜像配置当中我们将爆力的测试一个设备。
[root@li1467-130 ~]# zpool create -f testpool mirror sdd sde  这将创建一个镜像磁盘池组成的SDD和SDE。现在,让我们故意损坏SDD写零到磁盘中。
[root@li1467-130 ~]# dd if=/dev/zero of=/dev/sdd  
dd: writing to ‘/dev/sdd’: No space left on device
  
2048001+0 records in
  
2048000+0 records out
  
1048576000 bytes (1.0 GB) copied, 22.4804 s, 46.6 MB/s
  我们将使用“scrub”命令来检测这种损坏。
[root@li1467-130 ~]# zpool scrub testpool  
[root@li1467-130 ~]# zpool status
  
pool: testpool
  
state: ONLINE
  
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
  
scan: scrub repaired 0 in 0h0m with 0 errors on Fri Mar 18 09:59:40 2016
  
config:
  
NAME STATE READ WRITE CKSUM
  
testpool ONLINE 0 0 0
  
mirror-0 ONLINE 0 0 0
  
sdd UNAVAIL 0 0 0 corrupted data
  
sde ONLINE 0 0 0
  
errors: No known data errors
  现在我们用SDC替换SDD。
[root@li1467-130 ~]# zpool replace testpool sdd sdc; zpool status  
pool: testpool
  
state: ONLINE
  
scan: resilvered 83.5K in 0h0m with 0 errors on Fri Mar 18 10:05:17 2016
  
config:
  
NAME STATE READ WRITE CKSUM
  
testpool ONLINE 0 0 0
  
mirror-0 ONLINE 0 0 0
  
replacing-0 UNAVAIL 0 0 0
  
sdd UNAVAIL 0 0 0 corrupted data
  
sdc ONLINE 0 0 0
  
sde ONLINE 0 0 0
  
errors: No known data errors
  
[root@li1467-130 ~]# zpool status
  
pool: testpool
  
state: ONLINE
  
scan: resilvered 74.5K in 0h0m with 0 errors on Fri Mar 18 10:00:36 2016
  
config:
  
NAME STATE READ WRITE CKSUM
  
testpool ONLINE 0 0 0
  
mirror-0 ONLINE 0 0 0
  
sdc ONLINE 0 0 0
  
sde ONLINE 0 0 0
  
errors: No known data errors
  池的迁移
  我们可以使用导出和导入命令在不同的主机之间迁移存储池。对于这个,在池中使用的磁盘应该从两个系统中可用。
[root@li1467-130 ~]# zpool export testpool  
[root@li1467-130 ~]# zpool status
  
no pools available
  zpool import命令列出所有可以利用的池。执行这个系统命令,你想要导入的池。
[root@li1467-131 ~]# zpool import  
pool: testpool
  
id: 3823664125009563520
  
state: ONLINE
  
action: The pool can be imported using its name or numeric identifier.
  
config:
  
testpool ONLINE
  
sdc ONLINE
  
sdd ONLINE
  
sde ONLINE
  现在导入要求的池。
[root@li1467-131 ~]# zpool import testpool  
[root@li1467-131 ~]# zpool status
  
pool: testpool
  
state: ONLINE
  
scan: none requested
  
config:
  
NAME STATE READ WRITE CKSUM
  
testpool ONLINE 0 0 0
  
sdc ONLINE 0 0 0
  
sdd ONLINE 0 0 0
  
sde ONLINE 0 0 0
  
errors: No known data errors
  iostat
  Iostat命令可以验证池设备IO统计。
[root@li1467-130 ~]# zpool iostat -v testpool  
capacity          operations                        bandwidth
  
pool          alloc      free            read     write             read   write
  
----------    -----     -----            -----     -----                -----   -----
  
testpool    1.80M  2.86G        22            27               470K  417K
  
sdc             598K   975M           8              9               200K  139K
  
sdd             636K  975M            7              9                135K  139K
  
sde             610K   975M           6              9                 135K 139K
  
----------   -----     -----           -----          -----               -----  -----
  zfs utility
  我们现在会移动到ZFS utility。在这里,我们将看看如何创建、销毁数据集、文件系统压缩、配额和快照。
  创建和销毁文件系统
  ZFS文件系统可以使用ZFS创建命令创建
zfs create  
[root@li1467-130 ~]# zfs create testpool/students
  
[root@li1467-130 ~]# zfs create testpool/professors
  
[root@li1467-130 ~]# df -h
  
Filesystem                    Size             Used          Avail          Use%          Mounted on
  
/dev/sda                       19G              1.4G          17G             8%                     /
  
devtmpfs                   488M                  0      488M             0%                    /dev
  
tmpfs                          497M                  0       497M            0%                   /dev/shm
  
tmpfs                          497M            50M       447M           11%                  /run
  
tmpfs                          497M                 0        497M            0%                /sys/fs/cgroup
  
testpool                       2.8G                  0         2.8G            0%               /testpool
  
tmpfs                          100M                  0        100M            0%             /run/user/0
  
testpool/students     2.8G                   0         2.8G             0%            /testpool/students
  
testpool/professors  2.8G                   0         2.8G             0%           /testpool/professors
  从上面的输出注意到,在文件系统创建时尽管没有挂载点,挂载点创建时使用相同的路径关系池。
  ZFS创建允许使用-o选项可以指定使用像挂载点,压缩、定额、执行等。
  你可以列出可用的文件系统使用ZFS的列表:
[root@li1467-130 ~]# zfs list  
NAME                           USED     AVAIL     REFER    MOUNTPOINT
  
testpool                         100M       2.67G       19K         /testpool
  
testpool/professors        31K     1024M   20.5K        /testpool/professors
  
testpool/students        1.57M     98.4M   1.57M      /testpool/students
  我们用销毁选项销毁文件系统。
  zfs destroy
  压缩
  现在我们将了解在ZFS怎样压缩,在我们开始使用压缩之前,我们需要使它使用“设置压缩”。
zfs set  一旦这样做,压缩和解压缩将以透明模式发生在文件系统上面。
  在我们的示例中,我将使学生目录使用lz4压缩算法压缩。
[root@li1467-130 ~]# zfs set compression=lz4 testpool/students  我现在要复制一个文件到该文件系统大小15m,并检查它的大小。
[root@li1467-130 /]# cd /var/log  
[root@li1467-130 log]# du -h secure
  
15M secure
  
[root@li1467-130 ~]# cp /var/log/secure /testpool/students/
  
[root@li1467-130 students]# df -h .
  
Filesystem               Size     Used   Avail    Use%      Mounted on
  
testpool/students   100M   1.7M   99M        2%      /testpool/students
  注意,使用文件系统的大小仅为1.7m,文件大小为15m,我们可以检查压缩比。
[root@li1467-130 ~]# zfs get compressratio testpool  
NAME      PROPERTY         VALUE            SOURCE
  
testpool    compressratio     9.03x
  配额和预订
  让我用一个真实的例子来解释配额。假设我们有一个要求,在一所大学,以限制磁盘空间使用的文件系统为教授和学生。让我们假设我们需要分配给教授和学生分为1GB和100MB。我们可以利用“配额”在ZFS来满足这一要求。配额确保文件系统使用的磁盘空间的数量不超过规定的限度。保留有助于在实际分配和保证所需的磁盘空间的数量是可用的文件系统。
zfs set quota=  
zfs set reservation=
  
[root@li1467-130 ~]# zfs set quota=100M testpool/students
  
[root@li1467-130 ~]# zfs set reservation=100M testpool/students
  
[root@li1467-130 ~]# zfs list
  
NAME                          USED      AVAIL    REFER    MOUNTPOINT
  
testpool                        100M       2.67G       19K        /testpool
  
testpool/professors      19K       2.67G        19K       /testpool/professors
  
testpool/students      1.57M       98.4M    1.57M    /testpool/students
  
[root@li1467-130 ~]# zfs set quota=1G testpool/professors
  
[root@li1467-130 ~]# zfs list
  
NAME                           USED     AVAIL    REFER    MOUNTPOINT
  
testpool                         100M     2.67G       19K          /testpool
  
testpool/professors       19K    1024M       19K         /testpool/professors
  
testpool/students       1.57M    98.4M    1.57M       /testpool/students
  在上面的例子中,我们已经给教授和学生为1GB与100MB。观察ZFS列表结果,最初,他们有2.67gb每个的大小和设置配额,价值也随之发生了相应的变化。
  快照
  快照是在某个时间点的ZFS文件系统的只读副本。他们不在ZFS池消耗任何额外的空间。我们可以回滚到相同的状态,在稍后的阶段,按用户要求或仅提取一个单一的或一组文件。
  我现在就从我们前面的例子,然后在在testpool/professors把这个文件系统快照创建一些目录和文件。
[root@li1467-130 ~]# cd /testpool/professors/  
[root@li1467-130 professors]# mkdir maths physics chemistry
  
[root@li1467-130 professors]# cat > qpaper.txt
  
Question paper for the year 2016-17
  
[root@li1467-130 professors]# ls -la
  
total 4
  
drwxr-xr-x  5  root root    6   Mar 19 10:34 .
  
drwxr-xr-x  4  root root    4   Mar 19 09:59 ..
  
drwxr-xr-x  2  root root    2   Mar 19 10:33 chemistry
  
drwxr-xr-x  2  root root    2   Mar 19 10:32 maths
  
drwxr-xr-x  2  root root    2   Mar 19 10:32 physics
  
-rw-r--r--     1  root root  36   Mar 19 10:35 qpaper.txt
  快照,可以使用下面的语法:
zfs snapshot <filesystem|volume@>  
[root@li1467-130 professors]# zfs snapshot testpool/professors@03-2016
  
[root@li1467-130 professors]# zfs list -t snapshot
  
NAME                                             USED         AVAIL     REFER     MOUNTPOINT
  
testpool/professors@03-2016       0                -                20.5K
  我现在将删除创建的文件和提取的快照。
[root@li1467-130 professors]# rm -rf qpaper.txt  
[root@li1467-130 professors]# ls
  
chemistry maths physics
  
[root@li1467-130 professors]# cd .zfs
  
[root@li1467-130 .zfs]# cd snapshot/03-2016/
  
[root@li1467-130 03-2016]# ls
  
chemistry maths physics qpaper.txt
  
[root@li1467-130 03-2016]# cp -a qpaper.txt /testpool/professors/
  
[root@li1467-130 03-2016]# cd /testpool/professors/
  
[root@li1467-130 professors]# ls
  
chemistry maths physics qpaper.txt
  已删除的文件返回其位置。
  我们可以列出所有可用的快照使用ZFS的列表:
[root@li1467-130 ~]# zfs list -t snapshot  
NAME                                             USED     AVAIL    REFER    MOUNTPOINT
  
testpool/professors@03-2016    10.5K       -              20.5K       -
  最后,让我们使用zfs摧毁命令销毁快照:
zfs destroy <filesystem|volume@>  

  
[root@li1467-130 ~]# zfs destroy testpool/professors@03-2016
  
[root@li1467-130 ~]# zfs list -t snapshot
  
no datasets available
  结论
  在这篇文章中,您学到了如何在CentOS 7安装ZFS和使用一些基本的和重要的从zpool命令和ZFS实用程序。这不是一个全面的列表。ZFS有着更多的功能,你可以进一步的探索官方页面。
  本文转载自:http://www.iyunv.com/centos7-install-use-zfs/
  免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.iyunv.com/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-454170-1-1.html 上篇帖子: ubuntu mysql5.6 数据库占用CPU过高导致机器卡死 下篇帖子: 关于ubuntu 14.04 dpkg 问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表