文章目录
- 一 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
目录),这样不会对可能涉及到的源文件产生影响,从而扰乱脚本对某部分文件命令的执行。