Linux磁盘管理

这篇博客是在系统的层次对Linux下磁盘做一个说明的,磁盘是计算机系统中非常基础的一个硬件,对于磁盘的管理和使用,操作系统完成了管理的大部分工作,而使用部分由于每个人操作磁盘的目的不同,那么使用方法也就自然不同。文章中的大部分内容来自于鸟哥的Linux私房菜,在参考部分给出了这篇文章的连接。

EXT2文件系统

文件系统可以认为是操作系统安装在磁盘上用来对磁盘进行管理的软件,文件系统是会占用磁盘空间的。 EXT2文件系统已经是一个比较古老的文件系统了,现在比较常用的已经是EXT4文件系统了,包括最新版的centos和ubunt使用的都是EXT4文件系统了。EXT4文件系统是在EXT2文件系统的基础上进化出来的。EXT2文件系统上的概念在EXT4上也是通用的。比如说data block, inode table, superblock在EXT4上也是存在的。

磁盘管理

硬盘需要分区,格式化并挂载后方能使用,Linux 下硬盘上的每个分区表示为一个设备文件。在Linux系统中这三个步骤分别对应fdisk,mkfs和mount。一块新的硬盘被加到系统中。必需要经过上面的这3步操作系统才能使用磁盘(指使用磁盘进行读取和写入操作),但其中第一个分区不是必需。物理磁盘在接入到计算机系统中之后其实只要进行格式化和挂载就能使用。

####分区 ####
分区使用命令fdisk来实现,分区其实不是必需的,linux下分区的概念和Windows中把一块磁盘分成C,D,E…各个分区是一个概念。分区的目的是为了将一块完整的磁盘划分出多个独立的分区来,每一个分区相当于是一块新的磁盘。这样的好处就是我们可以在每个磁盘中安装不同的系统。在我们这里应用的时候不要安装其他系统在磁盘上,分区其实就可以省略了,整个磁盘就当做一块磁盘来用这样没有任何问题,例子中就使用了这种方式来使用我们新的磁盘。一般来说在linux下的分区工具就是fdisk,下面是fdisk常见使用方法的说明,在不同系统下用法可能不同。如有不同以使用系统版本的文档为准。
列出当前系统下的磁盘和其分区:

1
fdisk -l

对某块磁盘进行分区操作:

1
fdisk /dev/vdb

输入上面命令会使我们进入到fdisk的操作界面,fdisk分区的使用方法还是非常简单的。它会自动打印出命令的说明,跟进自身需求,执行上面的命令就可以了。

格式化

linux系统支持众多的文件系统,不同的系统版本默认使用的文件系统可能也不一样,比如说centos6默认使用的ext4文件系统,而centos7默认使用的则是xfs。磁盘必须经过格式化才能使用,格式化的过程就相当于是将文件系统安装到磁盘中的过程。
常用的格式化命令示例如下:

1
mkfs -t ext4 /dev/vdb #将vdb文件系统格式化为ext4
mkfs.xfs /dev/vdb #将vdb文件系统格式化为xfs

挂载

格式化好之后文件系统还不能在linux中使用,要使用的话必须要经过挂载才行。linux的文件系统是树状的文件系统,每个目录相当于是树枝的一个分叉点。我们必须把经过格式化的磁盘挂载在现有的文件系统下才能使用。文件系统的挂载使用mount命令,这个命令接受两个参数,磁盘和挂载点,挂载点是进入新磁盘的入口,要使用新磁盘必须在挂载点之下才可以。也就是说只有在挂载点目录之下新建文件,文件占用的才是新挂载上了的磁盘空间。挂载还有和他相对的一个操作卸载,有一些磁盘操作需要对磁盘进行卸载之后才能进行,下面是这两条命令的示例:

1
mount /dev/vdb /data  #将vdb挂载到/data
umount /dev/vdb       #卸载vdb

显示磁盘空间占用情况

在 Linux 和 AIX 系统上,都提供了一个 df 命令。df 的功能是检查文件系统的磁盘空间占用情况以及可用性,通常还包挂载点。管理员能利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。 下面是df常见几个用法的例子:

1
df -ihT #i表示inode信息,h已阅读友好的方式显示,T文件系统类型

还有一个用来显示文件占用大小的命令du,带 -a 选项的 du 命令将从当前目录开始沿着目录结构向下直到列出所有目录和文件的容量为止。du可用于找出当前文件系统中占用磁盘空间最多的文件,或者说找出大文件。

例子:新加入一块磁盘到linux系统中

1
mkfs -t ext4 /dev/vdb #将vdb的文件系统格式化为ext4
mount /dev/vdb /data/ #将vdb挂载到/data目录下
vim /etc/fstab #编辑fstab将下面的语句写入fstab中
/dev/vdb   /data  ext4  defaults,noatime 0 0

最后补充一个在UCloud平台升级磁盘大小的说明

在平台完成升级磁盘操作后,并不能直接在系统中使用。因为磁盘扩容的操作相当于是对物理硬盘进行了扩展,由于是在物理硬件层次的扩展,新增加的磁盘其实是没有进行格式化的,通过前面的说明我们可以知道没有进行格式化的磁盘在操作系统中是无法使用的,因此我们需要在系统中对扩容的磁盘进行一个格式化的操作才能使用。格式化操作一般是会丢失数据的,我们这里使用的resize2fs命令相当于是在不影响之前部分的前提下对新的磁盘空间进行格式化。
在Linux的主机上进行扩容大概步骤如下:

  1. 查看文件系统类型
  2. 卸载文件系统
  3. 运行磁盘检查程序
  4. 格式化扩容的分区

命令如下

1
df -ihT #查看文件系统分区类型
umount /dev/vdb #卸载vdb分区
e2fsck -f /dev/vdb #磁盘检查,后一条命令以这条命令为前提
resize2fs /dev/vdb #格式化扩展的分区
mount /dev/vdb #挂载分区

参考
Linux 磁盘与文件系统管理
Unix/Linux 系统自动化管理: 磁盘管理篇(上)

分享到 评论