1、fdisk是什么?
fdisk进行硬盘分区从实质上说就是对硬盘的一种格式化。当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了硬盘主引导记录(即MasterBootRecord,MBR)和引导记录备份的存放位置。而对于文件系统以及其他操作系统管理硬盘所需要的信息则是通过之后的高级格式化,即Format命令来实现。用一个形象的比喻,分区就好比在一张白纸上画一个大方框。而格式化好比在方框里打上格子。安装各种软件就好比在格子里写上字。分区和格式化就相当于为安装软件打基础,实际上它们为电脑在硬盘上存储数据起到标记定位的作用。
2、关于硬盘分区的介绍
硬盘的分区由主分区、扩展分区和逻辑分区组成;
主分区(包括扩展分区)的最大个数是四个;其中扩展分区也算一个主分区;
扩展分区可以继续划分为更多的逻辑分区;
所以主分区(包括扩展分区)范围是从1-4,逻辑分区是从5开始的;
3、 通过fdisk -l查看机器挂载的硬盘个数,及分区情况
[root@ localhost ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00042d23
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 26 124 786432 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3 124 2611 19979264 83 Linux
4、 使用fdisk对硬盘进行分区操作
命令格式:fdisk 设备
[root@ localhost ~]# fdisk /dev/sda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
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
t change a partition's system id # 改变分区类型,id/system值
u change display/entry units
v verify the partition table
w write table to disk and exit # 保存分区表,退出
x extra functionality (experts only) # 扩展功能,专家模式
1)列出当前操作磁盘分区情况,p
Command (m for help): p
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00042d23
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 26 124 786432 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3 124 2611 19979264 83 Linux
2) 删除一个分区,d
Command (m for help): d # 删除分区
Partition number (1-4): 4 # 指定要删除的分区编号,这里要删除sda4
Command (m for help): p # 再查看一下硬盘分区情况,看是否删除了?
# 如果不小心删错了,不要紧张,用q不保存退出;千万不要用w(write)
3)增加一个分区,n
Command (m for help): n # 增加一个分区
Command action
e extended # 扩展分区
p primary partition (1-4) # 主分区
e # 此处选择扩展分区,e,选择p为主分区
Partition number (1-4): 3 # 编号,此处为sda3
First cylinder (12404-31108, default 12404): # 开始cylinder值,就是Start值,默认即可
Using default value 12404
Last cylinder or +size or +sizeM or +sizeK (12404-31108, default 31108): +500M # 分区大小,此处为500M;
# 选默认则分配所有剩余空间
Command (m for help): w # 写入,保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks
# 创建扩展分区后,可以新建逻辑分区
Command (m for help): n
Command action
l logical (5 or over) # l,逻辑分区
p primary partition (1-4)
l
First cylinder (12405-27905, default 12405):
Using default value 12405
Last cylinder or +size or +sizeM or +sizeK (12405-27905, default 27905): +200M
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
4)指定分区类型,t
Command (m for help): t # 指定分区类型,t
Partition number (1-4): 3 # 要改变那个分区,这里选择sda3
Hex code (type L to list codes): l # 列出分区类型的id
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx
5 Extended 42 SFS 86 NTFS volume set da Non-FS data
6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt
9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access
a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT
1e Hidden W95 FAT1
Hex code (type L to list codes): 7 # 此处选择ntfs类型“7 HPFS/NTFS”
Changed system type of partition 5 to 7 (HPFS/NTFS)
Command (m for help): w # 写入,保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
5、对分区进行格式化操作
[root@localhost ~]# mkfs.ext3 /dev/sda1 # 格式化成ext3
[root@localhost ~]# mkfs.ext2 /dev/sda1 # 格式化成ext2
[root@localhost ~]# mkfs.vfat /dev/sda1 # 格式化成FAT32
实验
1、添加了一块20G的硬盘
2、对新添加的20G的分区,分成一个主分区5G
三个主分区,一个逻辑分区
[root@ localhost ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3
[root@ localhost ~]# fdisk /dev/sda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
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
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)
Command (m for help):
具体的创建分区步骤如下:
Command (m for help): p # 打印分区表
Command (m for help): n # 新建一个分区
Partition type:
p primary (2 primary, 0 extended, 2 free) p:主分区
e extended e:扩展分区
Select (default p): # 直接默认回车
Using default response p
Partition number (1,4, default 1): # 直接默认回车
First sector (1230848-41943039, default 1230848): # 直接默认 回车
Using default value 1230848
Last sector, +sectors or +size{K,M,G} (1230848-41943039, default 41943039): +5G # 输入分区大小
Partition 3 of type Linux and of size 1 GiB is set
Command (m for help): w # 保存退出
查看是否成功:
[root@ localhost ~]# ll /dev/sd* # 查看分区是否成功
brw-rw----. 1 root disk 8, 0 2月 26 13:53 /dev/sda
brw-rw----. 1 root disk 8, 1 2月 26 13:53 /dev/sda1
brw-rw----. 1 root disk 8, 2 2月 26 13:53 /dev/sda2
brw-rw----. 1 root disk 8, 16 2月 26 14:02 /dev/sdb
brw-rw----. 1 root disk 8, 17 2月 26 14:02 /dev/sdb1
# 如果查看完,没有,我们需要获取新的分区列表
[root@ localhost ~]# partprobe /dev/sdb
格式化:
centos7 : 文件系统:XFS
centos6: 文件系统: ext4
centos7
[root@ localhost ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1310720, 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@ localhost ~]# mkdir /sdb1
[root@ localhost ~]# mount /dev/sdb1 /sdb1
查看是否已经负载
[root@ localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.9G 0 1.9G 0% /dev
/dev/mapper/centos-root 17G 4.7G 13G 28% /
/dev/sda1 1014M 219M 796M 22% /boot
/dev/sdb1 5.0G 33M 5.0G 1% /sdb1
问题: 如果出现以下报错的原因是什么?
[root@ localhost ~]# umount /sdb1
umount: /sdb1:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以
找到有关使用该设备的进程的有用信息)
问题原因: 占用的当前目录
解决方案:
1) 退出当前即可
开机自动挂载方案:
[root@ localhost ~]# vim /etc/fstab
/dev/sdb1 /sdb1 xfs defaults 0 0
/dev/sdb1 /sdb1 xfs defaults 0 0
# 要挂载的分区设备 挂载点 文件系统类型 挂载选项 是否备份 是否检测
测试:
方法1:使用umount挂载
1)卸载/sdb1
[root@ localhost ~]# umount /sdb1
2)自动挂载
[root@ localhost ~]# mount -a # 自动挂载
[root@ localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.9G 0 1.9G 0% /dev
/dev/sda1 1014M 219M 796M 22% /boo
/dev/sdb1 5.0G 33M 5.0G 1% /sdb1
# 如果不用mount -a 直接重启一样可以自动挂载,所以叫开机自动挂载
方法2: 使用UUID挂载
1) 如何查看UUID
[root@ localhost ~]# blkid
/dev/mapper/centos-root: UUID="c3745653-7c33-4fb4-beff-49358c2a4ebc" TYPE="xfs"
/dev/sda2: UUID="uqpnLB-sEbq-7IoX-k9bw-Lr9C-nnPS-ZPQQmc" TYPE="LVM2_member"
/dev/sda1: UUID="b5ac64e4-6d13-4bd7-b0dc-380931e688a9" TYPE="xfs"
/dev/sdb1: UUID="015b0dae-1e2c-46db-89e7-6b660ae36175" TYPE="xfs"
/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/centos-swap: UUID="dd9fc6d6-1beb-4eac-8189-e73c841d58a4" TYPE="swap"
2)挂载方式
[root@ localhost ~]# echo "UUID=015b0dae-1e2c-46db-89e7-6b660ae36175 /sb1 xfs defaults 0 0 " >> /etc/fstab
# 第四列:
关于/etc/fstab文件里,第四列文件系统参数
Async /sync : 设置是否为同步方式运行,默认async
auto/noauto : 当执行mount -a的时候,此文件被主动挂载,默认auto
rw/ro : 是否以只读 或者读写方式挂载
exec/noexec: 限制此文件系统是否能够进行执行操作
defaults : 同时具有以上参数的默认参数设置功能,默认参数设置samba nfs
# 第五列: 是否进行备份, 通常只有0或者1
0: 代表不要做备份
1 : 代表每天进行备份
2: 代表不定期的进行操作