Linux 基础 - 文件系统

Linux 文件系统

Linux 支持多种文件系统,例如:ext2、ext3、ext4、zfs、iso9660、msdoc、smbfs、nfs等。

Linux 最早的文件系统是 minix,但是这种文件系统由于文件名最长只可以是 14 个字符,文件最大只能是 64MB 等因素,后来被 ext2 (The Second Extended File System) 文件系统所替代,但是 ext2 文件系统不支持日志功能,很容易丢失数据。为了弥补 ext2 文件系统的不足,所以出现了有日志功能的 ext3 文件系统,ext3 文件系统完全兼容 ext2 文件系统,而且只需要两条命令就可以将 ext2 转换为 ext3。而 ext4 是 ext3 的改进版,修改了 ext3 中部分重要的数据结构,与 ext3 兼容,ext3 也可以转换为 ext4,相比于 ext3 目前支持最大 16TB 文件系统和最大 2TB 文件,ext4 分别支持 1EB (1EB=1024PB,1PB=1024TB) 的文件系统和 16TB 的文件,并且 ext4 支持无限数量的子目录 (ext3 目前只支持 32000 个子目录),目前 Linux 一般使用 ext4 文件系统。

磁盘分区、创建文件系统、挂载

磁盘使用前要进行分区,而分区分为 MBR 分区和 GPT 分区,MBR 分区就是以前 Windows XP 或者 Windows 7 所用的,当电脑启动时会先加载 BIOS,再由 BIOS 加载 MBR,MBR 再启动系统。而 GPT 分区是一种新的磁盘组织方法,它是由 UEFI 启动的。MBR 最多支持 4 个主分区 (其余的是扩展分区里的逻辑分区),并且最多支持 2T 的硬盘,而 GPT 则没有限制。本文采用 MBR 分区进行。

磁盘分好区后要创建文件系统 (格式化),最后将该分区挂载到系统中某个挂载点才可以使用。

创建文件系统:fdisk

-l 列出所有分区表

[root@localhost ~]# fdisk -l

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节


磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
磁盘标签类型:dos
磁盘标识符:0x000c2e6f

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM

磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节


磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节

可以看出,这台机器里有两个磁盘设备,sda 和 sdb,而 sda 是安装了 CentOS 的磁盘设备,sdb 则是一块空的磁盘设备,接下来对 sdb 进行分区操作

输入 fdisk /dev/sdb 即可对 sdb 进行操作

[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x33a583a8 创建新的 DOS 磁盘标签。

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
  • 第一个命令:n,代表 new,也就是新建分区
  • 然后需要选择 p:主分区,e:扩展分区,这里选择 p 主分区
  • 接下来输入分区号 1,代表第一个分区
  • 接下来输入扇区的起始位置,因为这是第一个分区,所以是范围的开始 2048
  • 然后输入扇区的结束位置,因为我只想分一个分区,所以是范围的最后 41943039
  • 最后一个命令:w,代表将刚才的操作写入分区表

接下来再次查看分区表

[root@localhost ~]# fdisk -l

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
磁盘标签类型:dos
磁盘标识符:0x33a583a8

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   83  Linux

磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
磁盘标签类型:dos
磁盘标识符:0x000c2e6f

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM

磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节


磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节

可以看到和之前相比,多了一个 sdb1 的分区,说明分区成功了

格式化文件系统:mkfs

命令:mkfs -t ext4 /dev/sdb1 将 sdb1 分区格式化为 ext4 文件系统

也可以简化命令:mkfs.ext4 /dev/sdb1

[root@localhost ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: 完成
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242624 blocks
262131 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

磁盘挂载:mount

接下来将 sdb1 挂载之后才可以使用,而挂载点只能是目录,所谓挂载可以理解为,我创建了一个目录 /vDisk,然后将 sdb1 挂载到 /vDisk,然后 /vDisk 显示的就是 sdb1 中的数据,就像 Windows 中你插了一个 U 盘,然后文件资源管理器中就出现了一个可移动磁盘。

# 创建 /vDisk
[root@localhost ~]# mkdir /vDisk
[root@localhost ~]# ls /
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  vDisk
# 挂载 /dev/sdb1 到 /vDisk
[root@localhost ~]# mount /dev/sdb1 /vDisk
# 查看 sdb1 的挂载
[root@localhost ~]# mount | grep sdb1
/dev/sdb1 on /vDisk type ext4 (rw,relatime,seclabel,data=ordered)
# 查看 sdb1 的可用空间
[root@localhost ~]# df -h | grep sdb1
/dev/sdb1                 20G   45M   19G    1% /vDisk

umount 解除挂载 umount /dev/sdb1 或者 umount /vDisk

设置启动自动挂载:/etc/fstab

mount 命令挂载的分区在重启计算机之后就会消失,所以需要配置 /etc/fstab 时刻系统启动后自动挂载

可以直接修改 /etc/fstab 内容,也可以使用 echo >>

[root@localhost ~]# echo "/dev/sdb1 /vDisk ext4 defaults 0 0" >> /etc/fstab
[root@localhost ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Fri Sep 25 08:27:56 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=10ea7acb-07aa-40a0-8dc4-a7e0330f729c /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/sdb1 /vDisk ext4 defaults 0 0
[root@localhost ~]#
  • 第一部分:/etc/sdb1 就是要挂载的分区
  • 第二部分:/vDisk 就是挂载的目录
  • 第三部分:ext4 是文件系统
  • 第四部分:defaults 使用系统默认挂载参数
  • 第五部分:0 决定 dump 命令在进行备份时是否要将这个分区存档 默认 0
  • 第六部分:0 系统启动时是否对这个分区进行 fsck,1 保留给根分区,2 其他分区检查完根分区检查,0 不检查

磁盘检查:fsck、badblocks

当磁盘出现逻辑错误时,可以使用 fsck 尝试修复,比如机器突然断电

fack -t ext4 /dev/sdb1

※ 磁盘需要处于未挂载状态,否则会造成文件系统损坏

badblocks -v /dev/sdb1

主要是用来检测磁盘坏道,如果出现坏道一般都是在分区的时候绕过坏道不适用,但是现在都是固态硬盘了,哪还有坏道,所以这个命令不常用

Linux 逻辑卷

  • 物理卷(PV:Physical Volume):物理卷是底层真正提供容量,存放数据的设备,它可以是整个硬盘、硬盘上的分区等。
  • 卷组(VG:Volume Group):卷组建立在物理卷之上,它由一个或多个物理卷组成。即把物理卷整合起来提供容量分配。一个LVM系统中可以只有一个卷组,也可以包含多个卷组。
  • 逻辑卷(LV:Logical Volume):逻辑卷建立在卷组之上,它是从卷组中“切出”的一块空间。它是最终用户使用的逻辑设备。逻辑卷创建之后,其大小可以伸缩。

给机器再添加一个 20G 的磁盘设备

[root@localhost ~]# fdisk -l

......(略去部分内容)......

磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节


......(略去部分内容)......

查看一下叫 sdc 接下来就在 sdc 中创建逻辑卷

创建并查询物理卷:pvcreate、pvdisplay

先把 sdc 分成 4 个区

[root@localhost ~]# fdisk /dev/sdc

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (2-4,默认 2):2
起始 扇区 (10487808-41943039,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):+5G
分区 2 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
分区号 (3,4,默认 3):3
起始 扇区 (20973568-41943039,默认为 20973568):
将使用默认值 20973568
Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):+5G
分区 3 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): p
已选择分区 4
起始 扇区 (31459328-41943039,默认为 31459328):
将使用默认值 31459328
Last 扇区, +扇区 or +size{K,M,G} (31459328-41943039,默认为 41943039):
将使用默认值 41943039
分区 4 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# fdisk -l

......(略去部分内容)......

磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
磁盘标签类型:dos
磁盘标识符:0xe9c33061

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    10487807     5242880   83  Linux
/dev/sdc2        10487808    20973567     5242880   83  Linux
/dev/sdc3        20973568    31459327     5242880   83  Linux
/dev/sdc4        31459328    41943039     5241856   83  Linux

......(略去部分内容)......

创建的分区 Id 是 83,System 是 Linux,我们需要的 Id 是 8e,System 是 Linux LVM,所以需要使用 fdisk 进行修改

[root@localhost ~]# fdisk /dev/sdc

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):t
分区号 (1-4,默认 4):1
Hex 代码(输入 L 列出所有代码):L

 0  空              24  NEC DOS         81  Minix / 旧 Linu bf  Solaris
 1  FAT12           27  隐藏的 NTFS Win 82  Linux 交换 / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 隐藏的 C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux 扩展      c7  Syrinx
 5  扩展            41  PPC PReP Boot   86  NTFS 卷集       da  非文件系统数据
 6  FAT16           42  SFS             87  NTFS 卷集       db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux 纯文本    de  Dell 工具
 8  AIX             4e  QNX4.x 第2部分  8e  Linux LVM       df  BootIt
 9  AIX 可启动      4f  QNX4.x 第3部分  93  Amoeba          e1  DOS 访问
 a  OS/2 启动管理器 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad 休 eb  BeOS fs
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT
 f  W95 扩展 (LBA)  54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC
11  隐藏的 FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor
12  Compaq 诊断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor
14  隐藏的 FAT16 <3 61  SpeedStor       ab  Darwin 启动     f2  DOS 次要
16  隐藏的 FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS
17  隐藏的 HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST 智能睡眠    65  Novell Netware  b8  BSDI swap       fd  Linux raid 自动
1b  隐藏的 W95 FAT3 70  DiskSecure 多启 bb  Boot Wizard 隐  fe  LANstep
1c  隐藏的 W95 FAT3 75  PC/IX           be  Solaris 启动    ff  BBT
1e  隐藏的 W95 FAT1 80  旧 Minix
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):t
分区号 (1-4,默认 4):2
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):t
分区号 (1-4,默认 4):3
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):t
分区号 (1-4,默认 4):4
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# fdisk -l

......(略去部分内容)......

磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
磁盘标签类型:dos
磁盘标识符:0xe9c33061

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    10487807     5242880   8e  Linux LVM
/dev/sdc2        10487808    20973567     5242880   8e  Linux LVM
/dev/sdc3        20973568    31459327     5242880   8e  Linux LVM
/dev/sdc4        31459328    41943039     5241856   8e  Linux LVM

......(略去部分内容)......

命令 t 是修改分区 Id,修改完成后变成了我们想要的分区 Id 和 System

接下来使用命令 pvcreate 将 sdc1、sdc2 创建为 PV

[root@localhost ~]# pvcreate /dev/sdc1
WARNING: dos signature detected on /dev/sdc1 at offset 510. Wipe it? [y/n]: y
  Wiping dos signature on /dev/sdc1.
  Physical volume "/dev/sdc1" successfully created.
[root@localhost ~]# pvcreate /dev/sdc2
  Physical volume "/dev/sdc2" successfully created.

pvscan 和 pvdisplay 可以查看系统中的 PV,pvdisplay 显示的信息比较详细

[root@localhost ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               centos
  PV Size               <19.00 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              4863
  Free PE               0
  Allocated PE          4863
  PV UUID               LMqaC3-JPQ0-0ozj-jY1L-g1If-Luc2-KLZWab

  "/dev/sdc1" is a new physical volume of "5.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc1
  VG Name
  PV Size               5.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               L2QBF9-39j1-ID2l-4du8-ihkW-V31T-8pTbic

  "/dev/sdc2" is a new physical volume of "5.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc2
  VG Name
  PV Size               5.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               d8E3YI-lR7W-RtDc-9hlQ-Nkg7-ak1O-w6aerK

创建并查询卷组:vgcreate、vgdisplay

使用 sdc1 和 sdc2 创建一个名为 sdc12VG 的卷组

[root@localhost ~]# vgcreate sdc12VG /dev/sdc1 /dev/sdc2
  Volume group "sdc12VG" successfully created

vgscan 和 vgdisplay 可以查看系统中的 VG,vgdisplay 显示的信息比较详细

[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               sdc12VG
  System ID
  Format                lvm2
  Metadata Areas        2
  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                2
  Act PV                2
  VG Size               9.99 GiB
  PE Size               4.00 MiB
  Total PE              2558
  Alloc PE / Size       0 / 0
  Free  PE / Size       2558 / 9.99 GiB
  VG UUID               Pwde8V-mQd6-hYZg-KYOk-vYID-bCny-CjfzvZ

  --- Volume group ---
  VG Name               centos
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <19.00 GiB
  PE Size               4.00 MiB
  Total PE              4863
  Alloc PE / Size       4863 / <19.00 GiB
  Free  PE / Size       0 / 0
  VG UUID               u8KSzs-d1kF-Zl7n-pYHf-ecdr-SV0E-gN84ZL

扩容卷组:vgextend

将 sdc3 加入到 sdc12VG 中,先将 sdc3 创建成 PV,再添加到 sdc12VG

[root@localhost ~]# pvcreate /dev/sdc3
  Physical volume "/dev/sdc3" successfully created.
[root@localhost ~]# vgextend sdc12VG /dev/sdc3
  Volume group "sdc12VG" successfully extended
[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               sdc12VG
  System ID
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               <14.99 GiB
  PE Size               4.00 MiB
  Total PE              3837
  Alloc PE / Size       0 / 0
  Free  PE / Size       3837 / <14.99 GiB
  VG UUID               Pwde8V-mQd6-hYZg-KYOk-vYID-bCny-CjfzvZ

......(略去部分内容)......

发现 VG SIZE 增加了 5G

创建并查询逻辑卷:lvcreate、lvdisplay

  • -L 指定逻辑卷大小
  • -n 指定逻辑卷名字
  • 然后自定卷组
[root@localhost ~]# lvcreate -L 2G -n sdc12LV sdc12VG
  Logical volume "sdc12LV" created.

查看 LV 也是分为 lvscan 和 lvdisplay

[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/sdc12VG/sdc12LV
  LV Name                sdc12LV
  VG Name                sdc12VG
  LV UUID                oc08TQ-GdMa-ZipX-9PfK-R0FV-NvMa-Y1kM6l
  LV Write Access        read/write
  LV Creation host, time localhost, 2020-09-26 12:32:13 +0800
  LV Status              available
  # open                 0
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

  ......(略去部分内容)......

逻辑卷创建完后还不能使用,还需要创建文件系统以及挂载才可以使用

[root@localhost ~]# mkdir /vDisk1
[root@localhost ~]# ls /
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  vDisk  vDisk1
[root@localhost ~]# mkfs.ext4 /dev/sdc12VG/sdc12LV
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: 完成
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

[root@localhost ~]# mount /dev/sdc12VG/sdc12LV /vDisk1
[root@localhost ~]# mount | grep vDisk
/dev/sdb1 on /vDisk type ext4 (rw,relatime,seclabel,data=ordered)
/dev/mapper/sdc12VG-sdc12LV on /vDisk1 type ext4 (rw,relatime,seclabel,data=ordered)

硬链接和软连接

  • 硬链接的作用是允许一个文件拥有多个有效路径名,删除一个链接不会影响索引结点本身和其它链接,只有当最后一个链接删除时文件数据块及目录的链接才会被释放,也就是说文件真正删除的前提所有相关的硬链接均被删除
    • 不允许给目录创建硬链接
    • 只有在同一文件系统中的文件之间才能创建链接,即不同分区上的两个文件之间不能建立硬链接
  • 软连接是一个包含了另一个文件路径名的文件,可以指向任意文件或目录,也可以跨不同的文件系统,和 Windows 下的快捷方式类似,删除软连接不会影响源文件,删除源文件则软连接则会“断链”

创建硬链接:ln

首先我们有一个文件 file.txt 和两个目录 dir1、dir2

[root@localhost ln]# ls
dir1  dir2  file.txt
[root@localhost ln]# cat file.txt
Hello World!
[root@localhost ln]# ls dir1
[root@localhost ln]# ls dir2
[root@localhost ln]#

可以看出 file.txt 中只有一行 Hello World!,dir1 和 dir2 都是空的

接下来我们就在 dir1 和 dir2 中建立 file.txt 的硬链接

[root@localhost ln]# ln file.txt dir1/f1
[root@localhost ln]# ln file.txt dir2/f2
[root@localhost ln]# ls
dir1  dir2  file.txt
[root@localhost ln]# ls dir1
f1
[root@localhost ln]# ls dir2
f2
[root@localhost ln]# cat dir1/f1
Hello World!
[root@localhost ln]# cat dir2/f2
Hello World!
[root@localhost ln]#

可以看出硬链接创建成功了

我们尝试删除和修改一下

[root@localhost ln]# rm file.txt
rm:是否删除普通文件 "file.txt"?y
[root@localhost ln]# ls
dir1  dir2
[root@localhost ln]# ls dir1
f1
[root@localhost ln]# cat dir1/f1
Hello World!
[root@localhost ln]# cat dir2/f2
Hello World!
[root@localhost ln]# vi dir1/f1
[root@localhost ln]# cat dir1/f1
Hello World 666!
[root@localhost ln]# cat dir2/f2
Hello World 666!

删掉一个,其余还存在,修改一个,其余也变

创建软连接:ln -s

准备和之前一样的文件

[root@localhost ln]# ls
dir1  dir2  file.txt
[root@localhost ln]# cat file.txt
Hello World!
[root@localhost ln]# ls dir1
[root@localhost ln]# ls dir2
[root@localhost ln]#

创建软连接

[root@localhost ln]# ln -s file.txt dir1/f1
[root@localhost ln]# ln -s file.txt dir2/f2
[root@localhost ln]# ls
dir1  dir2  file.txt
[root@localhost ln]# ls dir1
f1
[root@localhost ln]# ls dir2
f2
[root@localhost ln]# ll dir1
总用量 0
lrwxrwxrwx. 1 root root 8 9月  26 13:00 f1 -> file.txt
[root@localhost ln]# ll dir2
总用量 0
lrwxrwxrwx. 1 root root 8 9月  26 13:00 f2 -> file.txt
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值