跳至主要內容

管理Linux中的磁盘(以CentOS 7为例)

酷丁大约 10 分钟LinuxCentOS磁盘管理fdiskmkfsmount

磁盘

Linux系统可以挂载多个磁盘,每个磁盘都有一个设备文件,设备文件的命名规则为/dev/sd[a-z],其中[a-z]表示从a到z的任意一个字母。例如,/dev/sda表示第一个磁盘,/dev/sdb表示第二个磁盘,以此类推。

磁盘的设备文件是一个特殊文件,它的内容不是普通的文本,而是一些二进制数据。因此,我们不能直接使用文本编辑器编辑磁盘的设备文件,否则会破坏磁盘的数据。

磁盘的种类分别有IDE、SATA、SCSI、SAS、USB、RAID等,其中IDE、SATA、SCSI、SAS是磁盘的接口类型,USB是磁盘的接口类型和设备类型,RAID是磁盘的设备类型。

一块没有分过区的硬盘(RAW)里没有文件系统,不能直接存储文件,需要先对其进行分区,然后对分区进行格式化,最后才能挂载分区并使用。

mbr拓展分区和gpt分区

磁盘分区的方式有两种:mbr拓展分区和gpt分区。

由于mbr拓展分区的分区表只有4个,因此mbr拓展分区最多只能分4个分区。而gpt分区的分区表可以有128个,因此gpt分区可以分更多的分区。

mbr拓展分区的分区表保存在磁盘的第一个扇区,而gpt分区的分区表保存在磁盘的最后一个扇区。

mbr拓展分区的分区表保存在磁盘的第一个扇区,因此mbr拓展分区的分区表有可能会被破坏。而gpt分区的分区表保存在磁盘的最后一个扇区,因此gpt分区的分区表不会被破坏。

格式化

格式化是指在磁盘上创建文件系统,使磁盘能够存储文件。格式化后,磁盘上的所有数据都会被清除,因此在格式化前应该先备份磁盘上的数据。

Linux系统支持的文件系统有ext2、ext3、ext4、xfs、btrfs、vfat、ntfs等,其中ext2、ext3、ext4、xfs、btrfs是Linux系统的文件系统,vfat、ntfs是Windows系统的文件系统。

Linux系统的文件系统支持的最大文件大小为16TB,最大文件系统大小为1EB。

Windows系统的文件系统支持的最大文件大小为4GB,最大文件系统大小为2TB。(FAT32文件系统支持的最大文件大小为4GB,最大文件系统大小为2TB。NTFS文件系统支持的最大文件大小为16TB,最大文件系统大小为256TB。)

Linux系统的文件系统支持的最大文件名长度为255个字符,最大路径名长度为4096个字符。

软RAID

RAID是一种磁盘阵列技术,它可以将多块磁盘组合成一个逻辑磁盘,从而提高磁盘的性能和可靠性。

RAID技术有多种实现方式,其中最常用的是软RAID和硬RAID。软RAID是通过软件实现的RAID技术,硬RAID是通过硬件实现的RAID技术。

软RAID的优点是成本低,缺点是性能低。硬RAID的优点是性能高,缺点是成本高。

RAID级别描述最少磁盘数性能容错性
RAID 0无冗余的磁盘阵列2
RAID 1镜像的磁盘阵列2
RAID 5带分布式奇偶校验的磁盘阵列3
RAID 6带双分布式奇偶校验的磁盘阵列4
RAID 10带镜像的带分布式奇偶校验的磁盘阵列4

LVM(Logical Volume Manager) 逻辑卷管理

LVM主要用于管理磁盘分区,它可以将多个磁盘分区组合成一个逻辑分区,从而提高磁盘分区的灵活性和可靠性。

例如,有一个磁盘分区,它的大小为100GB,现在我们想要将它分成两个分区,一个分区的大小为50GB,另一个分区的大小为50GB。如果我们使用传统的分区方式,那么我们需要先将这个磁盘分区分成两个分区,然后再将这两个分区格式化,最后再将这两个分区挂载。而如果我们使用LVM,那么我们只需要将这个磁盘分区分成两个分区,然后再将这两个分区组合成一个逻辑分区,最后再将这个逻辑分区格式化并挂载。

LVM的优点是灵活性高,缺点是性能低。

LVM逻辑卷描述
物理卷(PV)物理卷位于LVM的最底层,它可以是磁盘分区、磁盘、软RAID、硬RAID等。物理卷的大小为4MB~8EB。
卷组(VG)卷组位于LVM的中间层,它由一个或多个物理卷组成。卷组的大小为4MB~8EB。
逻辑卷(LV)逻辑卷位于LVM的最顶层,它由一个或多个卷组组成。逻辑卷的大小为4MB~8EB。
物理区(PE)物理区是LVM的最小单位,它的大小为4MB~16GB。
逻辑区(LE)逻辑区是逻辑卷的最小单位,它的大小为4MB~16GB。
VGDAVGDA是卷组的元数据,它保存在卷组的第一个物理卷的第一个物理区中。

LVM在进行逻辑卷管理时,创建顺序是先创建物理卷,再创建卷组,最后创建逻辑卷。在进行逻辑卷管理时,删除顺序是先删除逻辑卷,再删除卷组,最后删除物理卷。

磁盘管理命令

fdisk

fdisk是Linux系统中的磁盘分区管理命令,它可以对磁盘进行分区、查看分区、删除分区等操作。

在DOS、Windows、Linux系中,都有相应的磁盘分区管理命令,但是它们的命令语法不同,因此在使用时需要注意。

fdisk命令的语法格式如下:

fdisk [选项] 设备文件

使用fdisk -m可以查看fdisk命令的帮助信息。

fdisk命令的常用选项如下:

选项说明
-l查看磁盘分区信息
-n创建新分区
-d删除分区
-p打印分区表
-t修改分区类型
-w将分区表写入磁盘
-q退出不保存
-m显示帮助信息
-a调整磁盘启动顺序
-d删除分区

如果我们需要对磁盘进行分区,那么我们可以使用fdisk -l命令查看磁盘的设备文件,然后使用fdisk命令对磁盘进行分区。

例如,我们想要对磁盘/dev/sdb进行分区,那么我们可以使用如下命令:

fdisk /dev/sdb

进入后,输入p可以查看当前分区表,输入n可以创建新分区,输入d可以删除分区,输入w可以将分区表写入磁盘,输入q可以退出不保存。

mkfs

对磁盘分区后,我们需要对分区进行格式化,使分区能够存储文件。Linux系统中的格式化命令是mkfs,它可以对磁盘分区进行格式化。

mkfs命令的语法格式如下:

mkfs [选项] 设备文件

常用参数有:

选项说明
-t指定文件系统类型
-c检查磁盘坏道
-v显示详细信息
-V显示版本信息
-l从文件file中读取保留区域的位置和大小

例如,我们想要对磁盘分区/dev/sdb1进行格式化,使其支持ext4文件系统,那么我们可以使用如下命令:

mkfs -t ext4 /dev/sdb1

fsck

fsck是Linux系统中的磁盘检查命令,它可以对磁盘进行检查和修复。

fsck命令的语法格式如下:

fsck [选项] 设备文件

常用参数有:

选项说明
-t指定文件系统类型
-a自动修复
-r交互式修复
-V显示版本信息

dd

dd命令可以对磁盘进行复制,它的语法格式如下:

dd [选项] [<if=输入文件>] [<of=输出文件>] [<bs=字节数>] [<count=块数>] [<seek=块数>] [<skip=块数>]

例如,我们需要新建一个swap分区,那么我们可以使用如下命令:

dd if=/dev/zero of=/swap bs=1M count=1024

其中,if=/dev/zero表示输入文件为/dev/zeroof=/swap表示输出文件为/swapbs=1M表示每次读取1MB,count=1024表示读取1024次。

当然。建立swap分区后,我们还需要对其进行格式化,使其支持swap文件系统,那么我们可以使用如下命令:

mkswap /swap

利用swapon命令可以激活swap分区,使其生效,那么我们可以使用如下命令:

swapon /swap

df

df命令可以查看磁盘的使用情况,它的语法格式如下:

df [选项] [文件]

常用参数有:

选项说明
-a显示所有文件系统
-h以人类可读的方式显示
-k以k字节为单位显示
-m以M字节为单位显示
-T显示文件系统类型

du

du命令可以查看磁盘的使用情况,它的语法格式如下:

du [选项] [文件]
选项说明
-a递归显示所有文件和目录的大小
-s对每个参数只显示其大小总和
-h以人类可读的方式显示
-k以k字节为单位显示
-c显示所有文件和目录的大小总和
-x只统计当前文件系统中的文件和目录

mount和umount

mount命令可以将磁盘分区挂载到指定的目录,使其能够访问,它的语法格式如下:

mount [选项] [-t 文件系统类型] 设备文件 挂载点

mount命令的主要选项有:

选项说明
-a挂载/etc/fstab文件中的所有文件系统
-t指定文件系统类型
-o指定挂载选项
-r以只读方式挂载
-w以读写方式挂载
-L按照卷标挂载
-U按照UUID挂载
-n不将挂载信息写入/etc/mtab文件

umount命令可以将磁盘分区卸载,使其不能访问,它的语法格式如下:

umount [选项] 设备文件或挂载点

文件系统的自动挂载是通过/etc/fstab文件实现的,该文件的格式如下:

设备文件 挂载点 文件系统类型 挂载选项 0 0

以下是一个/etc/fstab文件的例子:

/dev/sda1 / ext4 defaults 0 0
/dev/sda2 /home ext4 defaults 0 0
/dev/sda3 swap swap defaults 0 0

blkid

blkid命令可以查看磁盘分区的UUID和卷标,它的语法格式如下:

blkid [选项] 设备文件

常用参数有:

选项说明
-o指定输出格式
-p显示完整的设备路径
-s指定输出的属性
-t指定文件系统类型

案例:在Linux中配置软RAID

创建分区

在虚拟机中新建两块硬盘,分别为/dev/sdb/dev/sdc,然后使用fdisk命令对这两块硬盘进行分区,分区的大小为100MB,分区的类型为Linux LVM,分区的设备文件分别为/dev/sdb1/dev/sdc1

使用fdisk为这些硬盘分区,详细步骤简略不写了。

创建RAID5

使用mdadm命令创建RAID5,命令如下:

mdadm -C /dev/md0 -l 5 -n 2 /dev/sdb1 /dev/sdc1

其中,-C选项表示创建RAID,/dev/md0表示RAID的设备文件,-l 5表示RAID的级别为5,-n 2表示RAID的磁盘数为2,/dev/sdb1/dev/sdc1表示RAID的磁盘分区。

格式化RAID5

使用mkfs命令格式化RAID5,命令如下:

mkfs -t ext4 /dev/md0

查看RAID5的UUID,命令如下:

blkid /dev/md0

停止RAID5,命令如下:(记得先卸载)

mdadm -S /dev/md0

参考资料

  • [《Linux操作系统及应用》]
  • 文章编写时,部分提示来自[Github Copilot]