挂载分区的经典案例

警告
本文最后更新于 2023-10-24,文中内容可能已过时。

挂载分区的经典案例

将来工作中,服务器中的空间不够用了,就可以这么操作,非常有用的操作。

虚拟机增加硬盘

在【虚拟机】菜单中,选择【设置】,然后设备列表里添加硬盘,然后一路【下一步】,中间只有选择磁盘大小的地方需要修改,至到完成。然后重启系统(才能识别)!重启之后,执行 lsblk,可以看到新的硬盘,名称是 sdb,符合前面提到的命名规律,大小正好是 1G。

sdb 这个硬盘在/dev/目录下会有一个对应的文件,因为/dev是设备管理器,被识别的设备在这个文件夹下都会有一个对应的文件:

可以看到 dev 下确实有这个硬盘文件,

分区

fdisk

fdisk 是一个创建和维护分区表的程序,它兼容 DOS 类型的分区表、BSD 或者 SUN 类型的磁盘列表。需要 root 权限。不仅能看磁盘的分区情况,还可以操作磁盘的分区。高级!

1
fdisk [必要参数][选择参数]

必要参数:

  • -l:列出素所有分区表

  • -u:与 -l 搭配使用,显示分区数目,一般都是这俩一起用

选择参数:

  • -s <分区编号> 指定分区

  • -v:版本信息

菜单操作说明

  • m:显示菜单和帮助信息

  • a:活动分区标记/引导分区

  • d:删除分区

  • l:显示分区类型

  • n:新建分区 常用

  • p:显示分区信息

  • q:退出不保存

  • t:设置分区号

  • v:进行分区检查

  • w:保存修改 最后必须要进行这个操作才能把操作同步到磁盘中

  • x:扩展应用,高级功能

简单实践:

fdisk -lu

sdb 还未分区

fdisk 命令后面跟磁盘对应的设备文件,表示要对磁盘进行操作

我们现在使用命令 fdisk 开始对硬盘进行分区,就只分一个区,直接输入这三步即可

注意:一定要进行 w 操作,不然用户对磁盘的操作不会同步到磁盘之中

然后查看,输入lsblk

fdisk

都可以看到新分区。

上面的例子是对一块新加的磁盘进行分区操作,其实,有时候,我们也需要对已经存在的磁盘比如 sda 进行分区操作,这种情况一般出现在 Linux 虚拟机内存不够,我们通过在 Vmware Work Station 中将虚拟机内存调大之后需要进行的操作,具体的步骤也是差不多的,也是需要通过 fdisk 工具新建分区,

先输入fdisk /dev/sda,然后顺序输入 m、n、p、默认回车、默认回车、w,

再次输入fdisk -l 命令查看分区,发现多了 一个新的 分区。再次输入 lsblk 命令查看新加的硬盘分区状况。发现新加的分区 在 lsblk 命令下不显示,此时你可以通过 partprobe /dev/sda 来刷新分区信息,或者直接重启虚拟机。

具体请看动态扩容小节。

格式化

格式化其实就是初始化文件系统的意思,这里不再赘述。

lsblk -f 查看的时候,没有看到 sdb1 的文件系统类型和 UUID,说明还没有格式化

mkfs make file system

mkfs(英文全拼:make file system)命令用于在特定的分区上建立 linux 文件系统。

1
mkfs [-V] [-t fstype] [fs-options] filesys [blocks]

参数:

filesys 既可以是设备名,(如:/dev/hda1/dev/sdb2),也可以是文件系统的挂载点(如://usr/home)。

  • -V :详细显示模式

  • -t :给定档案系统的型式,Linux 的预设值为 ext2

  • -c :在制做档案系统前,检查该 partition 是否有坏轨

  • -l bad_blocks_file :将有坏轨的 block 资料加到 bad_blocks_file 里面

  • block :给定 block 的大小

常用参数也就是 -t

我们用mkfs来格式化

mkfs -t ext4 /dev/sdb1

有时候格式化不成功,可以强制格式化

mkfs -t ext4 -f /dev/sdb1

再次查看 lsblf -f,即可看到文件系统类型和 UUID,还未挂载,没有挂载点

挂载

挂在之后,sdb1 才可以在df命令中看到

mount

在 Unix 系统中可访问的所有文件都被安排在一个大树中,即文件层次结构,其根基是/mount命令的作用是将某个设备上的文件系统连接到大文件树上。反之,umount命令将把它再次分离出来

Linux mount命令是经常会使用到的命令,它用于挂载 Linux 系统外的文件。

常用参数:

-a:将 /etc/fstab 中定义的所有档案系统挂上。

-t:指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。

常用例子:

/dev/hda1 挂在 /mnt 之下。

mount /dev/hda1 /mnt

一个经常用的场景,就是mount挂载 iso

mount -o loop /home/tecmint/Fedora-18-i386-DVD.iso /mnt/iso

umount

Linux umount(英文全拼:unmount)命令用于卸除文件系统。

umount可卸除目前挂在 Linux 目录中的文件系统。

常用例子:

通过设备名卸载  

umount -v /dev/sda1          

通过挂载点卸载

umount -v /mnt/mymount/        

记住,退到挂载分区外的目录下,再执行卸载命令,不然就会提示

因为你在这个目录中,就相当于这个目录正在被使用,肯定是无法被卸载的,在外面就可以:

我有个问题:卸载根分区会怎么样?umount / 感觉不可以,因为你没法跑到根目录以外去执行umount

哈哈哈哈。果然不行。


创建文件夹,然后把设备挂载到此目录下

这个时候再查看 lsblk -f

可以看到挂载点,

查看df

也可以查看到挂载的 /dev/sdb1 分区


挂载成功之后,往分区中写入了文件,这个文件就存在于硬盘中了,取消挂载之后,这个文件也还是在磁盘分区中,再把这个分区挂载到别的目录下,别的目录也可以直接读取磁盘分区中的文件,除非你把磁盘分区格式化了

但是注意,用命令行挂载,重启之后,挂载失效

设置可以永久挂载或者叫自动挂载

直接修改/etc/fstab

文件fstab包含了你的电脑上的存储设备及其文件系统的信息。它是决定一个硬盘(分区)被怎样使用或者说整合到整个系统中的唯一文件。

这个文件的全路径是/etc/fstab。它只是一个文本文件,你能够用你喜欢的编辑器打开它,但是必须是 root 用户才能编辑它。同时fsckmountumount的等命令都利用该程序。

具体来说:用fstab可以自动挂载各种文件系统格式的硬盘、分区、可移动设备和远程设备等。

打开/etc/fstab

格式如下:

1
fs_spec fs_file fs_type fs_options fs_dump fs_pass
  • fs_spec:设备参数,你可以用 UUID 指定,也可以直接写分区对应的设备文件路径 比如/dev/sdb1这里也可以挂载远程文件系统,这里就不仔细研究了。

  • fs_file:挂载点

  • fs_type:文件系统类型

  • fs_options:指定加载该设备的文件系统是需要使用的特定参数选项,多个参数是由逗号分隔开来。这个参数一般对于的硬盘类型不需要设置,写defaults即可

  • fs_dump:该选项被dump命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为 0,此处为 1 的话,表示要将整个fs_spec里的内容备份。现在很少用到dump这个工具,在这里一般选 0。

  • fs_pass:该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序。若该文件系统无需在启动时扫描则设置该字段为 0。载点为 / 的(即根分区),必须在这里填写 1,其他的都不能填写 1。如果有分区填写大于 1 的话,则在检查完根分区后,接着按填写的数字从小到大依次检查下去。同数字的同时检查。比如第一和第二个分区填写 2,第三和第四个分区填写 3,则系统在检查完根分区后,接着同时检查第一和第二个分区,然后再同时检查第三和第四个分区。

我们直接添加一行

添加完成后执行mount –a即刻生效,注意只在当前session中生效

重启之后发现已经自动挂载了。

动态扩容

有时候我们的系统磁盘不够了,我们需要增加磁盘空间,常规的做法是,额外加一块硬盘,然后创建分区,格式化之后挂载到指定的目录下面,然后我们就可以将比较占空间的文件,比如数据库应用的数据文件移动到此目录下,但是这样的话,服务器上的应用可能就需要停机,然后复制文件或者修改配置(比如数据文件的位置),对于不能接收服务暂停的场景,这样做法就很不方便,此时,我们可以考虑磁盘的动态扩容。

关于动态扩容,请查看文档《Linux 动态扩容》

0%