Linux硬盘管理

本文详细介绍了Linux磁盘管理,包括分区概念、硬盘结构、分区类型(主分区、扩展分区和逻辑分区)、如何使用fdisk工具进行分区操作,以及swap分区的管理,如创建、激活、优先级设置和写入fstab文件以实现开机自动挂载。
摘要由CSDN通过智能技术生成

      本章主要介绍Linux磁盘管理

        了解分区的概念

        对硬盘进行分区

        swap分区的管理

新的硬盘首先需要对其进行分区和格式化,下面来了解一下硬盘的结构,如图所示

        硬盘的磁盘上有一个个圈,每两个圈组成一个磁道。从中间往外发射线,把每个磁道分成 一个个扇区,每个扇区的大小是512B。为了更好地理解,我们把所有磁盘拼接起来,如图所示。

        假设磁盘有10000个扇区,第一个分区从2048到6000,第二个分区从6001到8000

        每个扇区只能属于一个分区,不能同时属于多个分区。

         第一个扇区比较特殊,叫作 MBR(主引导记录)。分区类型包括主分区、扩展分区和逻辑分区,如图所示

        一套房子出租,李四和王五从房东手中直接各租一间自住,这个属于主分区。

        赵六从房东手中租过来一个大间,但自己不住做起了二房东(扩展分区),然后隔成很多 隔间。赵六租的那一个大间就是扩展分区,大间里隔开的一些隔间就是逻辑分区。

        (1)主分区:直接从硬盘上划分,并可以直接格式化使用的分区。

        (2)扩展分区:直接从硬盘上划分,但是不直接使田的分区,傲更方甘上而机分事多的小分区 

        (3)逻辑分区:在扩展分区上划分的分区。

        分区表记录主分区和扩展分区的信息,如同房东从李四、王五、赵六手中收房租一样,但是收不到tom、bob等的房租,tom、bob等的房租由赵六来收,因为赵六是二房东。每记录一个分区(主分区或扩展分区)要消耗16B,所以分区表最多只能记录4个分区, 硬盘最多只能划分出来4个分区,且最多只能有一个扩展分区。

        请关闭虚拟机server并自行为虚拟机添加一块SCSI格式的硬盘,然后开机进入系统。

1.对磁盘进行分区

        使用fdisk -1命令查看所有分区信息,命令如下。

[root@redhat8 ~]# fdisk -l

        此命令可以查看系统所有硬盘的信息,这里可以看到/dev/sda有两个分区 /dev/sda1 和/dev/sda2,/dev/sdc没有任何分区。如果想单独查看某硬盘的分区信息,可以使用“fdisk -l/dev/硬盘”命令。例如,想单独查看/dev/sda的信息,则用fdisk -l /dev/sda 命令,命令如下。

[root@redhat8 ~]# fdisk -l /dev/sda

        这里可以获取到很多信息,例如,整个sda有多少个扇区,每个分区从哪个扇区开始到个扇区结束等。

        下面开始练习分区,自行添加一个类型为SCSI、大小为20G的分区。分区的语法为“fdisk /devl/硬盘”,这里是对硬盘进行分区,而不是对分区再进行分区。

[root@redhat8 ~]# fdisk /dev/sdc

         此处进入分区的界面,按提示输入“m”可以获取帮助,常见的命令如下。

(1)p:打印分区表(2)n:添加一个分区(3)d:删除一个分区 (4)1:列出分区类型(5)t:转换分区类型(6)q:不保存直接退出(7)w:保存并退出。

        查看现有分区信息,此处输入“p”,命令如下。

        此处并没有看到/dev/sdc1、/dev/sdc2等内容,说明并不存在任何分区。 按【n】键创建一个分区,命令如下。

命令(输入 m 获取帮助):n
分区类型
   p   主分区 (0个主分区,0个扩展分区,4空闲)
   e   扩展分区 (逻辑分区容器)

        直接在硬盘上划分的分区有主分区(标记为p)和扩展分区(标记为e),逻辑分区(标记为1)只能在扩展分区上创建,且扩展分区最多只能创建一个扩展分区。

        所以,在硬盘中没有扩展分区时,选择分区类型时只能选择p和e这两种。如果已经存在了扩展分区,就不能再创建第二个扩展分区了,但可以在扩展分区上创建逻辑分区,所以可选择的分区类型有p和1。

        先创建主分区或扩展分区都可以,这里先创建主分区,输入“p”,按【Enter】键。主分区加扩展分区最多只能创建出来4个,所以分配的编号只能是1~4,这里选择默认的1,然 后按【Enter】键。

命令(输入 m 获取帮助):n
分区类型
   p   主分区 (0个主分区,0个扩展分区,4空闲)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认  1): 1

        硬盘总共有41943039个扇区,第一个分区从哪个扇区开始呢?默认为2048,直接按【Enter】键,我们就从2048扇区开始。

第一个扇区 (2048-41943039, 默认 2048): 
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): +2G

        这里N的位置得写一个结束点,假设要创建2G的分区,从2048扇区开始算,到哪个扇区结束能使得分区大小是2G呢?如图所示。

        现在计算一下:2G=2×1024M=2×1024×1024K=2×1024×1024×2扇区(1扇区 =0.5K),所以一共需要2×1024×1024×2=4194304个扇区。从2048扇区开始算,最后一个扇区应该落在2048+4194304-1=4196351的位置,这样创建出来的分区就是2G,所以图中其与4196351。

第一个扇区 (2048-41943039, 默认 2048): 
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): +2G

创建了一个新分区 1,类型为“Linux”,大小为 2 GiB。

 创建2G分区后,输入“p”查看分区信息,如下。

         可以看出,从2048开始,共4194304个扇区,在4196351这个位置结束,大小为2G。但是这种创建分区的方法比较麻烦,可以先输人“d”,按【Fnter】键,删除此分区,命令如下。

命令(输入 m 获取帮助):d
已选择分区 1
分区 1 已删除。

        因为sdc1是唯一的分区,所以删除的就是sdc1,然后重复上面的方法重新创建分区,命令如下。

        因为并不需要关心分区到哪个扇区结束,只关心分区大小,所以这里可以写+2G,意思是 从2048扇区开始划分一个2G大小的分区,命令如下。

命令(输入 m 获取帮助):n
分区类型
   p   主分区 (0个主分区,0个扩展分区,4空闲)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认  1): 1
第一个扇区 (2048-41943039, 默认 2048): 
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): +2G

创建了一个新分区 1,类型为“Linux”,大小为 2 GiB。

        然后输人“p”查看分区信息、命令如下。

命令(输入 m 获取帮助):p
Disk /dev/sdc:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x1d6b14ba

设备       启动  起点    末尾    扇区 大小 Id 类型
/dev/sdc1        2048 4196351 4194304   2G 83 Linux

        可以看到,与手动计算出来的一样,通过这种方式划分分区就容易多了。

        再创建一个主分区/dev/sdc2,大小为2G,命令如下。

命令(输入 m 获取帮助):n
分区类型
   p   主分区 (1个主分区,0个扩展分区,3空闲)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (2-4, 默认  2): 2
第一个扇区 (4196352-41943039, 默认 4196352): 
上个扇区,+sectors 或 +size{K,M,G,T,P} (4196352-41943039, 默认 41943039): +2G

创建了一个新分区 2,类型为“Linux”,大小为 2 GiB。

        创建一个扩展分区/dev/sdc4,把剩余所有空间全部给它(这里故意没有创建/dev/sda3),命令如下。


命令(输入 m 获取帮助):n
分区类型
   p   主分区 (2个主分区,0个扩展分区,2空闲)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (3,4, 默认  3): 4
第一个扇区 (8390656-41943039, 默认 8390656): 
上个扇区,+sectors 或 +size{K,M,G,T,P} (8390656-41943039, 默认 41943039): 

创建了一个新分区 4,类型为“Linux”,大小为 16 GiB。

输入“p”查看分区信息,命令如下。

设备       启动    起点     末尾     扇区 大小 Id 类型
/dev/sdc1          2048  4196351  4194304   2G 83 Linux
/dev/sdc2       4196352  8390655  4194304   2G 83 Linux
/dev/sdc4       8390656 41943039 33552384  16G 5 扩展

        创建扩展分区后,就可以创建逻辑分区了,我们看到了编号3并未使用,所以现在还可以 创建一个主分区,但是硬盘已经没有多余的空间,所以不能再创建主分区只能创建逻辑分区, 逻辑分区的编号是从5开始,命令如下。

命令(输入 m 获取帮助):n
所有主分区的空间都在使用中。
添加逻辑分区 5
第一个扇区 (8392704-41943039, 默认 8392704): 
上个扇区,+sectors 或 +size{K,M,G,T,P} (8392704-41943039, 默认 41943039): +2G

创建了一个新分区 5,类型为“Linux”,大小为 2 GiB。

依照此方法再创建几个分区,命令如下。

设备       启动     起点     末尾     扇区 大小 Id 类型
/dev/sdc1           2048  4196351  4194304   2G 83 Linux
/dev/sdc2        4196352  8390655  4194304   2G 83 Linux
/dev/sdc4        8390656 41943039 33552384  16G  5 扩展
/dev/sdc5        8392704 12587007  4194304   2G 83 Linux
/dev/sdc6       12589056 16783359  4194304   2G 83 Linux
/dev/sdc7       16785408 20979711  4194304   2G 83 Linux

        看上面最右侧的两列:Id和类型,这两列是对应的。因为分区的作用不一样,所以有的可以直 接格式化使用,有的用于创建swap,有的用于创建逻辑卷等。这些类型是可以转换的,输 入字母1可以看到所有类型,如图所示。

        常见分区类型如下。

        (1)Linux :对应的Id为83,直接格式化使用的分区。

        (2)Linux swap:对应的Id为82,用于创建swap。

        (3)Linux LVM:对应的Id为8e,用于创建LV。

        (4)Linux raid :对应的Id为fd,用于创建fd。

        例如,准备把/devIlsdb5配置成逻辑卷,先把/dev/sdc5的分区类型改为Linux LVM,操作 如下。 先按【t】键开始进行转换,命令如下。

命令(输入 m 获取帮助):t

        然后输入要转换的分区号,这里输人“5”,按【Enter】键后输人要转换的分区Id(8e),命令如下。

分区号 (1,2,4-7, 默认  7): 5
Hex 代码(输入 L 列出所有代码):8e

已将分区“Linux”的类型更改为“Linux LVM”。

输入“p”查看分区信息,命令如下。

设备       启动     起点     末尾     扇区 大小 Id 类型
/dev/sdc1           2048  4196351  4194304   2G 83 Linux
/dev/sdc2        4196352  8390655  4194304   2G 83 Linux
/dev/sdc4        8390656 41943039 33552384  16G  5 扩展
/dev/sdc5        8392704 12587007  4194304   2G 8e Linux LVM
/dev/sdc6       12589056 16783359  4194304   2G 83 Linux
/dev/sdc7       16785408 20979711  4194304   2G 83 Linux

        使用相同的方法,把/dev/sdc6、/dev/sdc7的分区类型也转变为Linux LVM. 为下节做准备,把/dev/sdb2的分区类型改为 Linux swap,输入“t”,命令如下。

命令(输入 m 获取帮助):t
分区号 (1,2,4-7, 默认  7): 2
Hex 代码(输入 L 列出所有代码):82

已将分区“Linux”的类型更改为“Linux swap / Solaris”。

 然后输入“p”查看分区信息,命令如下

设备       启动     起点     末尾     扇区 大小 Id 类型
/dev/sdc1           2048  4196351  4194304   2G 83 Linux
/dev/sdc2        4196352  8390655  4194304   2G 82 Linux swap / Solaris
/dev/sdc4        8390656 41943039 33552384  16G  5 扩展
/dev/sdc5        8392704 12587007  4194304   2G 8e Linux LVM
/dev/sdc6       12589056 16783359  4194304   2G 83 Linux
/dev/sdc7       16785408 20979711  4194304   2G 83 Linux

        现在所做的一切并没有真的保存,如果不想保存直接退出,可以输人“q”并按 【Enter】键;如果想保存并退出,可以输入“w”并按【Enter】键,命令如下。

命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。

         有时需要执行partprobe /dev/sdc命令来刷新一下分区表,然后使用fdisk命令进行查看,命令如下。

[root@redhat8 ~]# fdisk -l /dev/sdc

 2.交换分区

        在物理内存不够用的情况下,系统会把物理内存中那些长时间没有操作的数据释放出来, 保存在交换分区(swap)中,这样物理内存中就有多余的空间,用于存放新的数据。

        如果物理内存不够了可以使用swap分区,那么如果swap分区也不够了呢?我们就可以添 加swap分区。下面就来讲讲如何管理swap分区。

查看当前系统中所有的swap分区,命令如下。

[root@redhat8 ~]# swapon -s
文件名				类型		大小	已用	权限
/dev/dm-1                              	partition	2097148	15940	-2

        可以看到,当前/dev/dm-1是交换分区,大小是2G。这里的权限是,如果有多个swap分区,优先使用哪个,数值越大越优先。查看swap分区也可以使用cat /proc/swaps命令。\

        下面开始创建swap分区,步骤如下。

        步骤①:把/dev/sdc2创建为swap分区,命令如下。

[root@redhat8 ~]# mkswap /dev/sdc2
正在设置交换空间版本 1,大小 = 2 GiB (2147479552  个字节)
无标签,UUID=1467bd0b-9929-4c74-b757-e39d1f40d057

        步骤②:激活新创建的swap 分区,命令如下。

[root@redhat8 ~]# swapon /dev/sdc2
[root@redhat8 ~]# swapon -s
文件名				类型		大小	已用	权限
/dev/dm-1                              	partition	2097148	21828	-2
/dev/sdc2                              	partition	2097148	0	-3

        可以看到,此时已经有两个交换分区了。其中/dev/sdc2的权限为-3,说明/devIsda2优 先使用。如果想设置让/dev/sdc2优先使用,可以调整/dev/sdc2的优先级。

        步骤③:关闭新创建的swap分区,命令如下。

[root@redhat8 ~]# swapoff /dev/sdc2

        步骤④:激活swap分区,并指定优先级,命令如下。

[root@redhat8 ~]# swapoff /dev/sdc2
[root@redhat8 ~]# swapon -p 2 /dev/sdc2
[root@redhat8 ~]# swapon -s
文件名				类型		大小	已用	权限
/dev/dm-1                              	partition	2097148	21492	-2
/dev/sdc2                              	partition	2097148	0	2

        可以看到,/dev/sdc2的权限是2,所以这个交换分区会优先使用。 上面设置的这个交换分区也只是临时生效,如果要让其重启系统之后仍然生效,就需要写 入/etc/fstab中。

        步骤⑤:编辑/etc/fstab,在最后一行添加,命令如下。

[root@redhat8 ~]# tail -1 /etc/fstab
/dev/mapper/rhel-swap   none                    swap    defaults        0 0

        上面每个字段用空格或【Tab】键隔开均可,第四列defaults后面的逗号两边没有空格。 如果不需要指定优先级,第四列直接写 defaults 即可。

         如果/dev/sdc2当前没有激活,则在写入/etc/fstab之后,执行swapon -a命令即可。

  • 28
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值