管理Linux中的磁盘(以CentOS 7为例)
磁盘
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。 |
VGDA | VGDA是卷组的元数据,它保存在卷组的第一个物理卷的第一个物理区中。 |
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/zero
,of=/swap
表示输出文件为/swap
,bs=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]