分类 系统运维 下的文章

这是我们正在进行的Linux命令和性能监控系列的一部分。vmstatiostat两个命令都适用于所有主要的类unix系统(Linux/unix/FreeBSD/Solaris)。

如果vmstatiostat命令在你的系统中不可用,请安装sysstat软件包。vmstatsariostat命令都包含在sysstat(系统监控工具)软件包中。iostat命令生成CPU和所有设备的统计信息。你可以从这个连接中下载源代码包编译安装sysstat,但是我们建议通过YUM命令进行安装。

在Linux系统中安装sysstat

#yum -y install sysstat
  • vmstat - 内存,进程和分页等的简要信息。
  • iostat - CPU统计信息,设备和分区的输入/输出统计信息。

Linux下vmstat命令的6个范例

1. 列出活动和非活动的内存

如下范例中输出6列。vmstat的man页面中解析的每一列的意义。最重要的是内存中的free属性和交换分区中的siso属性。

[root@tecmint ~]# vmstat -a

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 810420  97380  70628    0    0   115     4   89   79  1  6 90  3  0
  • Free – 空闲的内存空间
  • si – 每秒从磁盘中交换进内存的数据量(以KB为单位)。
  • so – 每秒从内存中交换出磁盘的数据量(以KB为单位)。

注意:如果你不带参数的执行vmstat命令,它会输出自系统启动以来的总结报告。

2. 每X秒执行vmstat,共执行N次

下面命令将会每2秒中执行一次vmstat,执行6次后自动停止执行。

[root@tecmint ~]# vmstat 2 6

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 810420  22064 101368    0    0    56     3   50   57  0  3 95  2  0
 0  0      0 810412  22064 101368    0    0     0     0   16   35  0  0 100  0  0
 0  0      0 810412  22064 101368    0    0     0     0   14   35  0  0 100  0  0
 0  0      0 810412  22064 101368    0    0     0     0   17   38  0  0 100  0  0
 0  0      0 810412  22064 101368    0    0     0     0   17   35  0  0 100  0  0
 0  0      0 810412  22064 101368    0    0     0     0   18   36  0  1 100  0  0

3. 带时间戳的vmstat命令

-t参数执行vmstat命令,该命令将会在每一行输出后都带一个时间戳,如下所示。

[tecmint@tecmint ~]$ vmstat -t 1 5

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ ---timestamp---
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 632028  24992 192244    0    0    70     5   55   78  1  3 95  1  0        2012-09-02 14:57:18 IST
 1  0      0 632028  24992 192244    0    0     0     0  171  514  1  5 94  0  0        2012-09-02 14:57:19 IST
 1  0      0 631904  24992 192244    0    0     0     0  195  600  0  5 95  0  0        2012-09-02 14:57:20 IST
 0  0      0 631780  24992 192244    0    0     0     0  156  524  0  5 95  0  0        2012-09-02 14:57:21 IST
 1  0      0 631656  24992 192244    0    0     0     0  189  592  0  5 95  0  0        2012-09-02 14:57:22 IST

4. 统计各种计数器

vmstat命令的-s参数,将输出各种事件计数器和内存的统计信息。

[tecmint@tecmint ~]$ vmstat -s

      1030800  total memory
       524656  used memory
       277784  active memory
       185920  inactive memory
       506144  free memory
        26864  buffer memory
       310104  swap cache
      2064376  total swap
            0  used swap
      2064376  free swap
         4539 non-nice user cpu ticks
            0 nice user cpu ticks
        11569 system cpu ticks
       329608 idle cpu ticks
         5012 IO-wait cpu ticks
           79 IRQ cpu ticks
           74 softirq cpu ticks
            0 stolen cpu ticks
       336038 pages paged in
        67945 pages paged out
            0 pages swapped in
            0 pages swapped out
       258526 interrupts
       392439 CPU context switches
   1346574857 boot time
     2309 forks

5. 磁盘统计信息

vmstat-d参数将会输出所有磁盘的统计信息。

[tecmint@tecmint ~]$ vmstat -d

disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
ram0       0      0       0       0      0      0       0       0      0      0
ram1       0      0       0       0      0      0       0       0      0      0
ram2       0      0       0       0      0      0       0       0      0      0
ram3       0      0       0       0      0      0       0       0      0      0
ram4       0      0       0       0      0      0       0       0      0      0
ram5       0      0       0       0      0      0       0       0      0      0
ram6       0      0       0       0      0      0       0       0      0      0
ram7       0      0       0       0      0      0       0       0      0      0
ram8       0      0       0       0      0      0       0       0      0      0
ram9       0      0       0       0      0      0       0       0      0      0
ram10      0      0       0       0      0      0       0       0      0      0
ram11      0      0       0       0      0      0       0       0      0      0
ram12      0      0       0       0      0      0       0       0      0      0
ram13      0      0       0       0      0      0       0       0      0      0
ram14      0      0       0       0      0      0       0       0      0      0
ram15      0      0       0       0      0      0       0       0      0      0
loop0      0      0       0       0      0      0       0       0      0      0
loop1      0      0       0       0      0      0       0       0      0      0
loop2      0      0       0       0      0      0       0       0      0      0
loop3      0      0       0       0      0      0       0       0      0      0
loop4      0      0       0       0      0      0       0       0      0      0
loop5      0      0       0       0      0      0       0       0      0      0
loop6      0      0       0       0      0      0       0       0      0      0
loop7      0      0       0       0      0      0       0       0      0      0
sr0        0      0       0       0      0      0       0       0      0      0
sda     7712   5145  668732  409619   3282  28884  257402  644566      0    126
dm-0   11578      0  659242 1113017  32163      0  257384 8460026      0    126
dm-1     324      0    2592    3845      0      0       0       0      0      2

6. 以MB为单位输出统计信息

vmstat-S-M参数(大写和MB)将会以MB为单位输出。vmstat默认以KB为单位输出统计信息。

[root@tecmint ~]# vmstat -S M 1 5

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0    346     53    476    0    0    95     8   42   55  0  2 96  2  0
 0  0      0    346     53    476    0    0     0     0   12   15  0  0 100  0  0
 0  0      0    346     53    476    0    0     0     0   32   62  0  0 100  0  0
 0  0      0    346     53    476    0    0     0     0   15   13  0  0 100  0  0
 0  0      0    346     53    476    0    0     0     0   34   61  0  1 99  0  0

linux下的Iostat命令的6个范例

1. 输出CPU和输入/输出(I/O)的统计信息

不带参数的iostat命令将会输出CPU和每个分区的输出/输出的统计信息,如下所示。

[root@tecmint ~]# iostat

Linux 2.6.32-279.el6.i686 (tecmint.com)         09/03/2012      _i686_  (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.12    0.01    1.54    2.08    0.00   96.24

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               3.59       161.02        13.48    1086002      90882
dm-0              5.76       159.71        13.47    1077154      90864
dm-1              0.05         0.38         0.00       2576          0

2. 只输出CPU的统计信息

iostat命令的-c参数仅输出CPU的统计信息,如下所示。

[root@tecmint ~]# iostat -c

Linux 2.6.32-279.el6.i686 (tecmint.com)         09/03/2012      _i686_  (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.12    0.01    1.47    1.98    0.00   96.42

3. 只输出磁盘的输入/输出统计信息

iostat命令的-d参数仅输出磁盘的所有分区的输入/输出的统计信息,如下所示。

[root@tecmint ~]# iostat -d

Linux 2.6.32-279.el6.i686 (tecmint.com)         09/03/2012      _i686_  (1 CPU)

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               3.35       149.81        12.66    1086002      91746
dm-0              5.37       148.59        12.65    1077154      91728
dm-1              0.04         0.36         0.00       2576          0

4. 只输出某个磁盘的输入/输出统计信息

在默认情况下iostat命令会输出所有分区的统计信息,但是若在iostat命令后加上-p参数和磁盘设备名,该命令将会仅输出列出的磁盘的输入/输出统计信息,如下所示。

[root@tecmint ~]# iostat -p sda

Linux 2.6.32-279.el6.i686 (tecmint.com)         09/03/2012      _i686_  (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.11    0.01    1.44    1.92    0.00   96.52

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               3.32       148.52        12.55    1086002      91770
sda1              0.07         0.56         0.00       4120         18
sda2              3.22       147.79        12.55    1080650      91752

5. 输出逻辑卷管理(LVM)的统计信息

iostat命令的-N(大写)参数将会输出LVM(LCTT译注:LVM)是linux环境下对磁盘分区进行管理的一种机制,是磁盘分区和文件系统间的一个逻辑层)的统计信息,如下所示。

[root@tecmint ~]# iostat -N

Linux 2.6.32-279.el6.i686 (tecmint.com)         09/03/2012      _i686_  (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.11    0.01    1.39    1.85    0.00   96.64

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               3.20       142.84        12.16    1086002      92466
vg_tecmint-lv_root     5.13       141.68        12.16    1077154      92448
vg_tecmint-lv_swap     0.04         0.34         0.00       2576          0

6. iostat版本信息

iostat的-V(大写)参数将会输出iostat的版本信息,如下所示。

[root@tecmint ~]# iostat -V

sysstat version 9.0.4
(C) Sebastien Godard (sysstat  orange.fr)

注意vmstatiostat的输出中包含多列的数据和标志,限于篇幅无法在本文中进行详细的解析。如果你想知道更多的信息,请查看vmstatiostat的man帮助手册。如果你觉得本文对你有价值,请在下面的评论框中与你的朋友分享。


via: http://www.tecmint.com/linux-performance-monitoring-with-vmstat-and-iostat-commands/

作者:Ravi Saive 译者:cvsher 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

问题:我的磁盘上有额外的空间,所以我想要扩展其上创建的现存的XFS文件系统,以完全使用额外空间。怎样才是扩展XFS文件系统的正确途径?

XFS是一个开源的(GPL)日志文件系统,最初由硅谷图形(SGI)开发,现在大多数的Linux发行版都支持。事实上,XFS已被最新的CentOS/RHEL 7采用,成为其默认的文件系统。在其众多的特性中,包含了“在线调整大小”这一特性,使得现存的XFS文件系统在已经挂载的情况下可以进行扩展。然而,对于XFS文件系统的缩减却还没有支持。

要扩展一个现存的XFS文件系统,你可以使用命令行工具xfs\_growfs,这在大多数Linux发行版上都默认可用。由于XFS支持在线调整大小,目标文件系统可以挂在,也可以不挂载。

下面展示了xfs\_growfs的基本用法:

作为目标XFS文件系统来扩展,你可以指定挂载点、磁盘分区或者逻辑卷(在使用LVM时),使用数据块数量来指定新的XFS文件系统的大小。你可以使用xfs\_info命令行工具来检查数据块大小和数量:

要将XFS文件扩展到1986208:

$ sudo xfs_growfs /dev/centos/root -D 1986208

如果你不使用“-D”选项来指定大小,xfs\_growfs将会自动扩展XFS文件系统到最大的可用大小。

$ sudo xfs_growfs /dev/centos/root

注意,当你扩展一个现存的XFS文件系统时,必须准备好事先添加用于XFS文件系统扩展的空间。这虽然是很显然的事,但是如果在所在的分区或磁盘卷上没有空闲空间可用的话,xfsgrowfs就没有办法了。同时,如果你尝试扩展XFS文件系统大小到超过磁盘分区或卷的大小,xfsgrowfs将会失败。


via: http://ask.xmodulo.com/expand-xfs-file-system.html

译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

前面我们已经了解了怎样使用LVM创建弹性的磁盘存储。这里,我们将了解怎样来扩展卷组,扩展和缩减逻辑卷。在这里,我们可以缩减或者扩展逻辑卷管理(LVM)中的分区,LVM也可称之为弹性卷文件系统。

前置需求

什么时候我们需要缩减卷?

或许我们需要创建一个独立的分区用于其它用途,或者我们需要扩展任何空间低的分区。遇到这种情况时,使用 LVM我们可以很容易地缩减大尺寸的分区,以及扩展空间低的分区,只要按下面几个简易的步骤来即可。

我的服务器设置 —— 需求

  • 操作系统 – 安装有LVM的CentOS 6.5
  • 服务器IP – 192.168.0.200

如何扩展卷组以及缩减逻辑卷

扩展逻辑卷

目前,我们已经有一个PV,VG和2个LV。让我们用下面的命令来列出它们。

# pvs
# vgs
# lvs

Logical Volume Extending

逻辑卷扩展

在物理卷和卷组中没有空闲空间可用了,所以,现在我们不能扩展逻辑卷的大小。要扩展,我们需要添加一个物理卷(PV),然后通过扩展vg来扩展卷组,这样我们就会得到足够大的空间来扩展逻辑卷大小了。所以,首先我们应该去添加一个物理卷。

要添加一个新PV,我们必须使用fdisk来创建一个LVM分区。

# fdisk -cu /dev/sda
  • 选择n来创建新分区。
  • 选择p来创建主分区。
  • 选择我们需要创建的分区号。
  • 如果有其它可用磁盘,请按1
  • 使用t来修改分区类型。
  • 输入8e来将分区类型修改为Linux LVM。
  • 使用p来打印创建的分区(这里我们没有使用该选项)。
  • w写入修改。

完成后重启系统。

Create LVM Partition

创建LVM分区

使用fdisk列出并检查我们创建的分区。

# fdisk -l /dev/sda

Verify LVM Partition

验证LVM分区

接下来,使用下列命令来创建新PV(物理卷)。

# pvcreate /dev/sda1

使用下面的命令来验证pv。

# pvs

Create Physical Volume

创建物理卷

扩展卷组

添加该pv到vg\_tecmint卷组来扩展卷组的大小,以获取更多空间来扩展lv

# vgextend vg_tecmint /dev/sda1

让我们检查现在正在使用的卷组的大小。

# vgs

Extend Volume Group

扩展卷组

我们甚至可以看到哪个PV用于创建使用中的特定卷组。

# pvscan

Check Volume Group

检查卷组

这里,我们可以看到卷组所处的物理卷。我们已经添加了一个pv,而且它完全空着。在扩展逻辑卷之前,让我们先看看我们所拥有的各个卷组的大小。

Check All Logical Volume

检查所有逻辑卷

  • LogVol00用于Swap。
  • LogVol01用于/。
  • 现在我们有16.50GB大小的空间用于/(root)。
  • 当前有4226物理扩展(PE)可用。

现在,我们打算去扩展/分区LogVol01。在扩展后,我们可以像上面那样列出它的大小以确认。我们能可以使用GB或PE来扩展,这一点我已经在LVM第一部分解释过了,这里我使用PE来扩展。

要获取可用的物理扩展大小,运行以下命令。

# vgdisplay

Check Available Physical Size

检查可用的物理扩展

总共有4607空闲PE可用,亦即有18GB空间空间可用。因此,我们可以将我们的逻辑卷扩展到18GB这么大。让我们使用PE大小来扩展。

# lvextend -l +4607 /dev/vg_tecmint/LogVol01

使用+来添加更多空间。在扩展后,我们需要改变文件系统大小,使用以下命令。

# resize2fs /dev/vg_tecmint/LogVol01

Expand Logical Volume 扩展逻辑卷

  • 用来使用物理扩展扩展逻辑卷的命令。
  • 这里我们可以看到它从16.51GB扩展到了34GB。
  • 如果文件系统已被挂载并处于使用中,改变文件系统大小。
  • 要扩展逻辑卷,我们不需要卸载文件系统

现在,让我们看看当前使用的改变大小后的逻辑卷。

# lvdisplay

Resize Logical Volume

改变逻辑卷大小

  • LogVol01用于扩展的卷 /。
  • 扩展后,从16.50GB上升到了34.50GB。
  • C当前扩展,在扩展前有4226,我们已经添加了4607个扩展,因此现在有8833。

现在,如果我们检查可用的vg的话,空闲PE将会是0。

# vgdisplay

查看扩展的结果。

# pvs
# vgs
# lvs

Verify Resize Partition

验证分区大小改变

  • 添加的新物理卷。
  • 卷组vg\_tecmint从17.51GB扩展到了35.50GB。
  • 逻辑卷LogVol01从16.51GB扩展到了34.50GB。

这里,我们已经完成扩展卷组和逻辑卷的过程。让我们一起迈向逻辑卷管理中一些有趣的部分。

缩减逻辑卷(LVM)

这里,我们将了解如何缩减逻辑卷。人人都说它很危险,在缩减lvm的时候可能会导致灾难。缩减lvm在逻辑卷管理中比其它部分要来得确实有趣得多。

  • 在开始之前,备份好数据总是对的,这样如果出错,就不会头痛了。
  • 要缩减逻辑卷,需要小心翼翼地完成5个步骤。
  • 在扩展一个卷的时候,我们可以在该卷挂载时扩展它(在线),但对于缩减,我们必须在缩减前卸载文件系统。

让我们来了解一下下面这5个步骤。

  • 卸载文件系统以便缩减。
  • 在卸载后检查文件系统。
  • 缩减文件系统。
  • 5减少当前逻辑卷大小。
  • 再检查文件系统以防出错。
  • 将文件系统再次挂载回去。

为了演示,我已经创建了独立的卷组和逻辑卷。这里,我将缩减逻辑卷tecmintreducetest。现在它有18GB大小,我们需要将它缩减到10GB而不丢失数据。也就是说,我们需要从18GB中减少8GB。卷中已经有4GB被使用。

18GB ---> 10GB

在缩减大小的时候,我们只需要缩减8GB,所以在缩减后它总计会有10GB。

# lvs

Reduce Logical Volume

缩减逻辑卷

这里,我们可以看到文件系统信息。

# df -h

Check File System Size

检查文件系统大小

  • 卷大小是18GB。
  • 它已经使用了3.9GB。
  • 可用空间是13GB。

首先,卸载挂载点。

# umount -v /mnt/tecmint_reduce_test/

Unmount Parition

卸载分区

然后,使用以下命令来检查文件系统错误。

# e2fsck -ff /dev/vg_tecmint_extra/tecmint_reduce_test

Scan Parition for Errors

扫描分区错误

注意:必须通过所有文件系统检查的5个步骤,若未完全通过,则你的文件系统可能存在问题。

接下来,缩减文件系统。

# resize2fs /dev/vg_tecmint_extra/tecmint_reduce_test 8GB

Reduce File System

缩减文件系统

使用GB来缩减逻辑卷。

# lvreduce -L -8G /dev/vg_tecmint_extra/tecmint_reduce_test

Reduce Logical Partition

缩减逻辑分区

要使用PE来缩减逻辑卷,我们需要知道默认PE大小和卷组的总PE大小,以进行一次小小的计算来得出准确的缩减大小。

# lvdisplay vg_tecmint_extra

这里,我们需要使用bc命令来做一些小计算来获得10GB的PE大小。

1024MB x 10GB = 10240MB or 10GB

10240MB / 4PE = 2048PE

CTRL+D来退出BC。

Calculate PE Size

计算PE大小

使用PE来缩减大小。

# lvreduce -l -2048 /dev/vg_tecmint_extra/tecmint_reduce_test

Reduce Size Using PE

使用PE来缩减大小

将文件系统大小调整回去。在这一步中,如果发生任何错误,这就意味着我们已经将文件系统搞乱了。

# resize2fs /dev/vg_tecmint_extra/tecmint_reduce_test

Resize File System

将文件系统挂载回同样的挂载点。

# mount /dev/vg_tecmint_extra/tecmint_reduce_test /mnt/tecmint_reduce_test/

Mount File System

挂载文件系统

检查分区和文件的大小。

# lvdisplay vg_tecmint_extra

这里,我们可以看到最后的结果,逻辑已经被缩减到10GB。

Verify Logical Volume Size

在本文中,我们已经了解了如何来扩增卷组、逻辑卷以及缩减逻辑卷。在下一部分(第三部分)中,我们将了解如何为逻辑卷做快照并将它恢复到更早的状态。


via: http://www.tecmint.com/extend-and-reduce-lvms-in-linux/

作者:Babin Lonston 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

使用拥有权限控制的Liunx,工作是一件轻松的任务。它可以定义任何user,group和other的权限。无论是在桌面电脑或者不会有很多用户的虚拟Linux实例,或者当用户不愿意分享他们之间的文件时,这样的工作是很棒的。然而,如果你是在一个大型组织,你运行了NFS或者Samba服务给不同的用户,然后你将会需要灵活的挑选并设置很多复杂的配置和权限去满足你的组织不同的需求。

Linux(和其他Unix等POSIX兼容的操作系统)有一种被称为访问控制列表(ACL)的权限控制方法,它是一种权限分配之外的普遍范式。例如,默认情况下你需要确认3个权限组:owner、group和other。而使用ACL,你可以增加权限给其他用户或组别,而不单只是简单的"other"或者是拥有者不存在的组别。可以允许指定的用户A、B、C拥有写权限而不再是让他们整个组拥有写权限。

ACL支持多种Linux文件系统,包括ext2, ext3, ext4, XFS, Btfrs, 等。如果你不确定你的文件系统是否支持ACL,请参考文档。

在文件系统使ACL生效

首先,我们需要安装工具来管理ACL。

Ubuntu/Debian 中:

$ sudo apt-get install acl

CentOS/Fedora/RHEL 中:

# yum -y install acl

Archlinux 中:

# pacman -S acl

出于演示目的,我将使用ubuntu server版本,其他版本类似。

安装ACL完成后,需要激活我们磁盘分区的ACL功能,这样我们才能使用它。

首先,我们检查ACL功能是否已经开启。

$ mount

你可以注意到,我的root分区中ACL属性已经开启。万一你没有开启,你需要编辑/etc/fstab文件,在你需要开启ACL的分区的选项前增加acl标记。

现在我们需要重新挂载分区(我喜欢完全重启,因为我不想丢失数据),如果你对其它分区开启ACL,你必须也重新挂载它。

$ sudo mount / -o remount

干的不错!现在我们已经在我们的系统中开启ACL,让我们开始和它一起工作。

ACL 范例

基础ACL通过两条命令管理:setfacl用于增加或者修改ACL,getfacl用于显示分配完的ACL。让我们来做一些测试。

我创建一个目录/shared给一个假设的用户,名叫freeuser

$ ls -lh /

我想要分享这个目录给其他两个用户test和test2,一个拥有完整权限,另一个只有读权限。

首先,为用户test设置ACL:

$ sudo setfacl -m u:test:rwx /shared

现在用户test可以随意创建文件夹,文件和访问在/shared目录下的任何地方。

现在我们增加只读权限给用户test2:

$ sudo setfacl -m u:test2:rx /shared

注意test2读取目录需要执行(x)权限

让我来解释下setfacl命令格式:

  • -m 表示修改ACL。你可以增加新的,或修改存在的ACL
  • u: 表示用户。你可以使用 g 来设置组权限
  • test 用户名
  • :rwx 需要设置的权限。

现在让我向你展示如何读取ACL:

$ ls -lh /shared

你可以注意到,正常权限后多一个+标记。这表示ACL已经设置成功。要具体看一下ACL,我们需要运行:

$ sudo getfacl /shared

最后,如果你需要移除ACL:

$ sudo setfacl -x u:test /shared

如果你想要立即擦除所有ACL条目:

$ sudo setfacl -b /shared

最后,在设置了ACL文件或目录工作时,cp和mv命令会改变这些设置。在cp的情况下,需要添加“p”参数来复制ACL设置。如果这不可行,它将会展示一个警告。mv默认移动ACL设置,如果这也不可行,它也会向您展示一个警告。

总结

使用ACL让在你想要分享的文件上拥有更多的能力和控制,特别是在NFS/Samba服务。此外,如果你的主管共享主机,这个工具是必备的。


via: http://xmodulo.com/2014/08/configure-access-control-lists-acls-linux.html

作者:Christopher Valerio 译者:VicYu 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

逻辑卷管理器(LVM)让磁盘空间管理更为便捷。如果一个文件系统需要更多的空间,可以在它的卷组中将空闲空间添加到其逻辑卷中,而文件系统可以根据你的意愿调整大小。如果某个磁盘启动失败,用于替换的磁盘可以使用卷组注册成一个物理卷,而逻辑卷扩展可以将数据迁移到新磁盘而不会丢失数据。

在Linux中创建LVM存储
在如今,每台服务器空间都会因为我们的需求增长而不断扩展。逻辑卷可以用于RAID,SAN。单个物理卷将会被加入组以创建卷组,在卷组中,我们需要切割空间以创建逻辑卷。在使用逻辑卷时,我们可以使用某些命令来跨磁盘、跨逻辑卷扩展,或者减少逻辑卷大小,而不用重新格式化和重新对当前磁盘分区。卷可以跨磁盘抽取数据,这会增加I/O数据量。

LVM特性

  • 可以在任何时候灵活地扩展空间。
  • 可以安装和处理任何文件系统。
  • 可以通过迁移来恢复错误磁盘。
  • 可以使用快照功能恢复文件系统到先前的阶段。等等……

我的服务器设置 - 需求

  • 操作系统 —— 安装有LVM的CentOS 6.5
  • 服务器IP地址 —— 192.168.0.200

在Linux中创建LVM磁盘存储

1. 我们已经在虚拟磁盘(VDA)中使用了带LVM的CentOS 6.5操作系统。在此,我们可以使用下列命令查看到物理卷(PV),卷组(VG),逻辑卷(LV)。

# pvs 
# vgs
# lvs

Check Physical Volumes检查物理卷
下面是上面截图中各个参数的说明。

  • 物理磁盘大小(PV Size)
  • 用作虚拟磁盘vda的磁盘
  • 卷组大小(VG Size)
  • 卷组名称(vg\_tecmint)
  • 逻辑卷名称(LogVol00,LogVol01)
  • LogVol00分配给swap,大小1GB
  • LogVol01分配给/,大小16.5GB

从上面看,我们可以知道VDA磁盘中没有足够的空闲空间。

2. 为了创建一个新卷组,我们需要在这台服务器上添加额外的3个硬盘。3个驱动器不是强制使用的,只要一个就足够用来创建新的VG,并在其中创建LV了。我在这里添加了更多的磁盘,目的只是用于演示和更多命令功能的说明。

下面是我已经额外添加的磁盘。

sda, sdb, sdc

# fdisk -l

Verify Added Disks验证添加的磁盘

  • 用于操作系统(CentOS 6.5)的默认磁盘。
  • 默认磁盘上定义的分区(vda1 = swap),(vda2 = /)。
  • 额外添加的磁盘Disk1,Disk2,Disk3。

各个磁盘大小都是20GB,默认的卷组的PE大小为4MB,我们在该服务器上配置的卷组使用默认PE。

Volume Group Display卷组显示

  • VG Name – 卷组名称。
  • Format – LVM架构使用LVM2。
  • VG Access – 卷组为读写模式,备好待用。
  • VG Status – 卷组可调整大小,如果我们需要添加更多空间,我们可以扩展更多。
  • Cur LV – 当前卷组中有2个逻辑卷。
  • CurPV and Act PV – 当前使用的物理磁盘是1(vda),已被激活,因此我们可以使用该卷组。
  • PE Size – 磁盘的物理扩展大小,可以定义使用PE,或者GB,LVM的默认PE大小是4MB。例如,如果我们需要创建5GB大小的逻辑卷,我们可以使用总计1280 PE,你们懂我的意思么?

这里解释一下 -> 1024MB = 1GB,这样的话,1024MB x 5 = 5120PE = 5GB,然后5120/4 = 1280,4是默认的PE大小。

  • Total PE – 该卷组具有的PE数量。
  • Alloc PE – 总的PE使用量,已经使用的全部PE,4482 x 4PE = 17928。
  • Free PE – 这里因为已经使用,所以没有空闲PE了。

3. 只使用了vda,当前CentOS在使用lvm的vda物理磁盘中安装了/boot,/,swap,,该磁盘中没有空间剩余。

# df -TH

Check the Disk Space检查磁盘空间
上面的图片中显示了用于根的挂载点已使用了18GB,因此没有空闲空间可用了。

4. 那么,让我们创建新的物理卷(pv),以及名为tecmintaddvg的卷组(vg),并在其中创建逻辑卷(lv)。这里,我们可以创建4个逻辑卷,分别名为 tecmint\_documentstecmint\_manager以及tecmintaddvg

我们可以扩展当前使用的卷组以获得更多空间。但在这里,我们将要做的是,创建新的卷组,然后在里面肆意妄为吧。过会儿,我们可以看到怎样来扩展使用中的卷组的文件系统。

在使用新磁盘前,我们需要使用fdisk来对磁盘分区。

# fdisk -cu /dev/sda
  • c – 关闭DOS兼容模式,推荐使用该选项。
  • u – 当列出分区表时,会以扇区而不是柱面显示。

Create New Physical Partitions创建新的物理分区
接下来,请遵循以下步骤来创建新分区。

  • 选择n来创建新分区。
  • 选择p来创建主分区。
  • 选择我们需要创建的分区号。
  • Enter两次来使用整个磁盘空间。
  • 我们需要修改新创建的分区类型,输入t
  • 选择需要修改的分区号,选择我们创建的分区号1
  • 这里,我们需要修改类型。我们需要创建LVM,因此我们使用LVM的类型代码8e。如果不知道类型代码,按L来列出所有类型代码。
  • 打印我们创建的分区以确认。
  • 这里我们可以看到Linux LVM的ID 8e。
  • 写入修改并退出fdisk。

重复以上步骤,为另外2个磁盘sdb和sdc创建新分区。然后重启机器,使用fdisk命令来验证分区表。

# fdisk -l

Verify Partition Table验证分区表

创建物理卷

5. 现在,该使用3个磁盘来创建物理卷了。这里,我已经使用pvs命令将物理磁盘列了出来,现在只有一个默认的pvs被列出来了。

# pvs

然后,使用命令创建新的物理磁盘。

# pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1

再次列出磁盘来查看新创建物理磁盘。

# pvs

Create Physical Volumes创建物理卷

创建卷组

6. 使用可用的空闲PV来创建名为tecmintaddvg的卷组,PE大小为32。显示当前卷组,我们可以看到只有带有1个PV的一个卷组在使用。

# vgs

这将使用上面创建的3个物理卷创建名为tecmintaddvg的卷组,PE大小为32MB。

# vgcreate -s 32M tecmint_add_vg /dev/sda1 /dev/sdb1 /dev/sdc1

接下来,再次运行vgs命令来验证卷组。

# vgs

Create Volume Groups创建卷组Verify Volume Groups验证卷组
理解vgs命令输出:

  • 卷组名。
  • 本卷组中使用的物理卷。
  • 显示本卷组中的可用空闲空间。
  • 卷组总大小。
  • 本卷组中的逻辑卷,这里我们还没创建,所以是0。
  • SN = 卷组包含的快照数量。(后面,我们会创建一个快照。)
  • 卷组状态,如可写,可读,可调整大小,已导出,部分的和集群的。这里是wz——意为w = 可写,z = 可调整大小。
  • 卷组中使用的物理卷(PV)数量。

7. 使用命令来显示更多卷组信息。

# vgs -v

Check Volume Group Information检查卷组信息
8. 要获取更多关于新创建的卷组信息,运行以下命令。

# vgdisplay tecmint_add_vg

List New Volume Groups列出新卷组

  • 卷组名称
  • 使用的LVM架构。
  • 可读写,备好待用。
  • 该卷组可以调整大小。
  • 使用和激活的物理磁盘数量。
  • 卷组总大小。
  • 这里单个PE大小为32。
  • 该卷组中可用的PE总数。
  • 当前还没有在卷组中创建任何LV,因此它是空闲的。
  • 该卷组的UUID。

创建逻辑卷

9. 现在,创建3个名为tecmint\_documents,tecmint\_managertecmint\_public的逻辑卷。这里,我们可以看到如何分别以PE为单位和GB为单位来创建逻辑卷。首先,使用以下命令来列出当前逻辑卷。

# lvs

List Current Volume Groups列出当前卷组
10. 这些逻辑卷处于vg\_tecmint卷组中使用pvs命令来列出并查看有多少空闲空间可以创建逻辑卷。

# pvs

Check Free Space检查空闲空间
11. 卷组大小为54GB,而且未被使用,所以我们可以在该组内创建LV。让我们将卷组平均划分大小来创建3个逻辑卷,就是说54GB/3 = 18GB,创建出来的单个逻辑卷应该会是18GB。

方法1: 使用PE创建逻辑卷

首先,让我们使用物理扩展(PE)为单位来创建逻辑卷。我们需要知道分配到该卷组的默认PE大小,以及总的可用PE大小来创建新的逻辑卷,运行下面的命令来获取使用中的卷组信息。

# vgdisplay tecmint_add_vg

Create New Logical Volume创建新逻辑卷

  • 默认分配给该卷组的PE为32MB,这里单个的PE大小为32MB。
  • 总可用PE是1725。

只要用bc命令做一点小小的计算来看看就知道了。

# bc

1725PE/3 = 575 PE. 
575 PE x 32MB = 18400 --> 18GB

Calculate Disk Space计算磁盘空间
CRTL+D退出bc。现在让我们使用575个PE来创建3个逻辑卷。

# lvcreate -l (Extend size) -n (name_of_logical_volume) (volume_group)
# lvcreate -l 575 -n tecmint_documents tecmint_add_vg
# lvcreate -l 575 -n tecmint_manager tecmint_add_vg
# lvcreate -l 575 -n tecmint_public tecmint_add_vg
  • -l – 使用扩展大小创建
  • -n – 给逻辑卷命名

使用lvs命令来列出创建的逻辑卷。

# lvs

List Created Logical Volumes列出创建的逻辑卷

方法2: 使用GB大小创建逻辑卷

在使用GB大小创建逻辑卷时,我们不能获得精确的大小。因此,最好的办法是用扩展。

# lvcreate -L 18G -n tecmint_documents tecmint_add_vg
# lvcreate -L 18G -n tecmint_manager tecmint_add_vg
# lvcreate -L 18G -n tecmint_public tecmint_add_vg
# lvcreate -L 17.8G -n tecmint_public tecmint_add_vg

使用lvs命令来列出创建的逻辑卷。

# lvs

Verify Created Logical Volumes验证创建的逻辑卷
这里,我们可以看到,当创建第三个LV的时候,我们不能收集到18GB空间。这是因为尺寸有小小的改变,但在使用或者尺寸来创建LV时,这个问题会被忽略。

创建文件系统

12. 要使用逻辑卷,我们需要格式化。这里我使用ext4文件系统来创建卷,并打算挂载到/mnt

# mkfs.ext4 /dev/tecmint_add_vg/tecmint_documents
# mkfs.ext4 /dev/tecmint_add_vg/tecmint_public
# mkfs.ext4 /dev/tecmint_add_vg/tecmint_manager

Create Ext4 File System创建Ext4文件系统
13. 让我们在/mnt下创建目录,并将已创建好文件系统的逻辑卷挂载上去。

# mount /dev/tecmint_add_vg/tecmint_documents /mnt/tecmint_documents/
# mount /dev/tecmint_add_vg/tecmint_public /mnt/tecmint_public/
# mount /dev/tecmint_add_vg/tecmint_manager /mnt/tecmint_manager/

使用下面的命令来列出并确认挂载点。

# df -h

Mount Logical Volumes挂载逻辑卷

永久挂载

现在,这些逻辑卷是临时挂载上去的,要永久挂载,我们需要添加条目到fstab中。要达到这个目的,让我们使用下面的命令来获取挂载条目

# cat /etc/mtab

在输入来自mtab中的挂载条目内容时,我们需要在fstab中做些小小的改变,修改rw为默认。

# vim /etc/fstab

我们的fstab条目应该和下面的类似,使用wq!保存并退出fstab。

/dev/mapper/tecmint_add_vg-tecmint_documents    /mnt/tecmint_documents  ext4    defaults 0 0
/dev/mapper/tecmint_add_vg-tecmint_public       /mnt/tecmint_public     ext4    defaults 0 0
/dev/mapper/tecmint_add_vg-tecmint_manager      /mnt/tecmint_manager    ext4    defaults 0 0

Get mtab Mount Entry获取mtab挂载条目*Open fstab File打开fstab文件Add Auto Mount Entry添加自动挂载条目
重启前,执行mount -a命令来检查fstab条目。

# mount -av

Verify fstab Entry验证fstab条目
这里,我们已经了解了怎样来使用逻辑卷构建灵活的存储,从使用物理磁盘到物理卷,物理卷到卷组,卷组再到逻辑卷。

在我即将奉献的文章中,我将介绍如何扩展卷组、逻辑卷,减少逻辑卷,拍快照以及从快照中恢复。


via: http://www.tecmint.com/create-lvm-storage-in-linux/

作者:Babin Lonston 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

本文以两台机器实现双集热备高可用集群,主机名node1的IP为192.168.122.168 ,主机名node2的IP为192.168.122.169 。

一、安装集群软件

必须软件pcs,pacemaker,corosync,fence-agents-all,如果需要配置相关服务,也要安装对应的软件

二、配置防火墙

1、禁止防火墙和selinux

# systemctl disable firewalld
# systemctl stop firewalld

修改/etc/sysconfig/selinux确保SELINUX=disabled,然后执行setenforce 0或者reboot服务器以生效

2、设置防火墙规则

# firewall-cmd --permanent --add-service=high-availability
# firewall-cmd --add-service=high-availability

三、各节点之间主机名互相解析

分别修改2台主机名分别为node1和node2,在centos 7中直接修改/etc/hostname加入本机主机名和主机表,然后重启网络服务即可。

#vi /etc/hostname
node1

#systemctl restart network.service
#hostname
node1

配置2台主机的主机表,在/etc/hosts中加入

192.168.122.168 node1
192.168.122.169 node2

四、各节点之间时间同步

在node1和node2分别进行时间同步,可以使用ntp实现。

[root@node1 ~]# ntpdate 172.16.0.1 //172.16.0.1 为时间服务器 

五、各节点之间配置ssh的无密码密钥访问。

下面的操作需要在各个节点上操作。

# ssh-keygen -t rsa -P ‘’   #这个生成一个密码为空的公钥和一个密钥,把公钥复制到对方节点上即可
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@node2 #对方主机名用登录用户名

两台主机都要互相可以通信,所以两台主机都得互相生成密钥和复制公钥,相互的节点上的hosts文件是都要解析对方的主机名, 192.168.122.168 node1 192.168.122.169 node2

# ssh node2 ‘date’;date #测试一下是否已经互信 

六、通过pacemaker来管理高可用集群

1、创建集群用户

为了有利于各节点之间通信和配置集群,在每个节点上创建一个hacluster的用户,各个节点上的密码必须是同一个。

# passwd hacluster

Changing password for user hacluster.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

2、设置pcsd开机自启动

# systemctl start pcsd.service
# systemctl enable pcsd.service

3、集群各节点之间进行认证

# pcs cluster auth node1 node2Username: hacluster Password: node1: Authorized node2: Authorized

4、创建并启动集群

[root@z1 ~]# pcs cluster setup --start --name my_cluster node1 node2

node1: Succeeded
node1: Starting Cluster...
node2: Succeeded
node2: Starting Cluster...

5、设置集群自启动

# pcs cluster enable –all

6、查看集群状态信息

[root@z1 ~]# pcs cluster status

7、设置fence设备

这个可以参考

corosync默认启用了stonith,而当前集群并没有相应的stonith设备,因此此默 认配置目前尚不可用,这可以通过如下命令验证:

#crm_verify -L -V

可以通过如下面命令禁用stonith:

#pcs property set stonith-enabled=false(默认是true)

8、配置存储

高可用集群既可以使用本地磁盘来构建纯软件的镜像型集群系统,也可以使用专门的共享磁盘装置来构建大规模的共享磁盘型集群系统,充分满足客户的不同需求。

共享磁盘主要有iscsi或DBRD。本文并没有使用共享磁盘。

9、配置浮点IP

不管集群服务在哪运行,我们要一个固定的地址来提供服务。在这里我选择192.168.122.101作为浮动IP,给它取一个好记的名字 ClusterIP 并且告诉集群 每30秒检查它一次。

# pcs resource create VIP ocf:heartbeat:IPaddr2 ip=192.168.122.170 cidr_netmask=24 op monitor interval=30s
# pcs update VIP op monitor interval=15s

10、配置apache服务

在node1和node2上安装httpd ,确认httpd开机被禁用

# systemctl status httpd.service;

配置httpd监控页面(貌似不配置也可以通过systemd监控),分别在node1和node2上执行

# cat > /etc/httpd/conf.d/status.conf << EOF
SetHandler server-status
Order deny,allow
Deny from all
Allow from localhost
EOF

首先我们为Apache创建一个主页。在centos上面默认的Apache docroot是/var/www/html,所以我们在这个目录下面建立一个主页。

node1节点修改如下:

[root@node1 ~]# cat <<-END >/var/www/html/index.html
<html>
<body>Hello node1</body>
</html>

END

node2节点修改如下:

[root@node2 ~]# cat <<-END >/var/www/html/index.html 
<html>
<body>Hello node2</body>
</html>

END

下面语句是将httpd作为资源添加到集群中:

#pcs resource create WEB apache configfile="/etc/httpd/conf/httpd.conf" statusurl="http://127.0.0.1/server-status"

11、创建group

将VIP和WEB resource捆绑到这个group中,使之作为一个整体在集群中切换。(此配置为可选)

# pcs resource group add MyGroup VIP
# pcs resource group add MyGroup WEB

12、配置服务启动顺序

以避免出现资源冲突,语法:(pcs resource group add的时候也可以根据加的顺序依次启动,此配置为可选)

# pcs constraint order [action] then [action]
# pcs constraint order start VIP then start WEB

13、指定优先的 Location (此配置为可选)

Pacemaker 并不要求你机器的硬件配置是相同的,可能某些机器比另外的机器配置要好。这种状况下我们会希望设置:当某个节点可用时,资源就要跑在上面之类的规则。为了达到这个效果我们创建location约束。同样的,我们给他取一个描述性的名字(prefer-node1),指明我们想在上面跑WEB 这个服务,多想在上面跑(我们现在指定分值为50,但是在双节点的集群状态下,任何大于0的值都可以达到想要的效果),以及目标节点的名字:

# pcs constraint location WEB prefers node1=50
# pcs constraint location WEB prefers node2=45

这里指定分值越大,代表越想在对应的节点上运行。

14、资源粘性(此配置为可选)

一些环境中会要求尽量避免资源在节点之间迁移。迁移资源通常意味着一段时间内无法提供服务,某些复杂的服务,比如Oracle数据库,这个时间可能会很长。

为了达到这个效果,Pacemaker 有一个叫做“资源粘性值”的概念,它能够控制一个服务(资源)有多想呆在它正在运行的节点上。

Pacemaker为了达到最优分布各个资源的目的,默认设置这个值为0。我们可以为每个资源定义不同的粘性值,但一般来说,更改默认粘性值就够了。资源粘性表示资源是否倾向于留在当前节点,如果为正整数,表示倾向,负数则会离开,-inf表示负无穷,inf表示正无穷。

# pcs resource defaults resource-stickiness=100

常用命令汇总:

查看集群状态:#pcs status

查看集群当前配置:#pcs config

开机后集群自启动:#pcs cluster enable –all

启动集群:#pcs cluster start –all

查看集群资源状态:#pcs resource show

验证集群配置情况:#crm\_verify -L -V

测试资源配置:#pcs resource debug-start resource

设置节点为备用状态:#pcs cluster standby node1