LVM

LVM(Logical Volume Manager,逻辑卷管理器)是一种用于管理磁盘和存储的高级工具,它可以将多个物理磁盘组合成一个或多个逻辑卷,从而提供更灵活和可扩展的存储管理。LVM 由三个主要组件组成:物理卷(PV)、卷组(VG)和逻辑卷(LV)。

LVM 提供了以下优点:

  • 灵活性:LVM 允许您动态地添加或删除物理卷和逻辑卷,以便调整存储空间的大小和分配。

  • 可靠性:LVM 可以提高数据的可靠性,因为它可以在多个物理磁盘上创建冗余存储,从而避免单点故障。

  • 性能:LVM 可以提高磁盘 I/O 性能,因为它可以将多个物理磁盘组合成一个逻辑卷,从而提高磁盘读写速度。

  • 备份和恢复:LVM 允许您在不影响正在运行的系统的情况下备份和恢复数据。您可以在运行时备份逻辑卷,并在需要时恢复它们。

LVM 是一种强大的存储管理工具,它可以提高存储空间的利用率,提高数据的可靠性和性能,并提供更灵活的备份和恢复选项。

PV

操作物理卷(Physical Volume,PV)是物理磁盘或分区,它们被标记为 LVM 物理卷,以便将其添加到卷组中。

以下是一些常用的操作物理卷的命令及其用法:

  1. 创建物理卷:

    • pvcreate:创建一个新的物理卷。
      • 示例:pvcreate /dev/sdb1,创建一个名为 /dev/sdb1 的物理卷。
  2. 显示物理卷信息:

    • pvdisplay:显示所有物理卷的详细信息。
    • pvs:以表格形式显示物理卷的摘要信息。
  3. 扩展物理卷:

    • pvresize:扩展或缩小物理卷的大小。
      • 示例:pvresize /dev/sdb1,将物理卷 /dev/sdb1 的大小调整为其所在磁盘的可用空间大小。
  4. 删除物理卷:

    • pvremove:删除一个物理卷。
      • 示例:pvremove /dev/sdb1,删除名为 /dev/sdb1 的物理卷。

VG

VG(Volume Group,卷组)是由一个或多个物理卷(PV)组成的逻辑卷组,它们被组合在一起以提供更大的存储空间。卷组可以动态地添加或删除物理卷,从而实现存储空间的动态扩展和收缩。

以下是一些常用的操作卷组(Volume Group,VG)的命令:

  1. vgcreate:创建一个新的卷组。

    1
    vgcreate <卷组名称> <物理卷1> <物理卷2> ...
  2. vgextend:扩展现有的卷组,将一个或多个物理卷添加到卷组中。

    1
    vgextend <卷组名称> <物理卷1> <物理卷2> ...
  3. vgreduce:从卷组中移除一个或多个物理卷。

    1
    vgreduce <卷组名称> <物理卷1> <物理卷2> ...
  4. vgdisplay:显示卷组的详细信息,包括卷组的名称、物理卷列表、逻辑卷列表等。

    1
    vgdisplay <卷组名称>
  5. vgrename:重命名一个卷组。

    1
    vgrename <旧卷组名称> <新卷组名称>
  6. vgchange:修改卷组的属性,如启用或禁用自动扩展功能。

    1
    2
    vgchange -a y <卷组名称>  # 启用卷组
    vgchange -a n <卷组名称> # 禁用卷组
  7. vgremove:删除一个卷组。

    1
    vgremove <卷组名称>

LV

LV(Logical Volume,逻辑卷):逻辑卷是从卷组中分配的存储空间,它们可以被格式化为文件系统,并用于存储数据。逻辑卷可以动态地调整大小,以便为文件系统添加更多的空间。

以下是一些常用的操作逻辑卷(Logical Volume,LV)的命令:

  1. lvcreate:创建一个新的逻辑卷。

    1
    lvcreate -L <大小> -n <逻辑卷名称> <卷组名称>
  2. lvextend:扩展现有的逻辑卷。

    1
    lvextend -L +<增加的大小> <逻辑卷路径>
  3. lvreduce:缩减现有的逻辑卷。

    1
    lvreduce -L -<减少的大小> <逻辑卷路径>
  4. lvresize:调整逻辑卷的大小。

    1
    lvresize -L <新大小> <逻辑卷路径>
  5. lvdisplay:显示逻辑卷的详细信息,包括逻辑卷的名称、大小、卷组、文件系统类型等。

    1
    lvdisplay <逻辑卷路径>
  6. lvrename:重命名一个逻辑卷。

    1
    lvrename <卷组名称> <旧逻辑卷名称> <新逻辑卷名称>
  7. lvremove:删除一个逻辑卷。

    1
    lvremove <逻辑卷路径>

FS

FS(File System,文件系统)

常用文件系统

在Linux系统中,有几种常用的文件系统,下面是对它们的简要介绍:

  1. ext4(第四扩展文件系统):

    • 是Linux系统上最常用的文件系统之一。
    • 支持文件和目录的权限控制、日志记录、快速恢复等功能。
    • 具有较高的性能和稳定性。
    • 可以通过使用mkfs.ext4命令在逻辑卷上创建ext4文件系统。
  2. XFS(扩展文件系统):

    • 也是一种常用的Linux文件系统。
    • 针对大容量和高性能设计,适用于大型服务器和存储系统。
    • 支持快速创建、删除和扩展文件系统,具有高并发性能和高吞吐量。
    • 可以通过使用mkfs.xfs命令在逻辑卷上创建XFS文件系统。
  3. Btrfs(B树文件系统):

    • 是Linux系统上的一种先进的文件系统。
    • 具有快照、压缩、在线文件系统检查和修复等高级功能。
    • 支持多个磁盘的联合使用,具有较好的容错性。
    • 可以通过使用mkfs.btrfs命令在逻辑卷上创建Btrfs文件系统。
  4. ZFS(Zettabyte文件系统):

    • 是一种先进的文件系统,最初由Sun Microsystems开发,现在在Linux系统上也得到了支持。
    • 具有强大的数据完整性和数据保护功能,支持快照、克隆和数据压缩。
    • 可以通过使用zpoolzfs命令在逻辑卷上创建和管理ZFS文件系统。
  5. FAT32(文件分配表32):

    • 是一种通用的文件系统格式,可以在Linux和Windows系统上使用。
    • 支持较大的文件和分区大小,但不支持文件和目录的权限控制。
    • 可以通过使用mkfs.fat命令在逻辑卷上创建FAT32文件系统。

这些是Linux系统中常用的文件系统,每种文件系统都有其特定的用途和优势。选择文件系统时,需要考虑性能、可靠性、安全性和特定需求等因素。

mkfs

mkfs命令用于在Linux系统上创建文件系统。它通常与设备路径一起使用,以在设备上创建文件系统。

mkfs.系统类型 实际设备路径

mkfs命令用于在Linux系统上创建文件系统。它通常与设备路径一起使用,以在设备上创建文件系统。

以下是一些常用的mkfs命令及其用法:

  1. mkfs.ext4:创建ext4文件系统。

    1
    mkfs.ext4 /dev/sdX
  2. mkfs.ext3:创建ext3文件系统。

    1
    mkfs.ext3 /dev/sdX
  3. mkfs.ext2:创建ext2文件系统。

    1
    mkfs.ext2 /dev/sdX
  4. mkfs.xfs:创建XFS文件系统。

    1
    mkfs.xfs /dev/sdX
  5. mkfs.btrfs:创建Btrfs文件系统。

    1
    mkfs.btrfs /dev/sdX

在使用mkfs命令之前,请确保已经备份了设备上的数据,因为创建文件系统将会清除该设备上的所有数据。

MP

MP(Mounting Point,挂载点)是将文件系统连接到Linux文件系统层次结构的目录。它是将存储设备(如硬盘、分区、逻辑卷等)与文件系统的根目录或其他目录进行关联的方式。

在Linux系统中,文件系统层次结构是以树形结构组织的,从根目录(/)开始,通过目录的嵌套关系形成一个层次结构。通过挂载点,可以将不同的存储设备中的文件系统连接到这个层次结构中的特定目录上,使得文件系统中的文件和目录可以在这些挂载点所代表的位置上访问和操作。

挂载点的作用有以下几个方面:

  1. 文件系统访问:通过挂载点,可以将文件系统中的文件和目录以类似于普通目录的方式在文件系统层次结构中呈现,使其可以被应用程序和用户访问。

  2. 存储扩展:通过挂载点,可以将额外的存储设备连接到文件系统中,扩展系统的存储容量。例如,可以将新的硬盘分区或逻辑卷挂载到文件系统的特定目录上,以增加可用空间。

  3. 分区管理:通过挂载点,可以将不同的分区或逻辑卷挂载到不同的目录上,实现对不同分区或逻辑卷的管理和隔离。这样可以更好地组织和管理文件系统中的数据。

  4. 多个操作系统共享数据:通过挂载点,可以在多个操作系统之间共享数据。例如,可以将一个文件系统挂载到多个操作系统上的不同挂载点,使得这些操作系统可以共享同一份数据。

需要注意的是,挂载点必须是一个空目录或者已经卸载的目录,否则挂载操作会失败。通常,系统会在启动时自动挂载一些默认的文件系统,如根文件系统(/)和/boot目录。其他的挂载点可以根据需要手动设置。

通过合理设置挂载点,可以灵活地管理和组织文件系统中的数据,实现存储扩展、数据共享和分区管理等功能。对于服务器和大型存储系统来说,挂载点的设置尤为重要,需要根据需求和性能考虑进行合理的规划和配置。

fdisk

fdisk是一个用于管理磁盘分区的命令行工具。它允许您创建、删除、调整和显示磁盘分区。

以下是一些常用的fdisk命令:

  • fdisk -l:显示系统上所有的磁盘和分区的详细信息。
  • fdisk /dev/sdX:打开指定磁盘(例如/dev/sda)进行分区操作。
  • m:显示fdisk命令的帮助信息。
  • n:创建一个新分区。
  • d:删除一个分区。
  • p:显示分区表。
  • w:保存并退出fdisk

请注意,对磁盘进行分区操作可能会导致数据丢失,请在操作之前确保您已经对磁盘进行了备份。

如果您想了解更详细的fdisk命令和用法,请参考fdisk的手册页,可以使用以下命令查看:

1
man fdisk

挂载

在Linux系统中,挂载(mount)命令用于将文件系统连接到指定的挂载点,使得文件系统中的文件和目录可以在该挂载点上访问。

mount

以下是挂载命令的基本语法:

1
mount [-t 文件系统类型] [-o 选项] 设备文件 挂载点

其中,常用的选项包括:

  • -t 文件系统类型:指定要挂载的文件系统类型,例如ext4、xfs等。如果不指定该选项,系统会自动识别文件系统类型。
  • -o 选项:指定挂载选项,例如读写权限、挂载参数等。多个选项之间用逗号分隔。

以下是一些常见的挂载命令示例:

  1. 挂载设备到指定的挂载点:

    1
    mount /dev/sdX /mnt
  2. 指定文件系统类型和挂载选项进行挂载:

    1
    mount -t ext4 -o rw /dev/sdX /mnt
  3. 挂载网络文件系统(NFS):

    1
    mount -t nfs server:/path /mnt
  4. 挂载ISO镜像文件:

    1
    mount -o loop /path/to/image.iso /mnt

请注意,/dev/sdX是要挂载的设备文件路径,/mnt是挂载点路径。确保挂载点存在并且为空。挂载点可以是任何空目录,您可以根据需要自行创建。

/etc/fstab

在Linux系统中,开机时检索的挂载配置文件/etc/fstab(File System Table)文件。该文件包含了系统启动时需要挂载的文件系统的信息。

/etc/fstab文件的每一行描述了一个要挂载的文件系统,其基本格式如下:

1
<设备文件> <挂载点> <文件系统类型> <挂载选项> <dump选项> <fsck选项>

其中,各字段的含义如下:

  • <设备文件>:要挂载的设备文件路径,可以是硬盘分区、软盘、光盘、网络文件系统等。
  • <挂载点>:文件系统挂载的目标路径,通常是一个空目录。
  • <文件系统类型>:要挂载的文件系统类型,例如ext4、xfs、nfs等。
  • <挂载选项>:挂载时的选项,例如读写权限、挂载参数等。
  • <dump选项>:备份工具dump使用的选项,一般设置为0。
  • <fsck选项>:文件系统检查工具fsck使用的选项,一般设置为1。

以下是一个示例/etc/fstab文件的内容:

1
2
/dev/sda1   /       ext4    defaults        0       1
/dev/sdb1 /data xfs defaults 0 2

上述示例中,第一行表示将/dev/sda1设备上的ext4文件系统挂载到根目录/,并使用默认挂载选项。第二行表示将/dev/sdb1设备上的xfs文件系统挂载到/data目录,并使用默认挂载选项。

请注意,修改/etc/fstab文件需要管理员权限。在修改前,建议备份原始文件以防止错误。

PS:

1.新建LV时需要指定LV的大小。例lvcreate -L 50G lvuser datavg

2.格式化LV。例mkfs.xfs /dev/datavg/lvuser(实际设备路径)

3.挂载LV。例mount /dev/datavg/lvuser /home/user

df

df(disk free)命令用来显示磁盘的使用情况,包括磁盘的总容量、已用空间、可用空间和使用百分比。它可以帮助我们监控磁盘的空间是否充足,以及哪些分区或文件系统占用了较多的空间。

基本语法如下:

1
df [选项] [文件名]

-h--human-readable:以人类可读的方式显示磁盘容量,如K、M、G等。
-T--print-type:显示每个文件系统的类型,如ext4、xfs等。
-a--all:显示所有文件系统,包括特殊的文件系统,如proc、sysfs等。
-i--inodes:显示每个文件系统的inode信息,即文件数量和使用情况。

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
root@kylin-vmwarevirtualplatform:~# df -h
文件系统 容量 已用 可用 已用% 挂载点
udev 1.9G 0 1.9G 0% /dev
tmpfs 391M 3.0M 388M 1% /run
/dev/sda5 17G 9.5G 6.4G 60% /
tmpfs 2.0G 4.0K 2.0G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda1 976M 117M 792M 13% /boot
/dev/sda7 12G 3.8G 6.8G 36% /data
tmpfs 391M 40K 391M 1% /run/user/1000

root@kylin-vmwarevirtualplatform:~# df -T
文件系统 类型 1K-块 已用 可用 已用% 挂载点
udev devtmpfs 1963924 0 1963924 0% /dev
tmpfs tmpfs 399856 2992 396864 1% /run
/dev/sda5 ext4 17468240 9891312 6666544 60% /
tmpfs tmpfs 1999260 4 1999256 1% /dev/shm
tmpfs tmpfs 5120 4 5116 1% /run/lock
tmpfs tmpfs 1999260 0 1999260 0% /sys/fs/cgroup
/dev/sda1 ext4 999320 119532 810976 13% /boot
/dev/sda7 ext4 11668656 3931000 7125204 36% /data
tmpfs tmpfs 399852 40 399812 1% /run/user/1000

root@kylin-vmwarevirtualplatform:~# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
udev devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 391M 3.0M 388M 1% /run
/dev/sda5 ext4 17G 9.5G 6.4G 60% /
tmpfs tmpfs 2.0G 4.0K 2.0G 1% /dev/shm
tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda1 ext4 976M 117M 792M 13% /boot
/dev/sda7 ext4 12G 3.8G 6.8G 36% /data
tmpfs tmpfs 391M 40K 391M 1% /run/user/1000

root@kylin-vmwarevirtualplatform:~# df -a
文件系统 1K-块 已用 可用 已用% 挂载点
sysfs 0 0 0 - /sys
proc 0 0 0 - /proc
udev 1963924 0 1963924 0% /dev
devpts 0 0 0 - /dev/pts
tmpfs 399856 2992 396864 1% /run
/dev/sda5 17468240 9891312 6666544 60% /
none 0 0 0 - /sys/kernel/security
tmpfs 1999260 4 1999256 1% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 1999260 0 1999260 0% /sys/fs/cgroup
cgroup2 0 0 0 - /sys/fs/cgroup/unified
cgroup 0 0 0 - /sys/fs/cgroup/systemd
pstore 0 0 0 - /sys/fs/pstore
none 0 0 0 - /sys/fs/bpf
cgroup 0 0 0 - /sys/fs/cgroup/perf_event
cgroup 0 0 0 - /sys/fs/cgroup/blkio
cgroup 0 0 0 - /sys/fs/cgroup/freezer
cgroup 0 0 0 - /sys/fs/cgroup/rdma
cgroup 0 0 0 - /sys/fs/cgroup/hugetlb
cgroup 0 0 0 - /sys/fs/cgroup/cpu,cpuacct
cgroup 0 0 0 - /sys/fs/cgroup/pids
cgroup 0 0 0 - /sys/fs/cgroup/cpuset
cgroup 0 0 0 - /sys/fs/cgroup/net_cls,net_prio
cgroup 0 0 0 - /sys/fs/cgroup/devices
cgroup 0 0 0 - /sys/fs/cgroup/memory
systemd-1 - - - - /proc/sys/fs/binfmt_misc
hugetlbfs 0 0 0 - /dev/hugepages
debugfs 0 0 0 - /sys/kernel/debug
mqueue 0 0 0 - /dev/mqueue
tracefs 0 0 0 - /sys/kernel/tracing
configfs 0 0 0 - /sys/kernel/config
fusectl 0 0 0 - /sys/fs/fuse/connections
vmware-vmblock 0 0 0 - /run/vmblock-fuse
/dev/sda1 999320 119532 810976 13% /boot
/dev/sda7 11668656 3931000 7125204 36% /data
/dev/sda7 11668656 3931000 7125204 36% /root
/dev/sda7 11668656 3931000 7125204 36% /home
tmpfs 399852 40 399812 1% /run/user/1000
gvfsd-fuse 0 0 0 - /run/user/1000/gvfs
binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
root@kylin-vmwarevirtualplatform:~#

root@kylin-vmwarevirtualplatform:~# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
udev 490981 496 490485 1% /dev
tmpfs 499815 1008 498807 1% /run
/dev/sda5 1117920 218325 899595 20% /
tmpfs 499815 2 499813 1% /dev/shm
tmpfs 499815 5 499810 1% /run/lock
tmpfs 499815 18 499797 1% /sys/fs/cgroup
/dev/sda1 65536 354 65182 1% /boot
/dev/sda7 745472 426 745046 1% /data
tmpfs 499815 50 499765 1% /run/user/1000

目录

Linux文件系统采用了一种树形结构的层次组织方式,从根目录(/)开始,通过目录的嵌套关系形成一个层次结构。下面是Linux文件系统树形结构的一些重要目录:

  1. 根目录(/):根目录是整个文件系统的起点,所有其他目录和文件都是从根目录开始的。根目录是文件系统的顶级目录,它没有父目录。

  2. /bin:这个目录包含了一些基本的可执行文件,如常用的命令(如ls、cp、mv等)和系统工具。

  3. /sbin:这个目录包含了一些系统级的可执行文件,通常只有管理员才能运行的命令。

  4. /etc:这个目录包含了系统的配置文件,如网络配置、用户账户配置、服务配置等。

  5. /home:这个目录是用户的主目录,每个用户都有一个以其用户名命名的子目录,在这个目录下存放用户的个人文件和配置。

  6. /lib:这个目录包含了一些共享的库文件,这些库文件被系统和应用程序使用。

  7. /dev:这个目录包含了设备文件,用于与系统中的设备进行交互。

  8. /mnt:这个目录是用于临时挂载其他文件系统的目录。当需要将其他存储设备挂载到系统中时,可以将其挂载到/mnt目录下。

  9. /opt:这个目录用于安装可选软件包,通常由第三方软件提供商使用。

  10. /tmp:这个目录用于存放临时文件,系统和应用程序可以在这个目录下创建临时文件。

  11. /usr:这个目录包含了用户程序和文件,如系统命令、应用程序、库文件、文档等。

  12. /var:这个目录包含了一些可变的文件,如日志文件、数据库文件、缓存文件等。

这只是Linux文件系统树形结构中的一些重要目录,实际上还有很多其他目录和子目录。每个目录都可以包含其他目录和文件,形成了一个层次结构,方便组织和管理文件和目录。

通过这种树形结构,Linux文件系统可以非常灵活地组织和管理文件和目录,使得用户可以方便地访问和操作文件系统中的数据。