目录

一、介绍

二、一些概念

三、磁盘分区

1、磁盘与分区

2、创建分区

四、磁盘格式化

五、linux文件系统

六、磁盘挂载

七、磁盘卸载

八、swap分区

1、介绍

2、新建磁盘分区作为swap分区

3、用文件作为swap分区

九、lvm逻辑卷管理

十、磁盘相关命令

1、fdisk

2、mount

3、df与du

4、mkfs.ext4

5、lsblk

十一、/etc/fstab

十二、Linux磁盘名称

1、/dev/hda, /dev/hdb, /dev/sda, /dev/sdb, 他们之间有什么区别?

十三、实践


一、介绍

一直对磁盘分区的概念没有太深入的理解,觉得有必要单独梳理下。

二、一些概念

对于物理机和虚拟机有各自磁盘的概念,比如物理机上是真实的磁盘信息,什么叫真实?就是没有进行虚拟化的。

虚拟机上也是要虚拟化磁盘的,对于用户来说就像一台物理机一样。但是既然是虚拟机,那么磁盘可能是虚拟化后的,一般会有固定的名字,比如经过kvm虚拟化技术虚拟出来的磁盘,名称是vda,vdb等,表示虚拟磁盘。但是也有例外的,见过百度云那边经过kvm虚拟化出来的虚拟机,但是分区名称却叫sdb,而sdb一般是物理机上真实的磁盘分区名称

一般概念上:vda,vdb叫虚拟磁盘,或者直接说磁盘也行,在linux上的设备文件为/dev/vda,/dev/vdb。

三、磁盘分区

1、磁盘与分区

以上说的/dev/vdb是磁盘,磁盘需要再进行分区。比如分成/dev/vdb1,/dev/vdb2,/dev/vdb3等,每个分区可以指定大小。

如下可以看到/dev/vdb被分成了/dev/vdb1和/dev/vdb2两个分区。

2、创建分区

我们可以再在/dev/vdb磁盘上加个分区吗?当然是可以的。

在vdb上再添加创建vdb3分区:

第一步:编辑分区。执行命令fdisk /dev/vdb该命令意思是为/dev/vdb磁盘进行分区或者说叫编辑/dev/vdb磁盘。

第二步:新建分区。输入n,回车,n(new的缩写)表示新建分区

第三步:分区类型。继续根据提示输入p(默认就是p),表示分区类型为主分区(需要看下主分区与扩展分区的区别)。

第四步:分区号。Partition number输入3

第五步:柱面。起始的柱面选择(应该是磁盘的概念,研究下),直接enter选择默认

第六步:设置磁盘大小,大小用+size(K,M,G),如+100G,表示分区大小设置为100G,+1G表示分区大小是1G

第七步:保存分区并退出:wq 

以下案例是创建/dev/vdb1分区。由于是第一次创建分区,因此Partition number默认是第一块

 

实践:

四、磁盘格式化

第三步创建好了分区,但是分区需要格式化才能挂载使用

linux提供了几种不同的格式化方式,可mk,tab补齐查看

格式化方式不同在于铺文件系统时的索引和链接划分不同

如本例选择mkfs.ext2格式化方式

 如果选择mkfs.ext4格式化方式,则输入命令:mkfs.ext4 /dev/vdb3

如果是xfs文件系统,则mkfs.xfs  /dev/vdb3

ext2,ext4,xfs等文件系统请看第五点。

验证格式化是否成功:

通过 df -T命令查看(注意,要先把分区挂载到目录,否则df -T命令看不到):

 

 

五、linux文件系统

centos7.0开始默认文件系统是xfs,centos6是ext4,centos5是ext3。

ext4是第四代扩展文件系统(英语:Fourth EXtended filesystem,缩写为ext4)是linux系统下的日志文件系统,是ext3文件系统的后继版本。

xfs是一种非常优秀的日志文件系统,它是SGI公司设计的。xfs被称为业界最先进的、最具可升级性的文件系统技术。

xfs在很多方面确实做的比ext4好,ext4受限制于磁盘结构和兼容问题,可扩展性和scalability确实不如xfs,另外xfs经过很多年发展,各种锁的细化做的也比较好

六、磁盘挂载

第四点对分区进行了格式化,那么我们要使用这个分区了!

怎么使用呢?当然是挂载到我们的目录使用啦!

所以步骤是:

第一步:创建目录,如mkdir -p /data

第二步:挂载。将/dev/vdb3分区挂载到/data上。即mount /dev/vdb3 /data

七、磁盘卸载

第六点讲了挂载,对应的还有卸载的命令。比如卸载/data,对应的命令为:umount /data

我们可能会担心,数据丢失问题,这个其实不会。

因为卸载只是解除了/data目录与/dev/vdb3的绑定关系,之前的数据仍然存在/dev/vdb3分区中,并没有丢掉,所以我们只要重新挂载一下就行了。

第一步:卸载/data。umount /data

第二步:创建新的挂载的目录。如mkdir -p /weiwei。

第三步:将/dev/vdb3挂载到/weiwei下。mount /dev/vdb3 /weiwei

我们进入到/weiwei会发现,原来/data中的数据文件都在/weiwei下了

八、swap分区

1、介绍

Swap分区在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用。

free -m:查看内存的命令可顺便查看是否有swap分区。wap空间为0则代表系统并没有开启swap分区。

swap分区创建有两种方式:

方式一:新建磁盘分区作为swap分区。和创建普通的磁盘分区类似。

方式二:用文件作为swap分区 (操作更简单)
注意:两种方式都必须用root权限,操作过程应该小心谨慎。

2、新建磁盘分区作为swap分区

  • swapoff -a #停止所有的swap分区。如果我们需要增加 Swap 分区,则先关闭 Swap 分区
  • fdisk /dev/sdb:编辑磁盘
  • 创建分区,这个过程和新建普通分区是一样的(这块待验证,也有是用t命令而非n)。
  • mkswap /dev/sdb2 #格式化swap分区,这里的sdb2要看您加完后p命令显示的实际分区设备名
  • swapon /dev/sdb2 #启动新的swap分区
  • 配置系统启动时能自动启用这个交换分区。编辑/etc/fstab,加入:/dev/sdb2 swap swap defaults 0 0

3、用文件作为swap分区

1.创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的count等于想要的块的数量(bs*count=文件大小)。

  • 命令:dd if=/dev/zero of=/root/swapfile bs=1M count=1024

2.格式化为交换分区文件:

  • mkswap /root/swapfile #建立swap的文件系统

3.启用交换分区文件:

  • swapon /root/swapfile #启用swap文件

4.使系统开机时自启用,在文件/etc/fstab中添加一行:

  • /root/swapfile swap swap defaults 0 0

九、lvm逻辑卷管理

以上说的/dev/vdb是磁盘,/dev/vdb1,/dev/vdb2是表示分区,都是物理概念。

LVM是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 (volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系 统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。

其实我们很容易联想到K8S中PV(PersistentVolume)与PVC(PersistentVolumeClaim)的概念。他们都属于逻辑卷范畴。

十、磁盘相关命令

1、fdisk

fdisk -l 查看服务器挂载了多少个磁盘,以及每个磁盘的分区情况

如下可知虚机挂载了4块磁盘,其中/dev/vda磁盘创建了两个分区。

fdisk /dev/vdb该命令意思是为/dev/vdb磁盘进行分区或者说叫编辑/dev/vdb磁盘。

2、mount

mount -l 查看文件系统挂载情况

mount -a 依据配置文件/etc/fstab的内容,自动挂载。的意思是将/etc/fstab的所有内容重新加载。并自动挂载 /etc/fstab 里面的东西

umount /data:是卸载/data目录之前挂载的分区。和mount意思正好相反。

3、df与du

df,全称:disk full,列出文件系统的整体磁盘使用量

df -h 查看文件系统挂载和资源使用情况

du,全称:disk used,检查磁盘空间使用量

如下:du -sh ./*

4、mkfs.ext4

mkfs.ext4命令是用于对磁盘设备进行Ext4格式化的操作。

类似的还有mkfs.ext4 /dev/vdb3

如果是xfs文件系统,则mkfs.xfs  /dev/vdb3

5、lsblk

lsblk命令 的英文是“list block”,即用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系

注意:TYPE为part表示NAME对应的是分区,TYPE为disk,表示NAME对应的是硬盘

十一、/etc/fstab

 参考:linux之fstab文件详解

1、介绍

 /etc/fstab是用来存放文件系统的静态信息的文件。当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。

显示分区的基本信息:lsblk -f

2、案例介绍

通过内核名称编写:

# <file system>        <dir>         <type>    <options>             <dump> <pass>
tmpfs                  /tmp          tmpfs     nodev,nosuid          0      0
/dev/sda1              /             ext4      defaults,noatime      0      1
/dev/sda2              none          swap      defaults              0      0
/dev/sda3              /home         ext4      defaults,noatime      0      2
  • <file systems> - 要挂载的分区或存储设备.
  • <dir> - <file systems>的挂载位置。
  • <type> - 要挂载设备或是分区的文件系统类型,支持许多种不同的文件系统:ext2ext3ext4reiserfsxfsjfssmbfsiso9660vfatntfsswap 及 auto。 设置成auto类型,mount 命令会猜测使用的文件系统类型,对 CDROM 和 DVD 等移动设备是非常有用的。
  • <options> - 挂载时使用的参数,注意有些mount 参数是特定文件系统才有的。一些比较常用的参数有:
  • auto - 在启动时或键入了 mount -a 命令时自动挂载。
  • ro - 以只读模式挂载文件系统。
  • rw - 以读写模式挂载文件系统。
  • owner - 允许设备所有者挂载.
  • sync - I/O 同步进行。
  • async - I/O 异步进行。
  • dev - 解析文件系统上的块特殊设备。
  • nodev - 不解析文件系统上的块特殊设备。
  • suid - 允许 suid 操作和设定 sgid 位。这一参数通常用于一些特殊任务,使一般用户运行程序时临时提升权限。
  • defaults - 使用文件系统的默认挂载参数,例如 ext4 的默认参数为:rwsuiddevexecautonouserasync.
  • <dump> dump 工具通过它决定何时作备份. dump 会检查其内容,并用数字来决定是否对这个文件系统进行备份。 允许的数字是 0 和 1 。0 表示忽略, 1 则进行备份。大部分的用户是没有安装 dump 的 ,对他们而言 <dump> 应设为 0。
  • <pass> fsck 读取 <pass> 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。 根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为 2. 0 表示设备不会被 fsck 所检查。

3、编写规范

在 /etc/fstab配置文件中你可以以三种不同的方法表示文件系统:内核名称(见案例介绍)、UUID 或者 label。使用 UUID 或是 label 的好处在于它们与磁盘顺序无关。如果你在 BIOS 中改变了你的存储设备顺序,或是重新拔插了存储设备,或是因为一些 BIOS 可能会随机地改变存储设备的顺序,那么用 UUID 或是 label 来表示将更有效。

UUID编写方式:

label编写方式:

十二、Linux磁盘名称

1、/dev/hda, /dev/hdb, /dev/sda, /dev/sdb, 他们之间有什么区别?

hda一般是指IDE接口的硬盘,hda指第一块硬盘,hdb指第二块硬盘,等等;

sda一般是指SATA接口的硬盘,sda指第一块硬盘,sdb指第二块硬盘,等等。

一般来说,vda,vdb为虚拟磁盘;真机中第一块磁盘为sda,第二块为sdb

十三、实践

实践机器:88那台测试机

针对/vdb盘进行分区,分别挂载到不同的/data目录,最终结果如下:

分区后: 

过程中遇到的问题:

1、fdisk最后一步需要输入:wq,输入lsblk是看不出效果的,需要重启虚拟机:reboot;

2、一开始/data目录直接挂载在硬盘/vdb上,所以需要先卸载/data, 但是在卸载/data的时候遇到个问题,/data正在被占用,无法卸载,报错如下:意思是/data正在被占用,因此不能卸载,此时我们就需要将正在占用该磁盘数据的进程全都kill掉,就可以正常解除挂载了。最终通过fuser命令解决。

  • fuser -mv /data:查看哪个进程占用
  • fuser -km /data:kill掉此进程
  • umount /data:再次执行卸载即可

解决方式参考:umount target is busy挂载盘无法卸载的解决办法 - 灰信网(软件开发博客聚合) 

卸载报错:

未分区前: 

3、挂载前一定要mkfs格式化文件系统,否则会报错

参考:https://blog.csdn.net/qq_31319235/article/details/118784703

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐