学习周报-20221223

news2024/11/19 15:16:33

文章目录

  • 一 Linux的ACL访问控制列表
    • 一 基础概念
      • 1.1 起因
      • 1.2 系统支持
      • 1.3 相关定义
    • 二 查看ACL权限
      • 2.1 简单查看
      • 2.2 详细查看
      • 2.3 具体配置
    • 三 更改ACL权限
      • 3.1 添加或修改ACL
      • 3.2 输出和输入
      • 3.3 设置ACL掩码
      • 3.4 递归修改ACL
      • 3.5 删除ACL
      • 3.6 控制默认ACL权限
  • 二 Linux磁盘分区中物理卷(PV)、卷组(VG)、逻辑卷(LV)创建和(LVM)管理
    • 一 基础定义
    • 二 创建逻辑卷
      • 2-1 准备物理设备
      • 2-2 创建物理卷
      • 2-3 创建卷组
      • 2-4 创建逻辑卷
      • 2-5 创建文件系统并挂载文件
    • 三 扩展卷组和缩减卷组
      • 3-1 准备物理设备
      • 3-2 创建物理卷
      • 3-3 扩展卷组
      • 3-4 查看卷组的详细信息以验证
      • 3-5 缩减卷组
    • 四 扩展逻辑卷
      • 4-1 检查卷组是否有可用的空间
      • 4-2 扩展逻辑卷
      • 4-3 扩展文件系统
    • 五 删除逻辑卷
      • 5-1 备份数据
      • 5-2 卸载文件系统
      • 5-3 删除逻辑卷
      • 5-4 删除卷组
      • 5-5 删除物理卷
  • 三 使用ls命令会先重定向内容还是先输出结果
    • 一 问题
    • 二 解决问题
    • 三 总结

一 Linux的ACL访问控制列表

一 基础概念

1.1 起因

Linux系统限制了文件的访问权限仅限于文件的所有者、文件所属组、其他所有用户。除此之外,进程就不适合作为文件所属组的成员,而将权限授予其他任何用户更是不可取。所以,我们需要对权限的进一步细分。

使用ACL可以向文件分配细化权限。通过指定用户或者UID、指定用户组或者GID,应用相同的权限标志(r读、w写、x执行),进行权限的细分。

1.2 系统支持

文件系统必须挂载已经启用的ACL支持。
XFS系统内置ACL支持;
红帽Linux7的ext4系统默认启动了ACL支持。

1.3 相关定义

名称解释
ls -l 命令文件权限后的+存在ACL设置
ls -l 命令文件权限后的.文件存在SELinux的安全上下文
ACL掩码指定用户、属组成员可拥有的最大权限
ACL权限优先级依次是用户、指定用户、组、其他

二 查看ACL权限

2.1 简单查看

通过ls -l命令,可以查看较少的ACL权限信息。

[root@server tmp]# ls -l
total 4
-rw-rw-r--+ 1 root root 14 Dec 19 10:01 test.txt

第一个rw-显示用户ACL设置,与标准的用户文件设置相同。
第二个rw-显示当前的ACL掩码设置,不是组所有者设置。
第三个r--显示其他ACL设置,与标准的其他文件设置相同。

如果使用chmod修改这个具有ACL的文件的组的权限,那么修改的是ACL掩码,而不是属组权限;
如果想要修改属组权限,需要setfacl -m g::perms 文件名

2.2 详细查看

使用getfacl详细查看ACL信息。

[root@server tmp]# getfacl test.txt 
# file: test.txt
# owner: root
# group: root
user::rw-
user:oldboy:rw-
group::r--
mask::rw-
other::r--

首先,前三行是注释条目,识别文件名、属主和属组。

第四行是属主以及对应的所有者权限。
第五行是指定用户oldboy的权限。
第六行是属组的权限。
第七行是ACL掩码,是所有指定的用户、指定的组所拥有的理论上最大权限。
最后一行是其他权限。

2.3 具体配置

描述操作
文件具有rx权限的指定james用户u:james:rx file
文件具有rx权限的属主用户u::rx file
目录属组的rw权限g::rw /dir
目录指定组dev的rwx权限g:dev:rwx /dir
设置成默认掩码的rx权限d:m:rx /dir
设置指定用户dick的新文件rx初始权限d:user:dick:rx /dir

三 更改ACL权限

3.1 添加或修改ACL

给oldboy用户添加rx权限

[root@server tmp]# setfacl -m u:oldboy:rx test.txt 
[root@server tmp]# getfacl test.txt 
# file: test.txt
# owner: root
# group: root
user::rw-
user:oldboy:r-x
group::r--
mask::r-x
other::r--

如果此处的oldboy位置内容为空,则修改文件属主权限。

修改其他ACL,将权限变成-

[root@server tmp]# setfacl -m o::- test.txt 
[root@server tmp]# getfacl test.txt 
# file: test.txt
# owner: root
# group: root
user::rw-
user:oldboy:r-x
group::r--
mask::r-x
other::---

修改其他权限时,chmod效果等同于setfacl。

3.2 输出和输入

使用getfacl的输出,可以作为setfacl的输入。

getfacl file1 | setfacl --set-file=- file2

此处单独的-表示stdin。

3.3 设置ACL掩码

setfacl -m m::r file3

该操作设置的掩码值会作用于所有指定的用户与指定的组,但不影响属主。

一般情况下,每次修改或删除ACL掩码,该数值都会被重新计算。如果想要避免重复计算ACL掩码,使用-n参数;或者使用-m m::perms

3.4 递归修改ACL

以递归方式将ACL应用到目录和目录下的文件中,则使用-R参数。一般如果有x权限时,会写成大写X,具有执行权限的文件会保留权限,并防止管理员意外的向普通文件添加执行权限。

3.5 删除ACL

setfacl -x u:oldboy,g:oldman file4

这个操作会从ACL中删除指定的用户和指定的组。其他ACL活动保持不变。

当其他设置的ACL删除后,最后才可以删除ACL掩码。

setfacl -b file

此时,权限字符串旁边不再有+

3.6 控制默认ACL权限

将某个目录设置默认的ACL,在该目录下创建的新目录和新文件将自动继承默认的ACL。

setfacl -m d:u:oldboy:rx /dir

如果想要删除这个默认ACL,换成-x参数,并取消权限即可。

setfacl -x d:u:oldboy /dir

二 Linux磁盘分区中物理卷(PV)、卷组(VG)、逻辑卷(LV)创建和(LVM)管理

在这里插入图片描述

一 基础定义

LVM,Logical Volume Manger,逻辑卷管理,Linux磁盘分区管理的一种机制,建立在硬盘和分区上的一个逻辑层,提高磁盘分区管理的灵活性。

物理设备,是用于保留逻辑卷中所存储数据的存储设备。它们是块设备,可以是磁盘分区、
整个磁盘、RAID阵列或SAN磁盘。设备必须初始化为LVM物理卷,才能与LVM结合使用。
整个“设备”将用作一个物理卷。

物理卷(PV) ,用于注册基础物理设备以便在卷组中使用。LVM自动将PV划分为物理区块
(PE); 它们是充当PV上最小存储块的小块数据。

卷组 (VG), 是存储池,由一个或多个物理卷组成。一个PV只能分配给一个VG 。VG可以
包含未使用的空间和任意数目的逻辑卷。

逻辑卷(LV), 根据卷组中的空闲物理范围创建,提供应用、用户和操作系统所使用的“存
储”设备。LV是逻辑区块(LE) 的集合,LE映射到物理区块。默认情况下,每个 LE将映射到一个PE。设置特定LV选项将会更改此映射;例如,镜像会导致每个LE映射到两个PE。

在这里插入图片描述

二 创建逻辑卷

2-1 准备物理设备

在上一章内容的基础上,创建第三个主分区,并设置分区类型为LVM,具体步骤如下。
如果不理解每一个交互式命令的含义,可以参考笔者的上一篇文章。

Linux磁盘分区和管理

[root@canway01 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): n   
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
Partition number (3,4, default 3): 3
First sector (4196352-20971519, default 4196352): 
Using default value 4196352
Last sector, +sectors or +size{K,M,G} (4196352-20971519, default 20971519): +2G
Partition 3 of type Linux and of size 2 GiB is set

Command (m for help): t
Partition number (1-3, default 3): 3
Hex code (type L to list all codes): 8e   
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xceafdf4b

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576   82  Linux swap / Solaris
/dev/sdb3         4196352     8390655     2097152   8e  Linux LVM

Command (m for help): w   
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@canway01 ~]# partprobe /dev/sdb

2-2 创建物理卷

为分区或其他设备添加标签,使其作为物理卷和LVM结合使用。会将用于存储LVM配置数据的一个标头直接写入PV(物理卷)。

/dev/sdb3标记为PV,准备好分配到卷组。

[root@canway01 ~]# pvcreate /dev/sdb3
  Physical volume "/dev/sdb3" successfully created.

查看结果

[root@canway01 ~]# pvs
  PV         VG              Fmt  Attr PSize  PFree
  /dev/sda2  centos_canway01 lvm2 a--  19.50g    0 
  /dev/sdb3                  lvm2 ---   2.00g 2.00g
[root@canway01 ~]# pvdisplay /dev/sdb3
  "/dev/sdb3" is a new physical volume of "2.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb3
  VG Name               
  PV Size               2.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               pCOYib-ZuXO-OrBJ-jw3b-wBF8-9Mtg-VYU5Ym
  

2-3 创建卷组

创建包含一个或多个物理卷的池。VG大小由池中的物理范围的总数决定。

创建的卷组名称是vg_name1,大小等于/dev/sdb3

[root@canway01 ~]# vgcreate vg_name1 /dev/sdb3
  Volume group "vg_name1" successfully created

查看结果

[root@canway01 ~]# vgs
  VG              #PV #LV #SN Attr   VSize  VFree 
  centos_canway01   1   2   0 wz--n- 19.50g     0 
  vg_name1          1   0   0 wz--n- <2.00g <2.00g
[root@canway01 ~]# vgdisplay vg_name1
  --- Volume group ---
  VG Name               vg_name1
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <2.00 GiB
  PE Size               4.00 MiB
  Total PE              511
  Alloc PE / Size       0 / 0   
  Free  PE / Size       511 / <2.00 GiB
  VG UUID               VLvUZr-pyay-tp23-A7Cg-8aKT-PXkZ-KIzrsV

2-4 创建逻辑卷

使用命令lvcreate根据卷组中可用的物理范围创建新的逻辑卷。
参数-n设置LV名称
参数-L设置LV大小
参数-n设置LV名称

[root@canway01 ~]# lvcreate -n lv_name1 -L 1G vg_name1
  Logical volume "lv_name1" created.

检查确认

[root@canway01 ~]# lvs
  LV       VG              Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root     centos_canway01 -wi-ao---- 18.00g                                                    
  swap     centos_canway01 -wi-ao----  1.50g                                                    
  lv_name1 vg_name1        -wi-a-----  1.00g                                                    
[root@canway01 ~]# lvdisplay /dev/vg_name1/lv_name1
  --- Logical volume ---
  LV Path                /dev/vg_name1/lv_name1
  LV Name                lv_name1
  VG Name                vg_name1
  LV UUID                6TLKBb-IZ91-hOcR-1zKD-FpSQ-3ofR-eluxkD
  LV Write Access        read/write
  LV Creation host, time canway01, 2022-11-19 21:23:39 +0800
  LV Status              available
  # open                 0
  LV Size                1.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

此处需要注意的是,如何找到自己创建的逻辑卷名。

传统名称:/dev/卷组名/逻辑卷名
内核映射:/dev/mapper/卷组名-逻辑卷名

2-5 创建文件系统并挂载文件

首先创建文件系统

[root@canway01 ~]# mkfs.xfs /dev/vg_name1/lv_name1 
meta-data=/dev/vg_name1/lv_name1 isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

然后创建挂载目录

[root@canway01 ~]# mkdir -p /data/sdb3/vg_name1/lv_name1

接着向/etc/fstab中添加条目

[root@canway01 ~]# tail -1 /etc/fstab 
/dev/vg_name1/lv_name1  /data/sdb3/vg_name1/lv_name1    xfs   defaults  0 0

挂载/etc/fstab中的所有文件和目录

[root@canway01 ~]# mount -a

检查确认

[root@canway01 ~]# df -h
Filesystem                        Size  Used Avail Use% Mounted on
devtmpfs                          470M     0  470M   0% /dev
tmpfs                             487M     0  487M   0% /dev/shm
tmpfs                             487M  8.1M  479M   2% /run
tmpfs                             487M     0  487M   0% /sys/fs/cgroup
/dev/mapper/centos_canway01-root   18G  5.2G   13G  29% /
/dev/sda1                         505M  165M  340M  33% /boot
tmpfs                              98M     0   98M   0% /run/user/0
/dev/sdb1                        1014M   33M  982M   4% /data/sdb1
/dev/mapper/vg_name1-lv_name1    1014M   33M  982M   4% /data/sdb3/vg_name1/lv_name1

到此为止,我们的逻辑卷创建完成。

三 扩展卷组和缩减卷组

3-1 准备物理设备

Linux的主分区和扩展分区加起来最多只有4个,在前面的操作中,我们已经创建了3个主分区,分别是Linux分区、swap交换分区、LVM分区。因此如果要扩展逻辑卷,只能先创建扩展分区,然后从扩展分区中切割出新的逻辑分区(PV)来给LV扩容。

创建扩展分区时,起始的块和最终的块都不要输入内容,都是直接回车键选择默认,这样我们就将这块硬盘上剩下的所有空间都分给了扩展分区。

[root@canway01 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): e
Selected partition 4
First sector (8390656-20971519, default 8390656): 
Using default value 8390656
Last sector, +sectors or +size{K,M,G} (8390656-20971519, default 20971519): 
Using default value 20971519
Partition 4 of type Extended and of size 6 GiB is set

Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xceafdf4b

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576   82  Linux swap / Solaris
/dev/sdb3         4196352     8390655     2097152   8e  Linux LVM
/dev/sdb4         8390656    20971519     6290432    5  Extended

创建好扩展分区后,再从扩展分区中切割新的逻辑分区/dev/sdb5

Command (m for help): n   
All primary partitions are in use
Adding logical partition 5
First sector (8392704-20971519, default 8392704): 
Using default value 8392704
Last sector, +sectors or +size{K,M,G} (8392704-20971519, default 20971519): +1G
Partition 5 of type Linux and of size 1 GiB is set

Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xceafdf4b

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576   82  Linux swap / Solaris
/dev/sdb3         4196352     8390655     2097152   8e  Linux LVM
/dev/sdb4         8390656    20971519     6290432    5  Extended
/dev/sdb5         8392704    10489855     1048576   83  Linux

接着,我们将/dev/sdb5的分区类型修改为LVM。

Command (m for help): t     
Partition number (1-5, default 5): 5
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xceafdf4b

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576   82  Linux swap / Solaris
/dev/sdb3         4196352     8390655     2097152   8e  Linux LVM
/dev/sdb4         8390656    20971519     6290432    5  Extended
/dev/sdb5         8392704    10489855     1048576   8e  Linux LVM

最后不要忘了保存请求的信息,并加载内核读取新的磁盘分区表。

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@canway01 ~]# partprobe /dev/sdb

3-2 创建物理卷

/dev/sdb5标记为PV,准备好分配到卷组中。

[root@canway01 ~]# pvcreate /dev/sdb5
  Physical volume "/dev/sdb5" successfully created.
[root@canway01 ~]# pvs
  PV         VG              Fmt  Attr PSize  PFree   
  /dev/sda2  centos_canway01 lvm2 a--  19.50g       0 
  /dev/sdb3  vg_name1        lvm2 a--  <2.00g 1020.00m
  /dev/sdb5                  lvm2 ---   1.00g    1.00g

3-3 扩展卷组

向卷组添加新的物理卷。

[root@canway01 ~]# vgextend vg_name1 /dev/sdb5
  Volume group "vg_name1" successfully extended
[root@canway01 ~]# vgs
  VG              #PV #LV #SN Attr   VSize  VFree
  centos_canway01   1   2   0 wz--n- 19.50g    0 
  vg_name1          2   1   0 wz--n-  2.99g 1.99g

3-4 查看卷组的详细信息以验证

[root@canway01 ~]# vgdisplay vg_name1
  --- Volume group ---
  VG Name               vg_name1
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               2.99 GiB
  PE Size               4.00 MiB
  Total PE              766
  Alloc PE / Size       256 / 1.00 GiB
  Free  PE / Size       510 / 1.99 GiB
  VG UUID               VLvUZr-pyay-tp23-A7Cg-8aKT-PXkZ-KIzrsV

Free PE / Size。它不应当为零。

到此为止,扩展逻辑卷就完成了。

3-5 缩减卷组

首先,还是备份数据。
因为你不确定在整个流程中是否会产生误操作而丢失数据。

其次,移动物理区段。
只有当VG中存在足够的空闲范围,且这些范围都是来自于其他PV时,才能做这个操作。

[root@canway01 ~]# pvmove /dev/sdb5
  No data to move for vg_name1.

接着,缩减卷组。
将物理卷从卷组中删除。

[root@canway01 ~]# vgreduce vg_name1 /dev/sdb5
  Removed "/dev/sdb5" from volume group "vg_name1"

最后检查确认一遍

[root@canway01 ~]# vgs
  VG              #PV #LV #SN Attr   VSize  VFree   
  centos_canway01   1   2   0 wz--n- 19.50g       0 
  vg_name1          1   1   0 wz--n- <2.00g 1020.00m
[root@canway01 ~]# vgdisplay vg_name1 
  --- Volume group ---
  VG Name               vg_name1
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <2.00 GiB
  PE Size               4.00 MiB
  Total PE              511
  Alloc PE / Size       256 / 1.00 GiB
  Free  PE / Size       255 / 1020.00 MiB
  VG UUID               VLvUZr-pyay-tp23-A7Cg-8aKT-PXkZ-KIzrsV

至此,物理卷/dev/sdb5已经从vg_name1卷组中移除,可以添加到其他卷组中。

四 扩展逻辑卷

4-1 检查卷组是否有可用的空间

我们需要确认的是, Free PE / Size 255 / 1020.00 MiB的值,应该大于等于所需额外空间的值。
此处可知,VG还有1020M的空闲空间,所以扩展逻辑卷的额外空间不能大于1020M。

[root@canway01 ~]# vgdisplay vg_name1 
  --- Volume group ---
  VG Name               vg_name1
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <2.00 GiB
  PE Size               4.00 MiB
  Total PE              511
  Alloc PE / Size       256 / 1.00 GiB
  Free  PE / Size       255 / 1020.00 MiB
  VG UUID               VLvUZr-pyay-tp23-A7Cg-8aKT-PXkZ-KIzrsV

4-2 扩展逻辑卷

命令lvextend可以将逻辑卷扩展为新的大小。
参数-L表示以字节大小作为指定值。
如果有+,表示向现有逻辑卷增加这个值。
如果无+,表示逻辑卷最终总大小就是这个值。

[root@canway01 ~]# lvextend -L +300M /dev/vg_name1/lv_name1 
  Size of logical volume vg_name1/lv_name1 changed from 1.00 GiB (256 extents) to 1.29 GiB (331 extents).
  Logical volume vg_name1/lv_name1 successfully resized.

4-3 扩展文件系统

[root@canway01 ~]# xfs_growfs /data/sdb3/vg_name1/lv_name1/
meta-data=/dev/mapper/vg_name1-lv_name1 isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 262144 to 338944

检查确认一遍

[root@canway01 ~]# df -h /data/sdb3/vg_name1/lv_name1/
Filesystem                     Size  Used Avail Use% Mounted on
/dev/mapper/vg_name1-lv_name1  1.3G   33M  1.3G   3% /data/sdb3/vg_name1/lv_name1

补充说明:
除了xfs_growfs命令可以挂载文件系统,还有resize2fs命令。
前者识别XFS系统,后面跟的参数是挂载点;
后者识别EXT4系统,后面跟的参数是逻辑卷名称。

五 删除逻辑卷

5-1 备份数据

为防止过程中的错误操作,向将分区中的数据迁移或备份

5-2 卸载文件系统

一方面,手动卸载之前挂载的目录文件

[root@canway01 ~]# umount /data/sdb3/vg_name1/lv_name1 

另一方面,删除/etc/fstab文件下该设备的条目

5-3 删除逻辑卷

[root@canway01 ~]# lvremove /dev/vg_name1/lv_name1 
Do you really want to remove active logical volume vg_name1/lv_name1? [y/n]: y
  Logical volume "lv_name1" successfully removed

5-4 删除卷组

[root@canway01 ~]# vgremove vg_name1 
  Volume group "vg_name1" successfully removed

5-5 删除物理卷

[root@canway01 ~]# pvremove /dev/sdb3
  Labels on physical volume "/dev/sdb3" successfully wiped.

最后使用命令df -h检查确认

三 使用ls命令会先重定向内容还是先输出结果

一 问题

如果存在并进入到一个空目录/tmp/test下,然后在这个目录下创建文件a和文件b。
此时使用ls命令,并将其重定向至文件c中(文件c起初不存在)。

那么,此时文件c中会包括什么内容?
选择A:a
选择B:ab
选择C:abc

二 解决问题

首先创建一个空目录,进入这个空目录,并保证这个目录没有其他普通文件。

[root@server ~]# mkdir -p /tmp/test
[root@server ~]# cd /tmp/test/
[root@server test]# ll
total 0

接着创建文件a和文件b

[root@server test]# touch a b
[root@server test]# ll
total 0
-rw-r--r-- 1 root root 0 Dec 20 15:59 a
-rw-r--r-- 1 root root 0 Dec 20 15:59 b

然后将该目录下的结果重定向至一个新的文件c中

[root@server test]# ls > c
[root@server test]# ll
total 4
-rw-r--r-- 1 root root 0 Dec 20 15:59 a
-rw-r--r-- 1 root root 0 Dec 20 15:59 b
-rw-r--r-- 1 root root 6 Dec 20 16:00 c

此时再查看文件c中的内容,发现是abc

[root@server test]# cat c
a
b
c

三 总结

1)在将当前目录的内容重定向至一个新文件中时,会先判断是否存在这样的一个文件;如果不存在,那么会先创建一个文件c,然后再执行ls查看的命令。
2)在编写shell脚本时,有时会用到查看当前目录的命令,此时目录下的文件名可能会用来成为需要的变量。为防止与原来目录下的文件混淆,可以将重定向内容的新文件放在其他目录下(比如/tmp目录),这样不会对可能涉及到的源文件产生影响,从而扰乱脚本对某部分文件命令的执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/110783.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

zabbix6.0安装教程(七):从web界面安装

zabbix6.0安装教程&#xff08;七&#xff09;&#xff1a;从web界面安装 目录一、欢迎主界面二、先决条件检查三、配置数据库连通性四、配置本章节提供有关Zabbx Web界面的部署步骤说明。Zabbix 前端是由PHP语言编写&#xff0c;所以其网页服务的运行需要支持PHP语言的网站服务…

Allegro如何任意角度走线操作指导

Allegro如何任意角度走线操作指导 Allegro支持在PCB上进行任意角度走线,尤其是在高速设计的时候,尤为常见,如下图 具体操作如下 选择add connect命令Find选择Cline segs

谷歌要给移动VR定规矩

代号牛轧糖的最新安卓7.0手机操作系统发布两天后&#xff0c;谷歌公司开发的虚拟现实&#xff08;VR&#xff09;平台Daydream&#xff08;下称“白日梦”&#xff09;也将在未来几周推出。与平台一同推出的&#xff0c;还有来自Hulu和YouTube等视频网站“网红”们的全新视频内…

【软件工程】实验3:软件详细设计

CAM系统的类图 CAM系统的顺序图 CAM系统模拟实现&#xff08;CAM工具库封装&#xff09; 1、代码运行界面 &#xff08;1&#xff09;根据提示输入要加工的图形类型 &#xff08;2&#xff09;J-Soft软件会根据输入的数字提示用户输入不同的图形参数&#xff0c;图形参数输入…

函数栈帧(栈区)

函数栈帧&#xff08;栈区&#xff09;一.前言二.main函数空间的开辟&#xff08;函数调用是如何做到的&#xff09;三.main函数内部的变量初始化&#xff08;局部变量是如何创建的以及为什么是随机值&#xff09;四.main函数内部的函数创建1.函数是如何传参的2.传参的顺序以及…

物联网通信技术原理第2章 无线通信技术(期末重点)

目录 2.1 无线通信基本知识 2.1.2 无线通信的特点 2.2 无线信道 2.2.1 恒参无线信道举例 2.2.2 恒参无线信道特性及其对信号传输的影响 1. 幅度—频率畸变 2. 相位—频率畸变​编辑 2.2.3 随参无线信道距离 1、短波电离层反射 2、对流层散射信道 2.2.4 随参信道特性及…

漏洞深度分析|Apache Karaf 4.2.16 存在JNDI 注入漏洞

项目地址 GitHub - apache/karaf: Mirror of Apache Karaf 项目介绍 Apache Karaf是一个模块化运行时&#xff0c;支持多种框架和编程模型&#xff08;REST/API、web、spring boot 等&#xff09;。它提供了统包功能&#xff0c;您可以毫不费力地直接利用这些功能&#xff0…

戴维南定理

定理内容&#xff1a;任意二端口直流网络都可以被一个等效电路替换&#xff0c;这个等效电路只包含一个电压源和一个串联电阻&#xff0c;如图1所示。 图1 戴维南定理的作用 1、分析含有非串联或非并联电源的网络 2、用最少数量的元件实现复杂网络的端口特性&#xff08;端口前…

【深入浅出Spring原理及实战】「开发实战系列」SpringSecurity原理以及实战认证分析开发指南

前提介绍 承接上一篇文章&#xff0c;相信大家应该已经对SpringSecurity的原理有了一定的认识&#xff0c;而本篇文章给大家带来的则是在实际业务开发中的技术指南&#xff0c;希望对你有所帮助。所谓知彼知己方能百战百胜&#xff0c;用Spring Security来满足我们的需求最好了…

我们国家都有哪些信息安全标准

写在前面 早年刚参加信息安全工作更多的学点皮毛技术&#xff0c;到处找安全工具&#xff0c;跟踪poc&#xff0c;拿到一个就全网扫一遍&#xff0c;从来没有想过&#xff0c;系统化的安全工作应该怎样搞?我做的工作在安全体系中处于哪个阶段? 后来有机会做企业安全建设&…

503.下一个更大元素II,42. 接雨水

503. 下一个更大元素 II 给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序&#xff0c;这个数字之后的第一个比它更大的数…

C++:vector操作笔记

本文记录了对C中的vector容器的简单操作&#xff0c;包括给vector添加元素、按指定列排序、取值。 文章目录一、vector 和普通数组之间的转化二、根据vector数组的某一列数据排序三、删除二维 vector 数组最后一列数据一、vector 和普通数组之间的转化 1&#xff0c;数组转vec…

Mysql日志体系

3、Mysql日志体系 bing log &#xff1a;在server记录mysql所有的DDL和DML语句&#xff0c;主要用来做主从复制和数据恢复。内容追加&#xff0c;没有固定大小限制。redo log &#xff1a;undo log &#xff1a; 3.1、bin log 3.1.1、binlog日志作用 binlog记录所有的DDL和…

Unity CEO:玩家不在乎AR还是VR,他们只想要优质内容

近期&#xff0c;Unity CEO John Riccitiello在接受英国金融时报采访时&#xff0c;透露了自己对于游戏的前生今世&#xff0c;以及AR/VR和未来的看法。他认为&#xff0c;打造一个新平台需要大量优质内容&#xff0c;创意对于新平台很重要&#xff0c;不管AR和VR技术有什么区别…

java医院挂号系统挂号预约网站挂号网站预约网站源码

主要实现门诊挂号和用户网站预约挂号的功能 演示视频&#xff1a; https://www.bilibili.com/video/BV1nN411d7HT/?share_sourcecopy_web&vd_sourceed0f04fbb713154db5cc611225d92156 环境&#xff1a;jdk7/8mysql5.5tomcat7/8 技术&#xff1a;ssm(springspringmvcmyi…

读书笔记---Bioinformatics Data Skills

最近阅读了《Bioinformatics Data Skills》&#xff0c;是不错的生物信息学入门书&#xff0c;本文作者简介如下&#xff1a; 全书以下面三个方向展开&#xff0c;为生物信息学的继续学习指明了道路&#xff1a; &#xff08;1&#xff09;生物信息学数据技巧&#xff08;第一章…

动态DNS与DPDK高性能DNS -DPDK环境搭建

工具准备&#xff1a; vmware Ubuntu 16.04 Server 版本 1.vmware 添加两块网卡 桥接网卡作为 DPDK 运行的网卡 NAT 网卡作为 ssh 连接的网卡 2.修改网卡配置信息 将 ethernet0.virtualDev 由 e1000 修改 vmxnet3&#xff0c;因为 vmware 的 vmxnet3 支持多队 列网卡 3.修…

Qt对象树

对象模型&#xff08;对象树&#xff09; 类似于c中虚析构实现的功能一样&#xff0c;在释放父类对象的同时调用子类的析构函数释放子类对象 也c调用析构函数的区别是&#xff1a;会先调用父类的析构函数&#xff0c;然后一层层往下调用子类析构&#xff0c;直到调用到底层子…

10.1、Django框架简介、创建第一个应用

文章目录预备知识MVC模式和MTV模式MVC模式MTV 模式Django框架Django框架简介Django框架的应用启动后台admin站点管理数据库迁移创建管理员用户管理界面本地化创建并使用一个应用bookapp项目的数据库模型创建数据库模型生成数据库表数据库上的基本操作启用后台admin站点管理自定…

Vue框架--Ruoyi解析(前端)

路由router注册 router目录下的 index.js 配合 permission.js 是整套vue前端项目的权限判断核心. index.js 里面的path 配置都是一些不会与权限挂钩的路由,例如: 404、登录页面路径等. permission.js 中的 router.beforeEach 是路由拦截,在访问某个链接之前会进行权限判断,但是…