## 需要掌握的内容
- 掌握fdisk命令的用法
- 能理解并熟练地划分磁盘分区
- 能掌握分区的格式化与挂载使用
## 使用的设备
VMware workstation
CentOS7
准备工作
为虚拟机先挂载一块磁盘,大小为10G
挂载完成之后开启虚拟机
# 首先我们先认识linux系统下的磁盘基本操作
1.磁盘分区
硬盘在使用前需要对其进行分区,磁盘分区原理与规则如下:
- 磁盘分区类型
主分区,扩展分区,逻辑分区
- 分区规则
- 主分区+扩展分区的数量不能超过4个,且扩展分区只能有1个。逻辑分区要在扩展分区之上进行划分,逻辑分区没有数量限制,可以任意个。
- 扩展分区是不能直接用的,他是以逻辑分区的方式来使用的,所以说扩展分区可分成若干逻辑分区。他们的关系是包含的关系,所有的逻辑分区都是扩展分区的一部分。
- 硬盘的容量=主分区的容量+扩展分区的容量;扩展分区的容量=各个逻辑分区的容量之和
- 磁盘分区的命名方式
对于SCSI接口类型的硬盘,在Linux中用sd来标识,而IDE硬盘是属于IDE接口类型的硬盘,在Linux中用hd来标识。
在Linux中,不同硬盘的命名规则如下:
第一块SCSI接口类型硬盘:/dev/sda
第二块SCSI接口类型硬盘:/dev/sdb
第一块IDE接口类型硬盘:/dev/hda
第二块IDE接口类型硬盘:/dev/hdb
关于硬盘的分区,一块硬盘最多只能有4个主分区或3个主分区加1个扩展分区,即序号1-4是留给主分区或扩展分区用的,主分区和扩展分区加起来最多只有4个,主分区与扩展分区是平级的。一块硬盘最多也只能有一个扩展分区,但扩展分区不能直接用来存放数据,需要把它划分为若干个逻辑分区。因此从上面可知,逻辑分区的编号一定是从5开始的。
在Linux中分区编号:
第一块SCSI接口类型硬盘的第1个分区:/dev/sda1
第一块SCSI接口类型硬盘的第5个分区:/dev/sda5
第一块IDE接口类型硬盘的第1个分区:/dev/hda1
第一块IDE接口类型硬盘的第5个分区:/dev/hda5
2.磁盘分区命令fdisk的用法
- fdisk命令用法Usage
fdisk [options] <disk> change partition table修改磁盘分区表
fdisk [options] -l <disk> list partition table(s) 显示分区表
fdisk -s <partition> give partition size(s) in blocks给出分区大小
- fdisk命令常用的选项Options
-b <size> sector size (512, 1024, 2048 or 4096) 指定扇区大小
-c[=<mode>] compatible mode: ‘dos’ or ‘nondos’ (default) 指定兼容模式
-h print this help text 显示帮助信息
-u[=<unit>] display units: ‘cylinders’ or ‘sectors’ (default)
-v print program version 显示程序版本
-C <number> specify the number of cylinders
-H <number> specify the number of heads
-S <number> specify the number of sectors per track
- fdisk命令参数
例如,执行fdisk /dev/sdb命令时出现如下界面:
[root@localhost ~]# fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0x57c121b3. Command (m for help):m #使用m显示帮助内容 Command action 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) Command (m for help):
下面是常用的命令动作:
p:打印分区表
n:新建一个新分区
d:删除一个新分区
q:退出不保存
w:退出且保存
若要创建分区,输入n,出现如下界面。p表示主分区,e表示扩展分区
Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended
3.与磁盘或分区有关的命令
- lsblk和blkid命令
lsblk 是一个 Linux 工具,它会显示有关你系统里所有可用块设备的信息。它从 sysfs 文件系统 中获取信息。默认情况下,这个工具将会以树状格式显示(除了内存虚拟磁盘外的)所有块设备。
blkid 命令是一个命令行工具,它可以显示关于可用块设备的信息。它可以识别一个块设备内容的类型(如文件系统、交换区)以及从内容的元数据(如卷标或 UUID 字段)中获取属性(如 tokens 和键值对)。它主要有两类作用:用指定的键值对搜索一个设备,或是显示一个或多个设备的键值对。
- 分区格式化命令mkfs.xfs
mkfs.xfs命令将分区格式化为一个XFS文件系统。具体命令格式可以参考该命令手册,如下:
[root@localhost ~]# man mkfs.xfs
将会显示内容:
mkfs.xfs(8) System Manager's Manual mkfs.xfs(8)
NAME
mkfs.xfs - construct an XFS filesystem
SYNOPSIS
mkfs.xfs [ -b block_size ] [ -m global_metadata_options ] [ -d data_section_options ] [ -f ]
[ -i inode_options ] [ -l log_section_options ] [ -n naming_options ] [ -p protofile ] [ -q
] [ -r realtime_section_options ] [ -s sector_size ] [ -L label ] [ -N ] [ -K ] device
mkfs.xfs -V
例如,运行命令 mkfs.xfs /dev/sdb1,将sdb1分区格式化为XFS文件系统。
- 挂载文件系统命令
命令使用格式:mount [-fnrsvw] [-t vfstype] [-o options] device dir
device:指明要挂载的设备;
(1) 设备文件:例如/dev/sdb1
(2) 卷标:-L ‘LABEL’, 例如 -L ‘MYDATA’
(3) UUID, -U ‘UUID’:例如 -U ‘0c50523c-43f1-45e7-85c0-a126711d406e’
(4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs
dir:挂载点
已存在的目录,例如/mnt,建议使用空目录
进程正在使用中的设备无法被卸载;
常用命令选项:
-t vsftype:指定要挂载的设备上的文件系统类型;
-r: readonly,只读挂载;
-w: read and write, 读写挂载;
-n: 不更新/etc/mtab;
-a:自动挂载所有支持自动挂载的设备;(定义在了/etc/fstab文件中,且挂载选项中有“自动挂载”功能)
-L ‘LABEL’: 以卷标指定挂载设备;
-U ‘UUID’: 以UUID指定要挂载的设备;
-B, –bind: 绑定目录到另一个目录上;
## 简单小操作
挂载磁盘
mount [块设备路径] [挂载点] umount [块设备路径] [挂载点] #解除挂载
查看机器上的块设备
[root@localhost ~]# 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 10G 0 disk sr0 11:0 1 5.9G 0 rom /run/media/admin/SSS_X64FREV_ZH-CN_DV9
查看磁盘使用情况
[root@localhost ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/centos-root 17811456 3842904 13968552 22% / devtmpfs 914560 0 914560 0% /dev tmpfs 931624 0 931624 0% /dev/shm tmpfs 931624 10716 920908 2% /run tmpfs 931624 0 931624 0% /sys/fs/cgroup /dev/sda1 1038336 182732 855604 18% /boot tmpfs 186328 4 186324 1% /run/user/42 tmpfs 186328 28 186300 1% /run/user/1000 tmpfs 186328 0 186328 0% /run/user/0 /dev/sr0 6154392 6154392 0 100% /run/media/admin/SSS_X64FREV_ZH-CN_DV9
# 尝试操作
1.对硬盘sdb创建一个主分区,分区大小为5G;将剩余磁盘空间全部分给第二个主分区。
[root@local ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x206c1f21.
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
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)
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p # 选择主分区
Partition number (1-4, default 1):
First sector (2048-20971519, default 2048): # 尽量不改动起始扇区
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519):+5G # 设定分区大小
Using default value 20971519
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help):w # 写入改动
# 查看改动
[root@local ~]# 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 10G 0 disk
└─sdb1 8:17 0 5G 0 part
sr0 11:0 1 5.9G 0 rom /run/media/admin/SSS_X64FREV_ZH-CN_DV9
2.查看分区信息
[root@40-zyz ~]# 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 10G 0 disk ├─sdb1 8:17 0 5G 0 part └─sdb2 8:18 0 5G 0 part sr0 11:0 1 5.9G 0 rom /run/media/admin/SSS_X64FREV_ZH-CN_DV9
3.请对磁盘分区进行格式化,文件系统类型为xfs。
[root@local ~]# mkfs.xfs -f /dev/sdb1 # 这里输入分区地址,使用了-f参数强制写入
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@local ~]# mkfs.xfs -f /dev/sdb2
meta-data=/dev/sdb2 isize=512 agcount=4, agsize=327616 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1310464, 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
4.创建两个目录作为磁盘分区挂载点:/mnt/sdb1和/mnt/sdb2。并且将两个磁盘分区分别挂载到挂载点,并查看文件系统磁盘使用情况。
[root@local ~]# mkdir /mnt/sdb1 [root@local ~]# mkdir /mnt/sdb2 [root@local ~]# mount /dev/sdb1 /mnt/sdb1 [root@local ~]# mount /dev/sdb2 /mnt/sdb2 [root@local ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/centos-root xfs 17G 3.7G 14G 22% / devtmpfs devtmpfs 894M 0 894M 0% /dev tmpfs tmpfs 910M 0 910M 0% /dev/shm tmpfs tmpfs 910M 11M 900M 2% /run tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/sda1 xfs 1014M 179M 836M 18% /boot tmpfs tmpfs 182M 4.0K 182M 1% /run/user/42 tmpfs tmpfs 182M 28K 182M 1% /run/user/1000 tmpfs tmpfs 182M 0 182M 0% /run/user/0 /dev/sr0 udf 5.9G 5.9G 0 100% /run/media/admin/SSS_X64FREV_ZH-CN_DV9 /dev/sdb1 xfs 5.0G 33M 5.0G 1% /mnt/sdb1 /dev/sdb2 xfs 5.0G 33M 5.0G 1% /mnt/sdb2
5.配置系统启动自动挂载
# 查看磁盘的UUID [root@local ~]# sudo blkid /dev/mapper/centos-root: UUID="1e13615b-2351-451a-81f1-716d18707930" TYPE="xfs" /dev/sda2: UUID="Y7HLA9-JxiM-KGat-xr9u-dxtK-gyqz-j76q4d" TYPE="LVM2_member" /dev/sr0: UUID="2018-02-02-23-05-47-00" LABEL="SSS_X64FREV_ZH-CN_DV9" TYPE="udf" /dev/sda1: UUID="0d34336c-0af5-4c6a-8a2f-f5baf651131d" TYPE="xfs" /dev/sdb1: UUID="7bf2d76f-41f7-4e88-bb36-a027454ab55a" TYPE="xfs" /dev/sdb2: UUID="cb8bfa4b-40f8-4b1d-9332-1ddb7f9c4bc5" TYPE="xfs" /dev/mapper/centos-swap: UUID="775aad85-0c05-4edb-8dc6-a80e02af7251" TYPE="swap" # 修改fstab文件 # 在/etc/fatab末尾加上 UUID 挂载路径 文件类型 defaults 0 0 # 查看挂载状态 [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 17G 3.7G 14G 22% / 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/sdb1 5.0G 33M 5.0G 1% /mnt/sdb1 /dev/sdb2 5.0G 33M 5.0G 1% /mnt/sdb2 /dev/sda1 1014M 179M 836M 18% /boot tmpfs 182M 4.0K 182M 1% /run/user/42 tmpfs 182M 20K 182M 1% /run/user/1000 /dev/sr0 5.9G 5.9G 0 100% /run/media/admin/SSS_X64FREV_ZH-CN_DV9 tmpfs 182M 0 182M 0% /run/user/0