前言
大家好,又见面了,我是沐风晓月,本文是专栏【linux基本功-基础命令实战】的第49篇文章。
????个人简介:大家好,我是沐风晓月,双一流院校计算机专业???????? ???? 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步???????????? ????欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信????
一. fdisk命令介绍
fdisk命令来自于英文词组“Partition table manipulator for Linux”的缩写,在系统中主要用来管理磁盘的分区信息。
我们在安装操作系统的时候,已经对磁盘进行分区,实际运行过程中,难免会有再加硬盘的情况,这时候就需要用到fdisk 了
fdisk有一定的局限性,只适合2T以下的磁盘分区,在大点的磁盘就要考虑gdisk之类的工具了。
二. 语法格式及常用选项
依据惯例,我们还是先查看帮助,使用fdisk 查看帮助信息,fdisk 不支持--help参数
[root@mufenggrow ~]# fdisk
用法:
fdisk [选项] <磁盘> 更改分区表
fdisk [选项] -l <磁盘> 列出分区表
fdisk -s <分区> 给出分区大小(块数)
选项:
-b <大小> 扇区大小(512、1024、2048或4096)
-c[=<模式>] 兼容模式:“dos”或“nondos”(默认)
-h 打印此帮助文本
-u[=<单位>] 显示单位:“cylinders”(柱面)或“sectors”(扇区,默认)
-v 打印程序版本
-C <数字> 指定柱面数
-H <数字> 指定磁头数
-S <数字> 指定每个磁道的扇区数
为了更直观一些,我们把常用的参数用表格来展示:
参数 | 描述 |
---|---|
-b | 指定每个分区的大小 |
-l | 列出指定的外围设备的分区表状况 |
-s | 将指定的分区大小输出到标准输出上,单位为区块 |
-u | 搭配”-l”参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址 |
-v | 显示版本信息 |
-m | 查看全部可用参数 |
-n | 添加新的分区 |
-d | 删除某个分区信息 |
-t | 改变某个分区的类型 |
-p | 查看分区表信息 |
-w | 保存并退出 |
-q | 不保存直接退出 |
有了具体的参数之后,我们再来看实战案例:
三. 参考案例
3.1 列出每个分区的大小
此时我们使用-l 列出指定的外围设备的分区表状况:
[root@mufenggrow ~]# fdisk -l
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a03d9
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
从上面代码中可以看到几个信息:
- 快设备名称是: /dev/sda
- 设备大小是:21.5G (但这个数值不是特别准确,想看准确的可以使用 lsblk
- 字节数为: 21474836480 字节
- 扇区数为: 41943040 个扇区
磁盘 /dev/mapper/centos-root: 是root分区
我们可以用lsblk查看准确的信息:
[root@mufenggrow ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 4.3G 0 rom /mnt
3.2 分区操作
分区的语法:
fdisk + 分区名称
案例一: 将sdb盘分区为sdb1 的大为2个G
我们目前的磁盘中没有sdb盘,需要先增加一块盘, 我们的具体步骤如下:
- 新增加一块磁盘 sdb
- 使用fdisk对sdb盘进行分区,分区大小为2G
- 对新分区进行格式化
- 创建一个目录/sdb1,将新分区挂载到/sdb1上
- 查看是否成功。
3.2.1 添加硬盘
-
选中硬盘,点击添加
-
在硬盘添加向导中点击下一步
-
硬盘类型,选择默认
-
选择使用哪个磁盘,选创新新的虚拟磁盘
-
设置磁盘容量
-
磁盘文件默认就行
-
完成后截图:
3.2.2 开启虚拟机并分区
- 查看分区情况
[root@mufenggrow ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 2月 18 13:44 /dev/sda
brw-rw----. 1 root disk 8, 1 2月 18 13:44 /dev/sda1
brw-rw----. 1 root disk 8, 2 2月 18 13:44 /dev/sda2
brw-rw----. 1 root disk 8, 16 2月 18 13:44 /dev/sdb
[root@mufenggrow ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sr0 11:0 1 4.3G 0 rom /run/media/root/CentOS 7 x86_64
[root@mufenggrow ~]#
能看到sdb说明已经创建硬盘成功
- 开始分区
使用fdisk /dev/sdb 然后根据命令提示进行分区
[root@mufenggrow ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xf08d8184 创建新的 DOS 磁盘标签。
## 这里输入m 获取帮助
命令(输入 m 获取帮助):m
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
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
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@mufenggrow ~]#
代码执行中的操作如下图:
分区中常用的参数有:
参数 | 注释 |
---|---|
-b | 指定每个分区的大小 |
-l | 列出指定的外围设备的分区表状况 |
-s | 将指定的分区大小输出到标准输出上,单位为区块 |
-u | 搭配”-l”参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址 |
-v | 显示版本信息 |
-m | 查看全部可用参数 |
-n | 添加新的分区 |
-d | 删除某个分区信息 |
-t | |
-p | 查看分区表信息 |
-w | 保存并退出 |
-q | 不保存直接退出 |
3.3.3 分区完成后进行格式化挂载
先来看看是否分区成功:
[root@mufenggrow ~]# ll /dev/sdb*
brw-rw----. 1 root disk 8, 16 2月 18 13:47 /dev/sdb
brw-rw----. 1 root disk 8, 17 2月 18 13:47 /dev/sdb1
[root@mufenggrow ~]#
可以看到已经分区成功了,接下来我们进行格式化的操作:
[root@mufenggrow ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@mufenggrow ~]#
可以看到,格式化已经成功了,接下来我们创建目录并挂载
[root@mufenggrow ~]# mkdir /sdb1
[root@mufenggrow ~]# mount /dev/sdb1 /sdb1
[root@mufenggrow ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G 4.4G 13G 26% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 182M 4.0K 182M 1% /run/user/42
tmpfs 182M 24K 182M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb1 2.0G 33M 2.0G 2% /sdb1
[root@mufenggrow ~]#
可以看到已经挂载成功了。
四 . 设置分区自动挂载
在配置文件添加相关的挂载信息即可实现分区挂载
在 vim /etc/fstab #在文件最后写入:
/dev/sdb1 /sdb1 xfs defaults 0 0
设置完成后,重启系统,或者用mount -a 进行挂载
除了这种方法之外也可以使用UUID进行挂载,使用命令获取分区的UUID
[root@mufenggrow ~]# blkid /dev/sdb1
/dev/sdb1: UUID="37744f4c-2e85-4f17-9f24-52e6ac198576" TYPE="xfs"
然后在配置文件中写入:
UUID="37744f4c-2e85-4f17-9f24-52e6ac198576" /sdb1 xfs defaults 0 0
相当于只是把分区信息,改成了UUID的信息。