Linux磁盘分区、格式化、挂载

一、前期准备

测试环境:VMware Workstation / centos8

1)增加一块磁盘

2)查看新增磁盘(lsblk),发现没找到新增的磁盘

3)解决查不到新增磁盘问题

重新扫描SCSI总线添加设备,

$ echo "- - -" > /sys/class/scsi_host/host0/scan
$ echo "- - -" > /sys/class/scsi_host/host1/scan
$ echo "- - -" > /sys/class/scsi_host/host2/scan

上面的host0/host1/host2主要还得看机器,可能数量会有不一样。

刷完就可以看到新增的那块磁盘了

二、分区

1)简介

  • 在 Linux 中规定,每一个硬盘设备最多能有4个主分区(其中包含扩展分区)构成,任何一个扩展分区都要占用一个主分区号码,也就是在一个硬盘中,主分区和扩展分区一共最多是 4个
  • 主分区可以马上被使用但不能再分区。扩展分区必须再进行分区后才能使用,也就是说它必须还要进行二次分区。那么由扩充分区再分下去的是就是逻辑分区(logical partion),况且逻辑分区没有数量上限制
  • Linux 规定了主分区(或者扩展分区)占用 1 至 16 号码中的前 4 个号码。以第一个 IDE 硬盘为例说明,主分区(或者扩展分区)占用了 sda1、sda2、sda3、sda4,而逻辑分区占用了 sda5 到 sda16 等 12 个号码。
  • 一个扇区是512字节,其中有64个字节存储的是分区表,一条分区信息占16个字节,因此磁盘最多只能分四个分区,这时候就有了扩展分区。
  • 扩展分区可以被继续划分为多个逻辑分区,逻辑分区是可以进行格式化的。扩展分区把逻辑分区的分区信息在扩展分区中找了一个位置给存起来。假如说p4扩展分区划分了三个逻辑分区那么第1个逻辑分区命名为sda5、第2个为sda6、第3个sda7,以此类推。一个磁盘被分为四个分区,第四个分区被设置为扩展分区,第一个逻辑分区为sda5。总结一下,就是不论磁盘有几个主分区,第一个逻辑分区一定是从sda5开始。

2)fdisk 对磁盘进行分区

[root@centos8-nat-168-182-152 ~]# fdisk /dev/sdb //对sdb磁盘进行分区

Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x72914843.

Command (m for help): m                        //输出帮助信息

Help:

  DOS (MBR)
   a   toggle a bootable flag                 //设置启动分区
   b   edit nested BSD disklabel              //编辑分区标签
   c   toggle the dos compatibility flag      //flag

  Generic
   d   delete a partition                    //删除一个分区
   F   list free unpartitioned space         //列出分区类型
   l   list known partition types            //输出帮助信息
   n   add a new partition                   //建立一个新的分区
   p   print the partition table             ///打印分区表
   t   change a partition type               //改变分区的ID
   v   verify the partition table            //检查验证分区表
   i   print information about a partition   

  Misc
   m   print this menu
   u   change display/entry units
   x   extra functionality (experts only)

  Script
   I   load disk layout from sfdisk script file
   O   dump disk layout to sfdisk script file

  Save & Exit
   w   write table to disk and exit
   q   quit without saving changes

  Create a new label
   g   create a new empty GPT partition table
   G   create a new empty SGI (IRIX) partition table
   o   create a new empty DOS partition table
   s   create a new empty Sun partition table


Command (m for help): n                  
Partition type 
   p   primary (0 primary, 0 extended, 4 free)     //p是主分区
   e   extended (container for logical partitions) //e是扩展分区
Select (default p): p
Partition number (1-4, default 1): 1               //定义分区数量   --主分区最多只能有四个
First sector (2048-16777215, default 2048):        //表示起始扇区;默认从第2048块扇区开始是因为,由于EFI的兴起,要给EFI 代码留磁盘最开始的1M空间.
Last sector, +sectors or +size{K,M,G,T,P} (2048-16777215, default 16777215): +1024M //此处可直接输入柱面号码,但需要你自己计算分区大小,也可直接用+..M(如上),让系统自己分配柱面号码。

Created a new partition 1 of type 'Linux' and of size 1 GiB.  //这里就为此分区分配了1G的空间

Command (m for help): w  //保存刚才的配置信息。
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

查看(fdisk -l或者lsblk)

注意

上面的分区只适用于磁盘小于2T,大于2T需要用parted来分区

三、磁盘格式化

格式化:指将分区格式化成不同的文件系统。

文件系统:指操作系统用于明确存储设备或分区上的文件的方法和数据结构:即在存储设备上组织文件的方法。

注意

但是当你在格式化的时候,有可能找不到这个分区。这是因为Linux没有把分区信息读到内核来,我们需要输入partprobe这个命令,来使我们内核重读一下我们的分区信息。

格式化命令

mkfs -t ext4 /dev/sdb1或 mkfs.ext4 /dev/sdb1 两者命令皆可

Linux下的文件类型有ext2、ext3、ext4、xfs等等,我们可以使用命令:mkfs. 然后用按TAB键来查看都有哪些文件类型。

[root@centos8-nat-168-182-152 ~]# mkfs.ext4 /dev/sdb1 
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: 1463fdcf-7360-4eb2-a671-d07262266121
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

检查,格式化后就有UUID

[root@centos8-nat-168-182-152 ~]# lsblk -f
NAME        FSTYPE      LABEL                      UUID                                   MOUNTPOINT
sda                                                                                       
├─sda1      xfs                                    58a9a0c3-f34d-41f7-a3e8-40e4801d8615   /boot
└─sda2      LVM2_member                            tA0cp2-gAml-dmLs-i3Rh-GHqT-iNDT-fa3PBt 
  ├─cl-root xfs                                    9cbc11d5-0d6b-4c1a-8511-fba93dada487   /
  └─cl-swap swap                                   f0029228-fb9b-4131-ae57-f0ba1282a0c6   [SWAP]
sdb                                                                                       
└─sdb1      ext4                                   1463fdcf-7360-4eb2-a671-d07262266121   
sr0         iso9660     CentOS-8-4-2105-x86_64-dvd 2021-06-01-20-39-18-00                 

四、挂载

1)临时挂载

将指定的一个目录作为挂载点目录时,如果挂载点的目录有文件,那么文件会被隐藏。因此当我们需要挂载目录时,最好新建一个空文件夹来作为挂在点目录。(重启后失效

创建挂载目录

$ mkdir -p /opt/data1

挂载

$ mount /dev/sdb1 /opt/data1

取消挂载,下面两条命令均可

$ umount /dev/sdb1 # 磁盘名
$ umount /opt/data1 # 挂载目录名

2)永久挂载

使用永久挂载,就意味着它开机会自动挂载(编辑 /etc/fstab 文件)

命令:blkid:查看对应分区的UUID(编号)。UUID唯一标识每一个分区,防止错误的挂载。除此之外,还会显示分区的类型。(建议先复制一下sdb1的UUID,一会儿会用到)

[root@centos8-nat-168-182-152 ~]# blkid /dev/sdb1 
/dev/sdb1: UUID="1463fdcf-7360-4eb2-a671-d07262266121" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="72914843-01"

使用vi编辑 /etc/fstab在命令行直接输入vim /etc/fstab 就可以编辑,实现开机自动挂载。

$ echo 'UUID="1463fdcf-7360-4eb2-a671-d07262266121"  /opt/data1  ext4  defaults 0  0' >> /etc/fstab

/etc/fstab该文件中存在六列参数:

第一列:设备文件或UUID或label(三者的区别看下面)
第二列:设备的挂载点(空目录)
第三列:该分区文件系统的格式(可以使用特殊的参数auto,自动识别分区的分区格式)
第四列:文件系统的参数,设置格式的选项
第五列:dump备份的设置(0表示不进行dump备份,1代表每天进行dump备份,2代表不定日期的进行dump备份)
第六列:磁盘检查设置(其实是一个检查顺序,0代表不检查,1代表第一个检查,2后续.一般根目录是1,数字相同则同时检查)

设备文件、UUID、label作为标识的不同:

  1. 使用设备文件名会在当前生效,可能在系统重启之后会出现问题
  2. label在系统重启之后也会生效,但是要实时注意该设备的label
  3. UUID是分区的唯一标识。(推荐)

可以查看sdb1分区的UUID和label(详细信息) ,发现sdb1没有设置label,但是可以查看/dev/sr0的lable(/dev/sr0是光驱的设备名)

最后验证:

由于内核还没有读取这个命令,使用mount -a 这个命令来让内核读取这个文件(通过mount -a 读取/etc/fstab 重新挂载)

$ mount -a

posted @ 2022-06-27 21:46  大数据老司机  阅读(1641)  评论(0编辑  收藏  举报