Linux云计算 |【第一阶段】ENGINEER-DAY2

主要内容:

磁盘空间管理fdisk、parted工具、开机自动挂载、文件系统、交换空间

KVM虚拟化 实操前骤:

1)添加一块硬盘(磁盘),需要关机才能进行操作,点击左下角【添加硬件】

2)选择20GB,点击创建完成,显示磁盘2

3)KVM虚拟机的独创磁盘接口vda/vdb(优点:传输快,缺点:与实际的磁盘接口不符)

4)列出当前系统识别的硬盘(lsblk)

bash 复制代码
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1  8.8G  0 rom  /run/media/root/CentOS 7 x86_64
vda             252:0    0   20G  0 disk 
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
vdb             252:16   0   20G  0 disk 

VMware虚拟化 实操前骤:

1)关闭虚拟机CentOS7,打开【编辑虚拟机设置】,进行添加设备

2)点击"添加"

3)添加硬盘

4)选择SCSI磁盘

5)选择创建新虚拟磁盘

6)设置磁盘大小

7)设置指定磁盘文件的路径

8)设置指定磁盘文件的路径

9)查看是否有硬盘2


一、磁盘结构及概念

磁盘结构是指计算机存储设备(如硬盘、固态硬盘等)的物理和逻辑组织方式

  1. 步骤:识别硬盘(HDD/SSD) -> 分区规划 -> 文件系统格式化 -> 挂载使用
  2. 类似:毛坯楼层 --- 打隔断 --- 装修 --- 入驻

1、物理结构

机械硬盘(HDD)

  • 盘片(Platter):硬盘通常由多个盘片组成,每个盘片都有两面,每面都有一个读写头
  • 磁道(Track):每个盘片上的同心圆环称为磁道
  • 扇区(Sector):磁道被划分为若干个扇区,每个扇区通常存储512字节或4096字节的数据
  • 柱面(Cylinder):所有盘片上同一位置的磁道组成一个柱面

固态硬盘(SSD)

  • 闪存芯片(Flash Memory Chip):SSD使用闪存芯片来存储数据,没有机械部件
  • NAND单元:闪存芯片由多个NAND单元组成,每个单元可以存储一个或多个比特的数据

2、逻辑结构

分区(Partition)

  • 主分区(Primary Partition):硬盘上可以有多个主分区,每个主分区可以独立格式化并安装操作系统
  • 扩展分区(Extended Partition):扩展分区可以包含多个逻辑分区
  • 逻辑分区(Logical Partition):扩展分区内的分区称为逻辑分区

文件系统(File System)

  • 引导块(Boot Block):存储引导程序,用于启动操作系统
  • 超级块(Super Block):存储文件系统的元数据,如块大小、空闲块数量等
  • inode表(Inode Table):存储文件的元数据,如文件大小、权限、时间戳等
  • 数据块(Data Block):存储文件的实际数据
bash 复制代码
​​​​[root@localhost ~]# lsblk      //列出当前系统识别的硬盘
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1  8.8G  0 rom  /run/media/root/CentOS 7 x86_64
vda             252:0    0   20G  0 disk 
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
vdb             252:16   0   20G  0 disk 

注意:vda*/vdb*命名为KVM虚拟机独有的磁盘接口,实际磁盘接口表现为sda*/sdb*

3、磁盘管理

格式化(Formatting)

  • 低级格式化(Low-level Formatting):初始化磁盘的物理结构,创建磁道和扇区
  • 高级格式化(High-level Formatting):创建文件系统,初始化超级块、inode表和数据块

分区表(Partition Table)

  • MBR(Master Boot Record):传统的分区表格式,支持最多4个主分区或3个主分区加1个扩展分区
  • GPT(GUID Partition Table):现代的分区表格式,支持更多分区,更大的磁盘容量,并且更可靠

4、磁盘性能

  • 寻道时间(Seek Time):硬盘读写头移动到指定磁道所需的时间
  • 旋转延迟(Rotational Latency):盘片旋转到指定扇区所需的时间
  • 传输速率(Transfer Rate):数据从磁盘传输到内存的速率

5、磁盘调度算法

  • 先来先服务(FCFS):按请求到达的顺序进行服务
  • 最短寻道时间优先(SSTF):选择当前磁头位置最近的请求进行服务
  • 电梯算法(SCAN):磁头在磁盘上按一个方向移动,直到没有请求为止,然后反向移动
  • 循环扫描(C-SCAN):磁头在磁盘上按一个方向移动,直到没有请求为止,然后返回起点重新开始

6、计算机容量单位

一般用B,KB,MB,GB,TB,PB,EB,ZB,YB,BB来表示,它们之间的关系是:

  • 1KB (Kilobyte 千字节)=1024B,
  • 1MB (Megabyte 兆字节 简称"兆")=1024KB,
  • 1GB (Gigabyte 吉字节 又称"千兆")=1024MB,
  • 1TB (Terabyte 万亿字节 太字节)=1024GB,
  • 1PB (Petabyte 千万亿字节 拍字节)=1024TB,
  • 1EB (Exabyte 百亿亿字节 艾字节)=1024PB,
  • 1ZB (Zettabyte 十万亿亿字节 泽字节)= 1024 EB,
  • 1YB (Yottabyte 一亿亿亿字节 尧字节)= 1024 ZB,
  • 1BB (Brontobyte 一千亿亿亿字节)= 1024 YB.

二、磁盘分区规划

主流分区方案(分区模式): MBR 与 GPT

注意:分区规划中,MBR分区模式与GPT分区模式不共存;

MBR / msods分区模式

  • 分区类型:主分区、扩展分区(占用所有剩余空间)、逻辑分区
  • 一般分区规划:① 1~4个主分区,② 0~3个主分区+1个扩展分区(n个逻辑分区)
  • MBR分区模式 最大支持容量为2.2TB的磁盘
  • 最多只能有 4个主分区,扩展分区可以没有,最多只有1个
  • 扩展分区不能格式化,空间也不能直接存储数据(目的为产生逻辑分区存储数据)
  • 可以用于存储数据的分区:主分区与逻辑分区

1、fdisk分区工具

  • 格式:fdisk -l /dev/sda //查看分区表
  • 格式:fdisk 硬盘设备 (例如:/dev/sda)

步骤1:

bash 复制代码
[root@localhost ~]# fdisk -l /dev/vdb       ## 查看分区表
磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

[root@localhost ~]# fdisk /dev/vdb          ## 对硬盘进行分区规划
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x6ab34c3a 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):p     ## 查看现有的分区表(类似fdisk -l /dev/vdb )
磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6ab34c3a
   设备 Boot      Start         End      Blocks   Id  System

命令(输入 m 获取帮助):n              ## 新建分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)      ## 主分区数
   e   extended                      ## 扩展分区数
Select (default p):                  ## 默认先创建主分区
Using default response p
分区号 (1-4,默认 1):                    ## 默认分区号为1
起始 扇区 (2048-41943039,默认为 2048):   ## 默认起始大小2048
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+2G  //设置大小为2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB

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

命令(输入 m 获取帮助):p
磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6ab34c3a
   设备 Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048     4196351     2097152   83  Linux
/dev/vdb2         4196352     6293503     1048576   83  Linux
  
命令(输入 m 获取帮助):w        ## 保存更改并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。

[root@localhost ~]# lsblk      ## 查看分区表,挂载目录
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1  8.8G  0 rom  /run/media/root/CentOS 7 x86_64
vda             252:0    0   20G  0 disk 
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
vdb             252:16   0   20G  0 disk 
├─vdb1          252:17   0    2G  0 part 
└─vdb2          252:18   0    1G  0 part 

2、partprobe识别新分区表

当硬盘的分区表被更改以后,需要将分区表的变化及时通知Linux内核,建议reboot,否则在访问分区时可能会找不到准确的设备;

注意:因磁盘已有分区设备正在运行,需要通过reboot或partprobe 刷新分区表

步骤2:

bash 复制代码
[root@localhost ~]# fdisk /dev/vdb      ## 对硬盘进行分区规划
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6ab34c3a
   设备 Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048     4196351     2097152   83  Linux
/dev/vdb2         4196352     6293503     1048576   83  Linux

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

命令(输入 m 获取帮助):n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e):       ## 创建扩展分区
Using default response e
已选择分区 4
起始 扇区 (10487808-41943039,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):
将使用默认值 41943039
分区 4 已设置为 Extended 类型,大小设为 15 GiB   ## 注意将剩余空间给扩展分区

命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (10489856-41943039,默认为 10489856):
将使用默认值 10489856
Last 扇区, +扇区 or +size{K,M,G} (10489856-41943039,默认为 41943039):+900M
分区 5 已设置为 Linux 类型,大小设为 900 MiB

命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 6
起始 扇区 (12335104-41943039,默认为 12335104):
将使用默认值 12335104
Last 扇区, +扇区 or +size{K,M,G} (12335104-41943039,默认为 41943039):+2G
分区 6 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):p
磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6ab34c3a
   设备 Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048     4196351     2097152   83  Linux
/dev/vdb2         4196352     6293503     1048576   83  Linux
/dev/vdb3         6293504    10487807     2097152   83  Linux
/dev/vdb4        10487808    41943039    15727616    5  Extended
/dev/vdb5        10489856    12333055      921600   83  Linux
/dev/vdb6        12335104    16529407     2097152   83  Linux

命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
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)
正在同步磁盘。

[root@localhost ~]# partprobe      ## 刷新分区表
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。

[root@localhost ~]# fdisk -l /dev/vdb    ## 查看已有的分区表
磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6ab34c3a
   设备 Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048     4196351     2097152   83  Linux
/dev/vdb2         4196352     6293503     1048576   83  Linux
/dev/vdb3         6293504    10487807     2097152   83  Linux
/dev/vdb4        10487808    41943039    15727616    5  Extended
/dev/vdb5        10489856    12333055      921600   83  Linux
/dev/vdb6        12335104    16529407     2097152   83  Linux
##注意:/dev/vdb4为扩展分区,不存储数据,以Extended往上为主分区,以Extended往下为逻辑分区;

[root@localhost ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1  8.8G  0 rom  /run/media/root/CentOS 7 x86_64
vda             252:0    0   20G  0 disk 
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
vdb             252:16   0   20G  0 disk 
├─vdb1          252:17   0    2G  0 part /mypart1
├─vdb2          252:18   0    1G  0 part /mypart2
├─vdb3          252:19   0    2G  0 part 
├─vdb4          252:20   0  512B  0 part 
├─vdb5          252:21   0  900M  0 part 
└─vdb6          252:22   0    2G  0 part 

三、格式化分区

格式化分区是指在存储设备(如硬盘、固态硬盘、USB闪存驱动器等)上创建文件系统的过程。这个过程使得操作系统能够识别和使用该分区来存储和管理文件。格式化分区通常包括以下几个步骤:

  1. 低级格式化(Low-level Formatting):这是在制造过程中或使用特殊工具进行的操作,它将磁盘划分为磁道和扇区,为每个扇区分配一个地址。低级格式化通常不需要用户手动执行,因为它在磁盘出厂时已经完成

  2. 分区(Partitioning) :在磁盘上创建一个或多个分区,每个分区可以独立使用。分区可以使用工具如 fdiskgdisk 或图形界面工具如 GParted 来完成。分区表(如 MBR 或 GPT)记录了这些分区的位置和大小

  3. 高级格式化(High-level Formatting):这是用户通常所说的"格式化",它涉及在分区上创建文件系统。文件系统定义了数据如何存储和检索,包括目录结构、文件元数据(如权限、时间戳)和数据块的分配方式。常见的文件系统包括 NTFS、FAT32、exFAT、HFS+、APFS、ext3、ext4 等(补充:ext4适合存储数据个数多、容量小,xfs适合存储单个数据容量大)

格式化分区的主要目的是:

  • 准备存储设备:使操作系统能够识别和使用该设备
  • 创建文件系统:定义数据存储和组织的规则
  • 清除数据:格式化分区通常会删除分区上的所有数据,使其无法恢复(尽管在某些情况下,专业数据恢复服务可能仍然能够恢复部分数据)

1、mkfs格式化工具

  • 格式:[mkfs.ext3] 分区设备路径
  • 格式:[mkfs.ext4] 分区设备路径
  • 格式:[mkfs.xfs] 分区设备路径
bash 复制代码
[root@localhost ~]# mkfs.   //双击[Tab]可查看文件系统类型
mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.minix   mkfs.vfat    
mkfs.cramfs  mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.xfs  

2、创建文件系统(格式化分区设备)

用途:按照需要的不同的文件系统类型进行格式化分区

步骤3:

① /dev/vdb1 ==> EXT4类型

bash 复制代码
[root@localhost ~]# mkfs.ext4 /dev/vdb1    //格式化分区为ext4文件系统
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
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: 完成 

② /dev/vdb2 ==> XFS类型

bash 复制代码
[root@localhost ~]# mkfs.xfs /dev/vdb2    //格式化分区为xfs文件系统
meta-data=/dev/vdb2              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

③ 查看UUID和文件系统

bash 复制代码
[root@localhost ~]# blkid /dev/vdb1     //查看UUID和文件系统
/dev/vdb1: UUID="b88a568a-6e22-473e-a8ba-2f459ce4dfa3" TYPE="ext4" 
[root@localhost ~]# blkid /dev/vdb2
/dev/vdb2: UUID="842a2040-bdb8-4bcb-ac49-2f338fd6bea6" TYPE="xfs" 

3、blkid识别文件系统类型工具

用途:查看分区设备的UUID和文件系统类型

格式:blkid 分区设备路径 (例如:/dev/vdb1)

例如:

bash 复制代码
[root@localhost ~]# blkid /dev/vdb1
/dev/vdb1: UUID="b88a568a-6e22-473e-a8ba-2f459ce4dfa3" TYPE="ext4" 
[root@localhost ~]# blkid /dev/vdb2
/dev/vdb2: UUID="842a2040-bdb8-4bcb-ac49-2f338fd6bea6" TYPE="xfs" 

四、访问文件系统

1、访问已格式化的分区

使用mount命令挂载,并访问已格式化的分区测试

注意:挂载的分区设备对应一个分区,不能多个分区设备同时挂载同一个访问点;

步骤4:

bash 复制代码
[root@localhost ~]# mkdir /mypart1 /mypart2
[root@localhost ~]# mount /dev/vdb1 /mypart1/
[root@localhost ~]# mount /dev/vdb2 /mypart2/
[root@localhost ~]# df -h | grep mypart
/dev/vdb1                2.0G  6.0M  1.8G    1% /mypart1
/dev/vdb2               1014M   33M  982M    4% /mypart2

2、df 工具检查使用情况

用途:显示正在挂载的设备信息(文件系统或对应分区设备、使用容量、挂载点)

格式:df [-h]

选项:[-h] 显示单位(K、M、G)

例如:

bash 复制代码
[root@localhost ~]# df -h /
文件系统                    容量  已用  可用  已用%  挂载点
/dev/mapper/centos-root   17G  4.4G  13G  26%   /

注意:不添加访问点,因目录创建在根目录下,则占用根目录的设备的存储空间

3、开机自动挂载(永久挂载)

配置文件**/etc/fstab**。实现开机自动挂载

记录格式:分区设备路径 挂载点 文件系统类型 参数 备份标记 检测顺序

部分记录说明:

  • 参数:defults,命令的集合
  • 备份标记:0,代表不备份(系统的dump可备份分区文件,但效率及成功率低)
  • 检测顺序:0,磁盘设备检测

- mount -a 作用:

① 检测/etc/fstab文件配置是否错误,按照Linux系统识别方法进行挂载

② 检测/etc/fstab中,配置书写完成,但当前没有挂载的设备,将进行自动挂载

步骤5:

bash 复制代码
[root@localhost ~]# vim /etc/fstab 
# /etc/fstab
# Created by anaconda on Mon Mar  1 14:53:18 2021
#
# 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=2ac42f49-b787-4b0f-8137-68b1424e033b  /boot  xfs defaults    0 0
/dev/mapper/centos-swap swap       swap    defaults        0 0
/dev/vdb1 /mypart1 ext4 defaults 0 0
/dev/vdb2 /mypart2 xfs defaults 0 0

验证1:

bash 复制代码
[root@localhost ~]# mount -a //无报错信息则不方便识别,需进行卸载挂载点验证

验证2:

根据配置文件自动挂载验证,若不能自动挂载则说明有问题

bash 复制代码
[root@localhost ~]# umount /mypart1
[root@localhost ~]# umount /mypart2
[root@localhost ~]# df -h | grep mypart
[root@localhost ~]# mount -a    //根据配置文件自动挂载
[root@localhost ~]# df -h | grep mypart
/dev/vdb1                2.0G  6.0M  1.8G    1% /mypart1
/dev/vdb2               1014M   33M  982M    4% /mypart2
[root@localhost ~]# reboot   //重启(非必须)

常见报错1:文件系统类型写错

bash 复制代码
[root@localhost ~]# vim /etc/fstab 
/dev/vdb1 /mypart1 ext3 defaults 0 0
[root@localhost ~]# mount -a
mount: 文件系统类型错误、选项错误、/dev/vdb1 上有坏超级块、
       缺少代码页或助手程序,或其他错误
       有些情况下在 syslog 中可以找到一些有用信息- 请尝试
       dmesg | tail  这样的命令看看。

常见报错2:挂载点目录写错

bash 复制代码
[root@localhost ~]# vim /etc/fstab 
/dev/vdb2 /mypart3 xfs defaults 0 0
[root@localhost ~]# mount -a
mount: 挂载点 /mypart3 不存在

常见报错3:在挂载点目录下umount

bash 复制代码
[root@localhost mypart2]# umount /mypart2
umount: /mypart2:目标忙。
        (有些情况下通过 lsof(8) 或 fuser(1) 可以
         找到有关使用该设备的进程的有用信息)

常见报错4:挂载的分区设备不存在

bash 复制代码
[root@localhost ~]# vim /etc/fstab 
/dev/vdc2 /mypart3 xfs defaults 0 0
[root@localhost /]# mount -a
mount: 特殊设备 /dev/vdc2 不存在

如果/etc/fstab文件有误又进行重启,【进入维护模式】修复办法:

重启后,因系统无法找到分区设备,将进入交互界面再修改配置

1.输入root密码

2.修改/etc/fstab配置文件

3.确认无误后,进行reboot重启

步骤总结:

步骤1:识别硬盘lsblk

步骤2:分区规划fdisk、fdisk -l(MBR分区模式)

步骤3:刷新分区表partprode

步骤4:格式化文件系统mkfs,ext4 mkds.xfs(blkid查看文件系统)

步骤5:挂载mount,修改/etc/fstab开机自动挂载(mount -a、df -h查看挂载磁盘信息)

补充:/dev/sda5表示含义:

① SCSI接口设备第一块的第一个逻辑分区;

② SCSI接口设备第一块的第5个分区

五、GPT分区模式及Parted工具

GPT分区模式(GPT,GUID Partition Table)

  • 全局唯一标识分区表;
  • 突破固定大小64字节的分区表限制;
  • 最多可支持128个主分区,最大支持18EB磁盘;(1EB=1024PB=1024x1024TB)

注意:一块硬盘只能有一个分区方案,MBR与GPT不能共存;

注意:工作环境中,分区尽量不大于10个,不易维护;

1、parted分区指令工具(可划分MBR也可划分GPT)

格式:parted 硬盘设备 [指令]...

指令:

  • [ help ] //查看指令帮助
  • [ mktable msdos|gpt] //建立指定模式分区表(可指定MBR或GPT)
  • [ mkpart 分区名称 文件系统类型 start end ] //指定大小或百分比%作为起始、结束位置
  • [ print ] //查看分区表
  • [ rm 序号 ] //删除指定的分区
  • [ quit ] //退出交互环境

注意:划分分区时,起始点与结束点位置需要计算首尾,非fdisk+容量大小方式;

正常报错提示:

bash 复制代码
[root@localhost images]# parted /dev/vdb     //对磁盘进行分区                                                     
错误: /dev/vdb: unrecognised disk label    //正常报错:提示没有指定分区模式
...

注意:fdisk分区工具没有报错,因fdisk未指定分区模式时默认为MBR分区模式


例如1:

bash 复制代码
[root@localhost images]# parted /dev/vdb     //对磁盘进行分区
GNU Parted 3.1
使用 /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) print          //查看分区表                                    
错误: /dev/vdb: unrecognised disk label
Model: Virtio Block Device (virtblk)                                      
Disk /dev/vdb: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

(parted) mktable gpt       //指定分区模式为GPT                                               

(parted) print              //查看分区表                                                
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number  Start  End  Size  File system  Name  标志

(parted) mkpart         //划分磁盘分区                                           
分区名称?  []? haha        //说明分区名称(随便写)                                        
文件系统类型?  [ext2]? ext4        //说明文件系统类型(仅说明。不会进行格式化)                                      
起始点? 0       //指定起始点位置                                                         
结束点? 10G    //指定结束点位置                                                          
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? Ignore      //因需划分系统保留数据空间,选择忽略即可                                       

(parted) print                                                            
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number  Start   End     Size     File system  Name  标志
 1      17.4kB  10.0GB  10000MB               haha

例如2:

bash 复制代码
(parted) unit      //双击[Tab]可查看显示的单位                                                      
align-check  mklabel      print        resizepart   toggle       
disk_set     mkpart       quit         rm           unit         
disk_toggle  mktable      rescue       select       version      
help         name         resize       set          
(parted) unit GB    //选择GB为显示单位

(parted) print      //查看size大小,已显示GB单位                                                     
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number  Start   End     Size    File system  Name  标志
 1      0.00GB  10.0GB  10.0GB               haha
bash 复制代码
(parted) mkpart     //划分第2个分区
分区名称?  []? haha                                                      
文件系统类型?  [ext2]? ext4
起始点? 10G                                                              
结束点? 20G                                                              
(parted) mkpart     //划分第3个分区
分区名称?  []? xixi                                                      
文件系统类型?  [ext2]? ext4                                              
起始点? 20G                                                              
结束点? 30G                                                              
(parted) quit      //与fdisk不同,无w保存概念,划分分区时已编写磁盘操作                                           
信息: You may need to update /etc/fstab.

[root@localhost images]# lsblk                                            
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1  8.8G  0 rom  /run/media/root/CentOS 7 x86_64
vda             252:0    0   20G  0 disk
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0   19G  0 part
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
vdb             252:16   0   80G  0 disk
├─vdb1          252:17   0  9.3G  0 part     //进律GIB:1024  GB:1000
├─vdb2          252:18   0  9.3G  0 part
└─vdb3          252:19   0  9.3G  0 part

例如3:通过命令方式进行分区划分

bash 复制代码
[root@localhost /]# parted /dev/vdb mkpart haha ext4 40G 50G
信息: You may need to update /etc/fstab.
[root@localhost /]# lsblk                                                 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1  8.8G  0 rom  /run/media/root/CentOS 7 x86_64
vda             252:0    0   20G  0 disk
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0   19G  0 part
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
vdb             252:16   0   80G  0 disk
├─vdb1          252:17   0  9.3G  0 part
├─vdb2          252:18   0  9.3G  0 part
├─vdb3          252:19   0  9.3G  0 part
└─vdb4          252:20   0  9.3G  0 part

例如4:通过命令方式进行分区划分,大小位置可用%表示(需要计算,计算错误则报错)

bash 复制代码
[root@localhost /]# parted /dev/vdb mkpart xixi ext4 50G 100%
信息: You may need to update /etc/fstab.
[root@localhost /]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1  8.8G  0 rom  /run/media/root/CentOS 7 x86_64
vda             252:0    0   20G  0 disk
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0   19G  0 part
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
vdb             252:16   0   80G  0 disk
├─vdb1          252:17   0  9.3G  0 part
├─vdb2          252:18   0  9.3G  0 part
├─vdb3          252:19   0  9.3G  0 part
├─vdb4          252:20   0  9.3G  0 part
└─vdb5          252:21   0 33.4G  0 part

提示:重新指定分区模式,则删除磁盘所有内容并提示是否重新指定分区模式

bash 复制代码
(parted) mktable gpt
警告: The existing disk label on /dev/vdb will be destroyed and all data on this
disk will be lost. Do you want to continue?
是/Yes/否/No?

注意:如果磁盘内容不重要,可根据mktable gpt方式重置分区

**常见报错:**Unit选择进律单位,指令输入有误

bash 复制代码
(parted) unit                                                             
Unit?  [compact]? unit GB
parted: invalid token: unit

常见报错:# rm -rf /dev/vdb

硬盘设备是特殊存在,若要去掉硬盘,需要拔掉硬件;做磁盘分区的删除操作必须用磁盘工具进行删除(例如:fdisk、parted)

常见报错:错误的文件系统类型,会报错

bash 复制代码
文件系统类型?  [ext2]? cd                                                
parted: invalid token: cd

常见报错:新划分磁盘分区的起始点位置在其它磁盘的起始结束点位置当中

bash 复制代码
(parted) mkpart  
分区名称?  []? xixi                                                      
文件系统类型?  [ext2]?                                                   
起始点? 11G                                                              
结束点? 30G                                                              
警告: You requested a partition from 11.0GB to 30.0GB (sectors
21484375..58593750).
The closest location we can manage is 20.0GB to 30.0GB (sectors
39061504..58593750).
Is this still acceptable to you?
是/Yes/否/No? n

注意:若新划分磁盘分区的起始点可以不再前一块磁盘的结束点位置创建,但计算位置大小麻烦,不建议此方式划分。

六、SWAP交换空间

**用途:**利用硬盘的空闲空间充当内存的空间,创建新的分区;当物理内存即将占满,CPU可以将内存中的数据暂时放入交换空间中,缓解真实物理内存的压力;(CPU--->内存--->硬盘)

交换空间最好为内存的2倍,交换空间最大不会超过16G


案例1:利用硬盘分区方式制作交换空间(分区扩展)

1、创建Swap分区

首先添加20G硬盘进行(MBR分区模式)规划分区,划分2个2G的主分区、1个3G的主分区、2个4G的逻辑分区;

步骤1:

bash 复制代码
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vdc             252:32   0   20G  0 disk
...

[root@localhost ~]# fdisk /dev/vdc
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB
 
命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p):
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (4196352-41943039,默认为 4196352):
将使用默认值 4196352
Last 扇区, +扇区 or +size{K,M,G} (4196352-41943039,默认为 41943039):+2G
分区 2 已设置为 Linux 类型,大小设为 2 GiB
 
命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p):
Using default response p
分区号 (3,4,默认 3):
起始 扇区 (8390656-41943039,默认为 8390656):
将使用默认值 8390656
Last 扇区, +扇区 or +size{K,M,G} (8390656-41943039,默认为 41943039):+3G
分区 3 已设置为 Linux 类型,大小设为 3 GiB
 
命令(输入 m 获取帮助):n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e):
Using default response e
已选择分区 4
起始 扇区 (14682112-41943039,默认为 14682112):
将使用默认值 14682112
Last 扇区, +扇区 or +size{K,M,G} (14682112-41943039,默认为 41943039):
将使用默认值 41943039
分区 4 已设置为 Extended 类型,大小设为 13 GiB
 
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (14684160-41943039,默认为 14684160):
将使用默认值 14684160
Last 扇区, +扇区 or +size{K,M,G} (14684160-41943039,默认为 41943039):+4G
分区 5 已设置为 Linux 类型,大小设为 4 GiB
 
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 6
起始 扇区 (23074816-41943039,默认为 23074816):
将使用默认值 23074816
Last 扇区, +扇区 or +size{K,M,G} (23074816-41943039,默认为 41943039):+4G
分区 6 已设置为 Linux 类型,大小设为 4 GiB
 
命令(输入 m 获取帮助):p
磁盘 /dev/vdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xb90c96e4
   设备 Boot      Start         End      Blocks   Id  System
/dev/vdc1            2048     4196351     2097152   83  Linux
/dev/vdc2         4196352     8390655     2097152   83  Linux
/dev/vdc3         8390656    14682111     3145728   83  Linux
/dev/vdc4        14682112    41943039    13630464    5  Extended
/dev/vdc5        14684160    23072767     4194304   83  Linux
/dev/vdc6        23074816    31463423     4194304   83  Linux
 
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
 
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vdc             252:32   0   20G  0 disk
├─vdc1          252:33   0    2G  0 part
├─vdc2          252:34   0    2G  0 part
├─vdc3          252:35   0    3G  0 part
├─vdc4          252:36   0    1K  0 part
├─vdc5          252:37   0    4G  0 part
└─vdc6          252:38   0    4G  0 part

2、格式化交换分区

格式:mkswap 分区设备 //格式化交换分区

注意:若有多个交换分区设备,优先级越大,当内存不够时就先使用哪个分区的设备

步骤2:

bash 复制代码
[root@localhost ~]# mkswap /dev/vdc1      //格式化交换分区
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=5ffda770-30ab-45fe-b9a2-7c276241e759

[root@localhost ~]# blkid /dev/vdc1     //查看文件系统类型
/dev/vdc1: UUID="5ffda770-30ab-45fe-b9a2-7c276241e759" TYPE="swap"
[root@localhost ~]# swapon
NAME      TYPE      SIZE  USED PRIO    //PRIO数值越大,代表优先级越大
/dev/dm-1 partition   2G 56.5M   -1

3、启用/关闭交互分区

  • 格式:swapon 或 swapon -s //查看交换分区
  • 格式:swapon 分区设备 //启用交互分区
  • 格式:swapoff 分区设备 //停用交换分区
  • 格式:swapon -a //检测交换分区的书写(类似mount -a)

步骤3:

bash 复制代码
[root@localhost ~]# swapon /dev/vdc1   //启用交换分区
[root@localhost ~]# swapon     //查看交换空间组成的成员信息
NAME      TYPE      SIZE  USED PRIO
/dev/dm-1 partition   2G 56.5M   -1
/dev/vdc1 partition   2G    0B   -2
[root@localhost ~]# free -m    //显示内存和交换空间(m代表mb)
           total        used        free      shared  buff/cache   available
Mem:      991         689         72         5        229         115
Swap:      4095         56        4039
 
[root@localhost ~]# swapoff /dev/vdc1    //停用交换分区
[root@localhost ~]# swapon
NAME      TYPE      SIZE  USED PRIO
/dev/dm-1 partition   2G 56.1M   -1
[root@localhost ~]# free -m
           total        used        free      shared  buff/cache   available
Mem:      991         688          73           5         229         116

4、开机自启交换分区挂载

**步骤4:**修改/etc/fstab配置文件

注意:swapon -a专门检测/etc/fstab文件充当交换分区的设备

bash 复制代码
[root@localhost ~]# swapon
NAME      TYPE      SIZE  USED PRIO
/dev/dm-1 partition   2G 56.1M   -1

[root@localhost ~]# vim /etc/fstab
/dev/vdc1 swap swap defaults 0 0
[root@localhost ~]# swapoff /dev/vdc1
[root@localhost ~]# swapon
NAME      TYPE      SIZE  USED/ PRIO
/dev/dm-1 partition   2G 55.9M   -1
[root@localhost ~]# swapon -a      //检测交换分区的书写
[root@localhost ~]# swapon
NAME      TYPE      SIZE  USED PRIO
/dev/dm-1 partition   2G 55.9M   -1
/dev/vdc1 partition   2G    0B   -2

补充:逻辑卷/dev/centos/swap对应交换空间中的/dev/dm-1设备(逻辑卷充当了交换空间)

bash 复制代码
[root@localhost ~]# lvscan
  ACTIVE            '/dev/centos/swap' [2.00 GiB] inherit
  ACTIVE            '/dev/centos/root' [<17.00 GiB] inherit
 
[root@localhost ~]# swapon -s
文件名 类型 大小   已用   权限
/dev/dm-1      partition 2097148 58800 -1
/dev/vdc1      partition 2097148 0     -2
 
[root@localhost ~]# ls -l /dev/centos/swap
lrwxrwxrwx. 1 root root 7 3月  10 16:45 /dev/centos/swap -> ../dm-1

七、扩展Swap空间

利用文件方式创建Swap空间(生成较大的文件占用硬盘空间,并把占用空间提供给交换空间)

格式:dd if=源设备 of=目标设备 bs=块大小 count=块数 //记录读写数据

备注:dd if=数据的源头 of=生成的文件 bs=每次读写数据的大小 count=次数

  • /dev/zero设备:拥有无限的数据

注意:swapon支持文件

注意:dd命令一直读写数据,直到系统存储满才结束,of可以协助生成文件


案例2:利用文件方式制作交换空间(文件扩展)

1、创建Swap文件

步骤1:

bash 复制代码
[root@localhost ~]# dd if=/dev/zero of=/opt/sw.txt bs=1M count=2048
记录了2048+0 的读入
记录了2048+0 的写出
2147483648字节(2.1 GB)已复制,12.4918 秒,172 MB/秒
[root@localhost ~]# ls -lh /opt/sw.txt
-rw-r--r--. 1 root root 2.0G 3月  10 19:26 /opt/sw.txt

2、格式化交换文件(swap文件系统)

格式:mkswap [-f] 交换文件

选项:[-f] 标识强制执行(force)的意思(与RPM选项相同)

步骤2:

bash 复制代码
[root@localhost ~]# mkswap /opt/sw.txt     //格式化交换文件
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=64da8ee5-86d7-4be4-b05f-ad5e0901aaa8

[root@localhost ~]# swapon /opt/sw.txt    //启用交换文件
swapon: /opt/sw.txt:不安全的权限 0644,建议使用 0600。
[root@localhost ~]# swapon -s
文件名 类型 大小 已用 权限
/dev/dm-1         partition 2097148 69308 -1
/dev/vdc1          partition 2097148 0 -2
/opt/sw.txt                file 2097148 0 -3

**3、**开机自动挂载

bash 复制代码
#  vim /etc/fstab
/opt/1.txt swap swap defaults 0 0

小结:

本篇章节为 【第一阶段】ENGINEER-DAY2 的学习笔记,可以初步了解到 磁盘空间管理fdisk、parted工具、开机自动挂载、文件系统、交换空间。除此之外推荐参考相关学习网址:


Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解

相关推荐
PieroPc16 分钟前
Python 自动化 打开网站 填表登陆 例子
运维·python·自动化
Aileen_0v020 分钟前
【AI驱动的数据结构:包装类的艺术与科学】
linux·数据结构·人工智能·笔记·网络协议·tcp/ip·whisper
州周1 小时前
Ftp目录整个下载
linux·服务器·数据库
Jackey_Song_Odd1 小时前
Ubuntu 24.04.1 解决部分中文字符(门、径)显示错误的问题
linux·ubuntu
kaixin_learn_qt_ing1 小时前
Linux export命令
linux
余额不足121381 小时前
C语言基础十六:枚举、c语言中文件的读写操作
linux·c语言·算法
冷曦_sole1 小时前
linux-19 根文件系统(一)
linux·运维·服务器
AI大模型学徒1 小时前
Linux(二)_清理空间
linux·运维·服务器
云川之下1 小时前
【linux】 unshare -user -r /bin/bash命令详解
linux·bash·unshare
tntlbb2 小时前
Ubuntu20.4 VPN+Docker代理配置
运维·ubuntu·docker·容器