Linux加强篇-存储结构与管理硬盘(二)

目录

⛳️推荐

挂载硬件设备

添加硬盘设备


⛳️推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

挂载硬件设备

mount命令用于挂载文件系统,格式为“mount文件系统 挂载目录”一般不需要使用-t参数来指定文件系统的类型,Linux系统会自动进行判断。而mount中的-a参数则厉害了,它会在执行后自动检查/etc/fstab文件中有无被疏漏挂载的设备文件,如果有,则进行自动挂载操作。

mount命令中参数及作用

参数 作用
-a 挂载所有在/etc/fstab中定义的文件系统
-t 指定文件系统的类型

设备/dev/nvme0n1p2挂载到/backup目录,只需要在mount命令中填写设备与挂载目录参数就行,系统会自动判断要挂载文件的类型,命令如下:

[root@localhost dev]# fdisk -l

查看一下自己的磁盘名称

Disk /dev/nvme0n1: 20 GiB, 21474836480 bytes, 41943040 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

Disklabel type: dos

Disk identifier: 0xaddfec92

Device         Boot   Start      End  Sectors  Size Id Type

/dev/nvme0n1p1 *       2048   616447   614400  300M 83 Linux

/dev/nvme0n1p2       616448  4810751  4194304    2G 82 Linux swap / Solaris

/dev/nvme0n1p3      4810752 41943039 37132288 17.7G 83 Linux

挂载

[root@localhost dev]# mount /dev/nvme0n1p2 /backup

用UUID(Universally Unique Identifier,通用唯一识别码)进行挂载操作。UUID是一串用于标识每块独立硬盘的字符串,具有唯一性及稳定性,特别适合用来挂载网络设备

blkid命令用于显示设备的属性信息,语法格式为“blkid [设备名]”。使用blkid命令来查询设备UUID

[root@localhost dev]# blkid

/dev/nvme0n1: PTUUID="addfec92" PTTYPE="dos"

/dev/nvme0n1p1: UUID="b7107860-5e6f-4ff5-abb3-880ab7e6caca" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="addfec92-01"

/dev/nvme0n1p2: UUID="1396ecbf-4d87-4e65-898b-28048721d05e" TYPE="swap" PARTUUID="addfec92-02"

[root@localhost dev]# mount UUID=1396ecbf-4d87-4e65-898b-28048721d05e /backup

虽然按照上面的方法执行mount命令后就能立即使用文件系统了,但系统在重启后挂载就会失效,也就是说需要每次开机后都手动挂载一下,把挂载信息按照指定的填写格式“设备文件 挂载目录 格式类型 权限选项 是否备份 是否自检”写入到/etc/fstab文件中。这个文件中包含着挂载所需的诸多信息项目

用于挂载信息的指定填写格式中,各字段所表示的意义

字段 意义
设备文件 一般为设备的路径+设备名称,也可以写唯一识别码(UUID,Universally Unique Identifier)
挂载目录 指定要挂载到的目录,需在挂载前创建好
格式类型 指定文件系统的格式,比如Ext3、Ext4、XFS、SWAP、iso9660(此为光盘设备)等
权限选项 若设置为defaults,则默认权限为:rw, suid, dev, exec, auto, nouser, async
是否备份 若为1则开机后使用dump进行磁盘备份,为0则不备份
是否自检 若为1则开机后自动进行磁盘自检,为0则不自检

将文件系统为Ext4的硬件设备/dev/nvme0n2在开机后自动挂载到/backup目录上,并保持默认权限且无须开机自检,就需要在/etc/fstab文件中写入下面的信息,这样在系统重启后也会成功挂载。由于后面需要使用系统镜像制作Yum/DNF软件仓库,我们提前把光盘设备挂载到/media/cdrom目录中。光盘设备的文件系统格式是iso9660:

[root@localhost dev]# vim /etc/fstab

UUID=147464a6-27ee-477f-8dfd-0c157a0aabc7 /                       xfs     defaults        0 0

UUID=b7107860-5e6f-4ff5-abb3-880ab7e6caca /boot                   xfs     defaults        0 0

UUID=1396ecbf-4d87-4e65-898b-28048721d05e none                    swap    defaults        0 0

/dev/cdrom /media/cdrom iso9660 defaults 0 0

写入到/etc/fstab文件中的设备信息并不会立即生效,需要使用mount -a参数进行自动挂载:

[root@localhost dev]# mount -a

df命令用于查看已挂载的磁盘空间使用情况,语法格式为“df -h”用-h参数便捷地对存储容量进行“进位”操作

[root@localhost dev]# df -h

Filesystem      Size  Used Avail Use% Mounted on

devtmpfs        878M     0  878M   0% /dev

tmpfs           896M     0  896M   0% /dev/shm

tmpfs           896M  9.3M  886M   2% /run

tmpfs           896M     0  896M   0% /sys/fs/cgroup

/dev/nvme0n1p3   18G  7.1G   11G  41% /

/dev/sr0         11G   11G     0 100% /media/cdrom

/dev/nvme0n1p1  295M  193M  102M  66% /boot

tmpfs           179M   12K  179M   1% /run/user/42

tmpfs           179M     0  179M   0% /run/user/0

在fstab文件挂载信息中加上_netdev参数。加上后系统会等联网成功后再尝试挂载这块网络存储设备,从而避免了开机时间过长或失败的情况

[root@localhost dev]# vim /etc/fstab

UUID=147464a6-27ee-477f-8dfd-0c157a0aabc7 /                       xfs     defaults        0 0

UUID=b7107860-5e6f-4ff5-abb3-880ab7e6caca /boot                   xfs     defaults        0 0

UUID=1396ecbf-4d87-4e65-898b-28048721d05e none                    swap    defaults        0 0

/dev/cdrom /media/cdrom iso9660 defaults,_netdev 0 0

挂载文件系统的目的是为了使用硬件资源,而卸载文件系统则意味不再使用硬件的设备资源。

umount命令用于卸载设备或文件系统,语法格式为“umount [设备文件/挂载目录]”

[root@localhost dev]# umount /dev/nvme0n1p2

当前就处于设备所挂载的目录,系统会提示该设备繁忙,此时只需要退出到其他目录后再尝试一次

lsblk命令用于查看已挂载的磁盘的空间使用情况

[root@localhost dev]# lsblk

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

sr0          11:0    1 10.1G  0 rom  /media/cdrom

nvme0n1     259:0    0   20G  0 disk  

├─nvme0n1p1 259:1    0  300M  0 part /boot

├─nvme0n1p2 259:2    0    2G  0 part [SWAP]

└─nvme0n1p3 259:3    0 17.7G  0 part /

添加硬盘设备

首先把虚拟机系统关机,稍等几分钟会自动返回到虚拟机管理主界面,然后单击“编辑虚拟机设置”选项,在弹出的界面中单击“添加”按钮,新增一块硬件设备

image.png

选择虚拟硬盘的类型为SATA(用推荐的也可以,比SATA更好一些,踩坑了,必须和你原有的硬盘保持一致,我的事NVMe的,所以也要用这个),并单击“下一步”按钮

image.png

选中“创建新虚拟磁盘”单选按钮,再次单击“下一步”按钮

image.png

将“最大磁盘大小”设置为默认的20GB,单击“下一步”按钮

image.png

设置磁盘文件的文件名和保存位置(这里采用默认设置即可,无须修改),直接单击“完成”按钮

image.png

fdisk命令用于新建、修改及删除磁盘的分区表信息,语法格式为“fdisk磁盘名称”提供了集添加、删除、转换分区等功能于一身的“一站式分区服务”

fdisk命令中参数及作用

参数 作用
m 查看全部可用的参数
n 添加新的分区
d 删除某个分区信息
l 列出所有可用的分区类型
t 改变某个分区的类型
p 查看分区表信息
w 保存并退出
q 不保存直接退出

启动虚拟机,使用fdisk命令来尝试管理/dev/nvme0n2硬盘设备,在看到提示信息后输入参数p来查看硬盘设备内已有的分区信息,其中包括了硬盘的容量大小、扇区个数等信息:

[root@localhost ~]# lsblk

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

sr0          11:0    1 10.1G  0 rom  /media/cdrom

nvme0n1     259:0    0   20G  0 disk  

├─nvme0n1p1 259:1    0  300M  0 part /boot

├─nvme0n1p2 259:2    0    2G  0 part [SWAP]

└─nvme0n1p3 259:3    0 17.7G  0 part /

nvme0n2     259:4    0   20G  0 disk  

找到这个硬盘nvme0n2

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

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 0xac249528.

Command (m for help): p

Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 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

Disklabel type: dos

Disk identifier: 0xac249528

输入参数n尝试添加新的分区。系统会要求用户是选择继续输入参数p来创建主分区,还是输入参数e来创建扩展分区

Command (m for help): n

Partition type

  p   primary (0 primary, 0 extended, 4 free)

  e   extended (container for logical partitions)

Select (default p): p

创建一个主分区后,系统要求用户先输入主分区的编号,主分区的编号范围是1~4,因此这里输入默认的1,输入+2G即可创建出一个容量为2GB的硬盘分区。

Partition number (1-4, default 1): 1

First sector (2048-41943039, default 2048):  回车

Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): +2G  

Created a new partition 1 of type 'Linux' and of size 2 GiB.

再次使用参数p来查看硬盘设备中的分区信息,参数w后按回车键,完成分区信息写入

Command (m for help): p

Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 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

Disklabel type: dos

Disk identifier: 0xac249528

Device         Boot Start     End Sectors Size Id Type

/dev/nvme0n2p1       2048 4196351 4194304   2G 83 Linux

Command (m for help): w

The partition table has been altered.

Calling ioctl() to re-read partition table.

Syncing disks.

使用l参数查看一下磁盘编码都有哪些

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

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.

Command (m for help): l

0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        

1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-

2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-

使用file命令查看该文件的属性

[root@localhost ~]# file /dev/nvme0n2

/dev/nvme0n2: block special (259/4)

输入partprobe命令手动将分区信息同步到内核,如果执行没结果的话

Linux系统中用于格式化操作的命令是mkfs,如果实现有问题有分区表了,可以加-f强制执行

[root@localhost ~]# mkfs.xfs /dev/nvme0n2p1  

meta-data=/dev/nvme0n2p1         isize=512    agcount=4, agsize=131072 blks

        =                       sectsz=512   attr=2, projid32bit=1

        =                       crc=1        finobt=1, sparse=1, rmapbt=0

        =                       reflink=1

data     =                       bsize=4096   blocks=524288, 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@localhost ~]# mkdir /newfile

[root@localhost ~]# mount /dev/nvme0n2p1 /newfile

[root@localhost ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

devtmpfs        878M     0  878M   0% /dev

tmpfs           896M     0  896M   0% /dev/shm

tmpfs           896M  9.3M  886M   2% /run

tmpfs           896M     0  896M   0% /sys/fs/cgroup

/dev/nvme0n1p3   18G  7.1G   11G  41% /

/dev/sr0         11G   11G     0 100% /media/cdrom

/dev/nvme0n1p1  295M  193M  102M  66% /boot

tmpfs           179M   12K  179M   1% /run/user/42

tmpfs           179M     0  179M   0% /run/user/0

/dev/nvme0n2p1  2.0G   78M  2.0G   4% /newfile

du命令用查看分区或目录所占用的磁盘容量大小,语法格式为“du -sh目录名称”

Linux系统中可以使用du -sh /*命令来查看在Linux系统根目录下所有一级目录分别占用的空间大小,在1s之内就能找到哪个目录占用的空间最多:

[root@localhost ~]# du -sh /*

0 /a

60K /backup.acl

0 /bin

176M /boot

从某些目录中复制过来一批文件,然后查看这些文件总共占用了多大的容量:

[root@localhost ~]# cp -rf /etc/* /newfile

[root@localhost ~]# du -sh /newfile

31M /newfile

挂载永久有效,则需要把挂载的信息写入配置文件中(红色部分):

[root@localhost ~]# vim /etc/fstab

UUID=147464a6-27ee-477f-8dfd-0c157a0aabc7 /                       xfs     defaults        0 0

UUID=b7107860-5e6f-4ff5-abb3-880ab7e6caca /boot                   xfs     defaults        0 0

UUID=1396ecbf-4d87-4e65-898b-28048721d05e none                    swap    defaults        0 0

/dev/cdrom /media/cdrom iso9660 defaults 0 0

/dev/nvme0n2p1 /newfile xfs defaults 0 0

相关推荐

  1. Linux加强-用户身份

    2024-04-28 18:38:04       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-28 18:38:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-28 18:38:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-28 18:38:04       82 阅读
  4. Python语言-面向对象

    2024-04-28 18:38:04       91 阅读

热门阅读

  1. 简单仓库管理系统(增删改查功能)

    2024-04-28 18:38:04       21 阅读
  2. Shell教程基础

    2024-04-28 18:38:04       25 阅读
  3. CSS合集

    2024-04-28 18:38:04       39 阅读
  4. 外贸独立站注册域名应该注意的事项

    2024-04-28 18:38:04       34 阅读
  5. Typescript 学习笔记

    2024-04-28 18:38:04       33 阅读
  6. nginx负载均衡策略

    2024-04-28 18:38:04       36 阅读
  7. golang sync pool

    2024-04-28 18:38:04       24 阅读
  8. 陕西省工程系列高级职称评审申报指南

    2024-04-28 18:38:04       34 阅读
  9. Viewpage+TabLayout+Fragment常用功能实现

    2024-04-28 18:38:04       35 阅读
  10. sql将日期区间拆分为多行

    2024-04-28 18:38:04       30 阅读
  11. 代码随想录训练营25day-贪心算法3

    2024-04-28 18:38:04       35 阅读
  12. 常用的启发式算法及其应用

    2024-04-28 18:38:04       30 阅读
  13. 【NC16619】传球游戏

    2024-04-28 18:38:04       28 阅读