linux 存储管理 您所在的位置:网站首页 linux文件存储系统 linux 存储管理

linux 存储管理

2023-07-02 00:29| 来源: 网络整理| 查看: 265

1、简介

存储管理/磁盘管理是linux管理员的必备技能,这个不管是以后的云环境或者传统的行业,磁盘管理是必不可少的,也是相当重要的。

在Linux系统中一切都是文件,硬件设备也不例外。既然是文件,就必须有文件名称。系统内核中的dev设备管理器会自动把硬件名称规范起来,目的是让用户通过设备文件的名字可以猜出设备大致的属性以及分区信息等;这对于陌生的设备来说特别方便。另外,udev设备管理器的服务会一直以守护进程的形式运行并侦听内核发出的信号来管理/dev目录下的设备文件。Linux系统中常见的硬件设备的文件名称如:

常见的硬件设备及其文件名称硬件设备文件名称IDE设备/dev/hd[a-d]SCSI/SATA/U盘/dev/sd[a-p]光驱/dev/cdrom /dev/sr0

由于现在的IDE设备已经很少见了,所以一般的硬盘设备都会是以“/dev/sd”开头的。而一台主机上可以有多块硬盘,因此系统采用a~p来代表16块不同的硬盘(默认从a开始分配),而且硬盘的分区编号也很有讲究:

主分区或扩展分区的编号从1开始,到4结束;逻辑分区从编号5开始。 2、文件系统与数据资料

用户在硬件存储设备中执行的文件建立、写入、读取、修改、转存与控制等操作都是依靠文件系统来完成的。文件系统的作用是合理规划硬盘,以保证用户正常的使用需求。Linux系统支持数十种的文件系统,而最常见的文件系统如下所示。

Ext3:是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分之百地保证资料不会丢失。它会把整个磁盘的每个写入动作的细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断的部分,然后尝试进行修复。

Ext4:Ext3的改进版本,作为RHEL 6系统中的默认文件管理系统,它支持的存储容量高达1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外,Ext4文件系统能够批量分配block块,从而极大地提高了读写效率。

XFS:是一种高性能的日志文件系统,而且是RHEL 7中默认的文件管理系统,它的优势在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的日志功能只用花费极低的计算和存储性能。并且它最大可支持的存储容量为18EB,这几乎满足了所有需求。

就像拿到了一张未裁切的完整纸张,我们首先要进行裁切以方便使用,然后在裁切后的纸张上画格以便能书写工整。在拿到了一块新的硬盘存储设备后,也需要先分区,然后再格式化文件系统,最后才能挂载并正常使用。硬盘的分区操作取决于您的需求和硬盘大小;您也可以选择不进行分区,但是必须对硬盘进行格式化处理。

3、挂载硬件磁盘

我们在用惯了Windows系统后总觉得一切都是理所当然的,平时把U盘插入到电脑后也从来没有考虑过Windows系统做了哪些事情,才使得我们可以访问这个U盘的。接下来我们会逐一学习在Linux系统中挂载和卸载存储设备的方法,以便大家更好地了解Linux系统添加硬件设备的工作原理和流程。在拿到一块全新的硬盘存储设备后要先分区,然后格式化,最后才能挂载并正常使用。“分区”和“格式化”大家以前经常听到,但“挂载”又是什么呢?最简单、最贴切的解释—当用户需要使用硬盘设备或分区中的数据时,需要先将其与一个已存在的目录文件进行关联,而这个关联动作就是“挂载”。

3.1 命令:mount

描述:用于挂载文件系统

语法:mount [选项] 文件系统. 挂载目录

选项:

-a 挂载所有在/etc/fstab中定义的文件系统

-t 指定文件系统的类型

挂载是在使用硬件设备前所执行的最后一步操作。只需使用mount命令把硬盘设备或分区与一个目录文件进行关联,然后就能在这个目录中看到硬件设备中的数据了。对于比较新的Linux系统来讲,一般不需要使用-t参数来指定文件系统的类型,Linux系统会自动进行判断。而mount 中的-a参数则厉害了,它会在执行后自动检查**/etc/fstab**文件中有无疏漏被挂载的设备文件,如果有,则进行自动挂载操作。

例如,要把设备/dev/sdb2挂载到/backup目录,只需要在mount命令中填写设备与挂载目录参数就行,系统会自动去判断要挂载文件的类型,因此只需要执行下述命令即可:

[root@rhel8-4 ~]# mount /dev/sdb2 /backup

虽然按照上面的方法执行mount命令后就能立即使用文件系统了,但系统在重启后挂载就会失效,也就是说我们需要每次开机后都手动挂载一下。如果想让硬件设备和目录永久地进行自动关联,就必须把挂载信息按照指定的填写格式“设备文件 挂载目录 格式类型 权限选项 是否备份 是否自检” 写入到/etc/fstab文件中。这个文件中包含着挂载所需的诸多信息项目,一旦配置好之后就能一劳永逸了。

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

例如:想将文件系统为ext4的硬件设备/dev/sdb1在开机后自动挂载到/backup目录上,并保持默认权限且无需开机自检,就需要在/etc/fstab文件中写入下面的信息,这样在系统重启后也会成功挂载。

[root@rhel8-4 ~]# vim /etc/fstab /dev/vdb1 /backup ext4 defaults 0 0 #完成之后保存退出就可以了,开机会自动挂载磁盘 3.2 命令:umount

描述:用于卸载已经挂载的设备文件

语法:umount [挂载点/设备文件]

我们挂载文件系统的目的是为了使用硬件资源,而卸载文件系统就意味不再使用硬件的设备资源;相对应地,挂载操作就是把硬件设备与目录进行关联的动作,因此卸载操作只需要说明想要取消关联的设备文件或挂载目录的其中一项即可,一般不需要加其他额外的参数。

例如:卸载上面挂载的 dev/sdb1 磁盘

[root@rhel8-4 ~]# umount /dev/sdb1 4、虚拟机添加硬盘设备

需要注意:

1)添加设备虚拟机要处于关机状态

2)添加硬盘设备的类型选择SCSI. SATA

在虚拟机中模拟添加了硬盘设备后就应该能看到抽象成的硬盘设备文件了。按照前文讲解的udev服务命名规则,第二个被识别的SCSI设备应该会被保存为/dev/sdb,这个就是硬盘设备文件了。但在开始使用该硬盘之前还需要进行分区操作,例如从中取出一个4GB的分区设备以供后面的操作使用。

4.1 命令:fdisk

**描述:**用于管理磁盘分区

**语法:**fdisk [选项/磁盘名称]

选项:

-l 可以列出所有的分区,包括没有挂上的分区和usb设备

它提供了集添加、删除、转换分区等功能于一身的“一站式分区服务”。不过与前面讲解的直接写到命令后面的参数不同,这条命令的参数是交互式的,因此在管理硬盘设备时特别方便,可以根据需求动态调整。

参数:

参数作用m查看全部可用的参数n添加新的分区d删除某个分区信息l列出所有可用的分区类型t改变某个分区的类型p查看分区表信息w保存并退出q不保存直接退出fdisk命令a调整磁盘的启动分区u切换所显示分区的大小单位 新建分区

1) 我们首先使用fdisk -l 命令来查看通过虚拟机新增的硬件设备在系统中有没有添加成功,在使用fdisk尝试管理/dev/sdb硬盘设备。在看到提示信息后输入参数p来查看硬盘设备内已有的分区信息,其中包括了硬盘的容量大小、扇区个数等信息:

[root@rhel8-4 ~]# fdisk -l Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 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: 0xa7cc9303 Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 2099199 2097152 1G 83 Linux /dev/sda2 2099200 20971519 18872320 9G 8e Linux LVM Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 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

使用fdisk尝试管理/dev/sdb硬盘设备

[root@rhel8-4 ~]# fdisk /dev/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 0x7cd67ed8. Command (m for help): p #输入参数p来查看硬盘设备内已有的分区信息,其中包括了硬盘的容量大小、扇区个数等信息: Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 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: 0x7cd67ed8 Command (m for help):

**2)**输入参数n尝试添加新的分区。系统会要求您是选择继续输入参数p来创建主分区,还是输入参数e来创建扩展分区。这里输入参数p来创建一个主分区:

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

**3)**在确认创建一个主分区后,系统要求您先输入主分区的编号。我们在前文得知,主分区的编号范围是1~4,因此这里输入默认的1就可以了。接下来系统会提示定义起始的扇区位置,这不需要改动,我们敲击回车键保留默认设置即可,系统会自动计算出最靠前的空闲扇区的位置。最后,系统会要求定义分区的结束扇区位置,这其实就是要去定义整个分区的大小是多少。我们不用去计算扇区的个数,只需要输入+4G即可创建出一个容量为4GB的硬盘分区。

Partition number (1-4, default 1): First sector (2048-20971519, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519): +4G Created a new partition 1 of type 'Linux' and of size 4 GiB.

**4)**再次使用参数p来查看硬盘设备中的分区信息。果然就能看到一个名称为/dev/sdb1、起始扇区位置为2048、结束扇区位置为4196351的主分区了。这时候千万不要直接关闭窗口,而应该敲击参数w后回车,这样分区信息才是真正的写入成功啦。

Command (m for help): p Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 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: 0x7cd67ed8 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 8390655 8388608 4G 83 Linux Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks. [root@rhel8-4 ~]#

**5)**在上述步骤执行完毕之后,Linux系统会自动把这个硬盘主分区抽象成/dev/sdb1设备文件。我们可以使用file命令查看该文件的属性,但是有些时候系统并没有自动把分区信息同步给Linux内核,而且这种情况似乎还比较常见(但不能算作是严重的bug)。我们可以输入partprobe命令手动将分区信息同步到内核,而且一般推荐连续两次执行该命令,效果会更好。如果使用这个命令都无法解决问题,那么就重启计算机吧,这个杀手锏百试百灵,一定会有用的。

[root@rhel8-4 ~]# file /dev/sdb1 /dev/sdb1: block special (8/17) [root@rhel8-4 ~]# 格式化分区

如果硬件存储设备没有进行格式化,则Linux系统无法得知怎么在其上写入数据。因此,在对存储设备进行分区后还需要进行格式化操作。在Linux系统中用于格式化操作的命令是mkfs。这条命令很有意思,因为在Shell终端中输入mkfs名后再敲击两下用于补齐命令的Tab键,会有如下所示,这个mkfs命令很贴心地把常用的文件系统名称用后缀的方式保存成了多个命令文件,用起来也非常简单—mkfs.文件类型名称。例如要格式分区为ext4的文件系统,则命令应为mkfs.ext4 /dev/sdb1。

[root@rhel8-4 ~]# mkfs.ext4 /dev/sdb1 mke2fs 1.44.3 (10-July-2018) Creating filesystem with 1048576 4k blocks and 262144 inodes Filesystem UUID: cc445c0c-b2a3-4143-a35e-b463e6ef34cf Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done 手动挂载分区

到这里终于完成了存储设备的分区和格式化操作,接下来就是要来挂载并使用存储设备了。与之相关的步骤也非常简单:首先是创建一个用于挂载设备的挂载点目录;然后使用mount命令将存储设备与挂载点进行关联;最后使用df -h命令来查看挂载状态和硬盘使用量信息

[root@rhel8-4 ~]# mkdir /data [root@rhel8-4 ~]# mount /dev/sdb1 /data/ [root@rhel8-4 ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/rhel-root xfs 8.0G 1.3G 6.8G 16% / /dev/sda1 xfs 1014M 163M 852M 17% /boot /dev/sdb1 ext4 3.9G 16M 3.7G 1% /data [root@rhel8-4 ~]# 自动挂载分区

前面在讲解mount命令时提到,使用mount命令挂载的设备文件会在系统下一次重启的时候失效。如果想让这个设备文件的挂载永久有效,则需要把挂载的信息写入到配置文件中:

[root@rhel8-4 ~]# vi /etc/fstab #使用vi编辑/etc/fatab文件新增内容 [root@rhel8-4 ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Tue Sep 15 03:49:19 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. # # After editing this file, run 'systemctl daemon-reload' to update systemd # units generated from this file. # /dev/mapper/rhel-root / xfs defaults 0 0 UUID=83dd38e9-b3f1-4d9f-b0d1-1cf5ab625752 /boot xfs defaults 0 0 /dev/mapper/rhel-swap swap swap defaults 0 0 /dev/sdb1 /data ext4 defaults 0 0 4.2 命令:df

**描述:**显示目前在 Linux 系统上的文件系统磁盘使用情况统计

**语法:**df [选项] [file]

选项:

-h 人性化显示

-T 显示文件系统的类型

[root@rhel8-4 ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/rhel-root xfs 8.0G 1.3G 6.8G 16% / /dev/sda1 xfs 1014M 163M 852M 17% /boot /dev/sdb1 ext4 3.9G 16M 3.7G 1% /data 5、交换分区

简介:SWAP(交换)分区是一种通过在硬盘中预先划分一定的空间,然后将把内存中暂时不常用的数据临时存放到硬盘中,以便腾出物理内存空间让更活跃的程序服务来使用的技术,其设计目的是为了解决真实物理内存不足的问题。但由于交换分区毕竟是通过硬盘设备读写数据的,速度肯定要比物理内存慢,所以只有当真实的物理内存耗尽后才会调用交换分区的资源。

交换分区的创建过程与前文讲到的挂载并使用存储设备的过程非常相似。在对/dev/sdb存储设备进行分区操作前,有必要先说一下交换分区的划分建议:在生产环境中,交换分区的大小一般为真实物理内存的1.5~2倍,为了让大家更明显地感受交换分区空间的变化,这里取出一个大小为5GB的主分区作为交换分区资源。在分区创建完毕后保存并退出即可:

[root@rhel8-4 ~]# fdisk /dev/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. Command (m for help): n Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): p Partition number (2-4, default 2): First sector (8390656-20971519, default 8390656): Last sector, +sectors or +size{K,M,G,T,P} (8390656-20971519, default 20971519): +2G Created a new partition 2 of type 'Linux' and of size 2 GiB. Command (m for help): p Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 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: 0x7cd67ed8 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 8390655 8388608 4G 83 Linux /dev/sdb2 8390656 12584959 4194304 2G 83 Linux Command (m for help): w The partition table has been altered. Syncing disks.

使用SWAP分区专用的格式化命令mkswap,对新建的主分区进行格式化操作:

[root@rhel8-4 ~]# mkswap /dev/sdb2 Setting up swapspace version 1, size = 2 GiB (2147479552 bytes) no label, UUID=0bf996f6-27f0-4667-976c-f711123a7727

使用swapon命令把准备好的SWAP分区设备正式挂载到系统中。我们可以使用free -m命令查看交换分区的大小变化(由1023MB增加到 3071MB):

[root@localhost ~]# free -m total used free shared buff/cache available Mem: 1806 248 1269 8 287 1393 Swap: 1023 0 1023 [root@localhost ~]# swapon /dev/sdb2 [root@localhost ~]# free -m total used free shared buff/cache available Mem: 1806 253 1265 8 287 1388 Swap: 3071 0 3071 [root@localhost ~]#

为了能够让新的交换分区设备在重启后依然生效,需要按照下面的格式将相关信息写入到配置文件中,并记得保存:

[root@rhel8-4 ~]# vi /etc/fstab #使用vi编辑/etc/fatab文件新增内容 [root@rhel8-4 ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Tue Sep 15 03:49:19 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. # # After editing this file, run 'systemctl daemon-reload' to update systemd # units generated from this file. # /dev/mapper/rhel-root / xfs defaults 0 0 UUID=83dd38e9-b3f1-4d9f-b0d1-1cf5ab625752 /boot xfs defaults 0 0 /dev/mapper/rhel-swap swap swap defaults 0 0 /dev/sdb1 /data ext4 defaults 0 0 /dev/sdb2 swap swap defaults 0 0


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有