磁盘管理
Linux 会根据设备类型对存储设备进行识别,IDE 盘在系统中被识别成 hd,第一个设备为 hda,第二个为 hdb 以此类推。如果是 SATA,USB,SCSI 设备,则会识别成 sd,第一个为 sda,第二位为 sdb,以此类推。
对于分区,Linux 使用数字来表示,如,第一块 SATA 硬盘的第一个分区为sda1,第二个分区为 sda2,以此类推。
1 磁盘分区
1.1 MBR 分区
一般的 MBR 分区方式,一块硬盘最多分四个主分区,如图1所示:
如果 MBR分区需要更多分区,则需要首先创建扩展分区在扩展分区中创造逻辑分区,所有逻辑分区总和为扩展分区大小,逻辑分区编号一定以 5 开始的,如图 2 所示:
以下是具体分区操作步骤。
[root@localhost ~]# fdisk -l #查看磁盘分区表
Disk /dev/sda: 21.5 GB, 21474836480 bytes #第一块磁盘容量为 21.5GB
...
Device Boot Start End Blocks Id System
/dev/sda1 * 1 39 307200 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 39 2358 18631680 83 Linux
/dev/sda3 2358 2611 2031616 82 Linux swap / Solaris
Disk /dev/sdb: 10.7 GB, 10737418240 byte #第二块磁盘大小为 10.7GB,未分区
...
以第二块磁盘进行分区操作:
[root@localhost ~]# fdisk /dev/sdb
Command (m for help): m
Command action
a toggle a bootable flag #切换分区启动标志
b edit bsd disklabel #编辑 bsd 磁盘标签
c toggle the dos compatibility flag #切换 dos 兼容模式
d delete a partition #删除分区
l list known partition types #显示分区类型
m print this menu #显示帮助菜单
n add a new partition #添加新分区
o create a new empty DOS partition table #创建新的空分区表
p print the partition table #显示分区信息表
q quit without saving changes #不保存,退出
s create a new empty Sun disklabel #创建新的 sun 磁盘标签
t change a partition's system id #修改分区 id,l 查看 id
u change display/entry units #修改容量单位,磁柱或扇区
v verify the partition table #检验分区表
w write table to disk and exit #保存退出
x extra functionality (experts only) #扩展功能
Command (m for help): n
Command action
e extended #输入 e,创建扩展分区
p primary partition (1-4) #输入 p,创建主分区
p
Partition number (1-4): 1 #输入分区编号
First cylinder (1-1305, default 1): #直接按回车,默认从 1 柱面
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +2G
#创建 2GB 的第一个分区
Command (m for help): p #打印分区信息看是否成功
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
...
Device Boot Start End Blocks Id System
/dev/sdb1 1 262 2104483+ 83 Linux
#可以看到/dev/sdb1 已创建完成
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e #输入 e 将创建扩展分区
Partition number (1-4): 2
First cylinder (263-1305, default 263):
Using default value 263
Last cylinder, +cylinders or +size{K,M,G} (263-1305, default 1305):
#按回车把剩余的空间全部分到此分区
Using default value 1305
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l #选择 l 创建逻辑分区
First cylinder (263-1305, default 263):
Using default value 263 #默认从 263 磁住开始分区
Last cylinder, +cylinders or +size{K,M,G} (263-1305, default 1305): +2GB
#创建 2GB 的逻辑分区
Command (m for help): p #查看分区信息
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
...
Device Boot Start End Blocks Id System
/dev/sdb1 1 262 2104483+ 83 Linux
/dev/sdb2 263 1305 8377897+ 5 Extended
/dev/sdb5 263 506 1959898+ 83 Linux
Command (m for help): d #删除分区
Partition number (1-5): 5 #删除第五个分区
Command (m for help): p #查看是否删除
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
...
Device Boot Start End Blocks Id System
/dev/sdb1 1 262 2104483+ 83 Linux
/dev/sdb2 263 1305 8377897+ 5 Extended
Command (m for help): w #保存并退出
使用 partprobe
命令让内核重新读取分区表,无需重启即可识别分区。
partprobe /dev/sdb
1.2 gpt 分区
以上是 MBR 分区,对于大于 2TB 的磁盘我们需要用另一个分区工具paeted
,以下为parted
分区的相关命令。
- 修改分区表格式
parted /dev/sdc mklabel gpt #修改分区表格式
parted /dev/sdc print #查看系统分区表信息
- 创建分区
用法:parted [磁盘] mkpart 分区类型 文件系统类型 开始 结束
其中mkpart
指的是创建新分区,分区类型有:primary、logical、extended 三种,文件系统有:fat16、fat32、ext2、ext3等,开始与结束默认单位 MB。
parted /dev/sdc mkpart primary ext3 1 2G
#创建一个 ext3 格式的分区,从磁盘 1M 开始到 2G,该分区共 2G
parted /dev/sdc mkpart primary ext3 2G 4GB
#创建第二个分区
parted /dev/sdc print #查看分区信息
- 删除分区
parted /dev/sdc rm 2 #删除第二个分区
2 磁盘格式化与挂载
Linux 通过 mkfs
命令完成格式化操作,以 xfs 文件格式为例。
mkfs.xfs /dev/sdc1 #将dev/sdc格式化成 xfs 格式
mkswap /dev/sdc2 #对于交换分区的格式化
格式化后需要挂载后才可以使用。
挂载有两种方法:
- 第一种:使用
mount
命令挂载,该方法可以立即生效使用,但计算机重启后无效。
用法:mount [选项] [-o[选项]] 设备 挂载目录
|选项 | 解释 |
|–|--|
| -a |挂载/etc/fstab
文件中未挂载的文件系统 |
| -t |指定文件系统类型:ext2、ext3、xfs 等 |
| -o |指定挂载属性 |
mkdir /data1
mount /dev/sdc1 /data1/ #将/sdc1 挂载到/data1/下
mount #查看挂载状况
umount /dev/sdc1 #卸载 sdc1
- 第二种:修改系统文件
/etc/fstab
,文件内容如下:
...
UUID=7cfa3e05-0af4-4b68-832b-a538c434b4b7 / ext4 defaults 1 1
UUID=fef2bca6-156c-472a-9bad-22b3ab77118e /boot ext4 defaults 1 2
UUID=22a9ee79-0c64-4a57-a8e8-5f322bfd9c07 swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
- 第一列:设备名或者设备标签
- 第二列:挂载目录的名称
- 第三列:文件系统类型
- 第四列:挂载属性
- 第五列:系统是否使用 dump 进行备份,0 表示不备份,1 表示每天备份
- 第六列:系统开机是否进行磁盘检测,根文件系统为 1,其他为 2,0 表示不检查
vim /etc/fstab
/dev/sdc1 /data1 xfs defaults 0 0 #最后一行插入,挂载 dev/sdc1
mount -a #挂载 fstab 文件中尚未挂载的文件系统
mount #检查挂载情况