一.磁盘基础
1.数据结构
扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据
磁道:同一盘片不同半径的同心圆
柱面:不同盘片相同半径构成的圆柱面
2.物理结构
盘片:硬盘有多个盘片,每盘片2面
磁头:每面一个磁头
3.存储容量(了解)
硬盘存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数
可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域
4.磁盘接口类型
IDE、SATA、SCSI、SAS、光纤通道
二.磁盘分区表示
1.MBR
MBR是主引导记录(Master Boot Record)
位于硬盘的第一个物理扇区处。
MBR中包含硬盘的主引导程序和硬盘分区表。
分区表有4个分区记录区,每个分区记录区占16个字节。
/dev/sda5 /dev/hda2
说明:
/dev 是硬件设备的文件所在的目录
sd表示是SCSI设备,hd表示IDE 设备
a表示硬盘的顺序号,以a,b,c依次排序
5表示分区的顺序号,以1,2,3排序
2.磁盘分区的结构
常见的硬盘可分为主分区,扩展分区和逻辑分区。
一块硬盘有可能全部都是主分区,最多4个。
主分区加扩展分区最多4个。
扩展分区里分逻辑分区,扩展分区是外壳不存在数据,数据主要存于逻辑分区内。
逻辑分区的序号始终从5开始。
3.文件系统类型
(1)XFS文件系统
存放文件和目录数据的分区
高性能的日志型文件系统
CentOS7系统中默认使用的文件系统
(2)SWAP,交换文件系统
为Linux系统建立交换分区
(3)Linux支持的其它文件系统类型
FAT16、FAT32、NTFS
EXT4、JFS…
4.管理磁盘及分区
(1)添加并检测确认新硬盘
虚拟机模拟添加硬盘,添加后需要重启。
重启后查看当前系统中所有硬盘设备及其分区的情况
fdisk -l
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:322.1 GB, 322122547200 字节,629145600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0009b660
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 6703103 3145728 82 Linux swap / Solaris
/dev/sda3 6703104 629145599 311221248 83 Linux
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sde:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
(2)规划硬盘中的分区
硬盘中创建删除更改分区使用fdisk命令,可以进入交互式设置页面
以对硬盘/dev/sdd 分区为例
fidsk /dev/sdd
[root@localhost ~]# fdisk /dev/sdd
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xbb987682 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):
输入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)
1)p指令-列出硬盘中的分区情况,查看分区表
没有分区情况下列表为空
命令(输入 m 获取帮助):p
磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xbb987682
设备 Boot Start End Blocks Id System
2) n指令-新建分区
新建分区包括主分区和扩展分区,p新建主分区,e新建扩展分区
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
新建2个主分区
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):2G
值超出范围。
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):2
起始 扇区 (4196352-41943039,默认为 4196352):
将使用默认值 4196352
Last 扇区, +扇区 or +size{K,M,G} (4196352-41943039,默认为 41943039):+2g
不支持的后缀:“g”。
支持:10^N: KB (千字节), MB (兆字节), GB (吉字节)
2^N: K (约千字节), M (约兆字节), G (约吉字节)
Last 扇区, +扇区 or +size{K,M,G} (4196352-41943039,默认为 41943039):+2G
分区 2 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):
创建1个扩展分区2个逻辑分区
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): e
分区号 (3,4,默认 3):4
起始 扇区 (8390656-41943039,默认为 8390656):
将使用默认值 8390656
Last 扇区, +扇区 or +size{K,M,G} (8390656-41943039,默认为 41943039):+2G
分区 4 已设置为 Extended 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 1 extended, 1 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (8392704-12584959,默认为 8392704):
将使用默认值 8392704
Last 扇区, +扇区 or +size{K,M,G} (8392704-12584959,默认为 12584959):+2G
值超出范围。
Last 扇区, +扇区 or +size{K,M,G} (8392704-12584959,默认为 12584959):+1G
分区 5 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 1 extended, 1 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 6
起始 扇区 (10491904-12584959,默认为 10491904):
将使用默认值 10491904
Last 扇区, +扇区 or +size{K,M,G} (10491904-12584959,默认为 12584959):
将使用默认值 12584959
分区 6 已设置为 Linux 类型,大小设为 1022 MiB
命令(输入 m 获取帮助):
完成后可以p指令再查看一下分区情况
命令(输入 m 获取帮助):p
磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xbb987682
设备 Boot Start End Blocks Id System
/dev/sdd1 2048 4196351 2097152 83 Linux
/dev/sdd2 4196352 6293503 1048576 83 Linux
/dev/sdd4 8390656 12584959 2097152 5 Extended
/dev/sdd5 8392704 10489855 1048576 83 Linux
/dev/sdd6 10491904 12584959 1046528 83 Linux
命令(输入 m 获取帮助):
3)d指令-删除分区
删除分区输入分区的序号
命令(输入 m 获取帮助):d
分区号 (1,2,4-6,默认 4):6
分区 6 已删除
命令(输入 m 获取帮助):
4)t指令-变更分区类型
t指令变更分区的ID号,不同类型的文件系统对应不同的ID号。swap文件系统ID号是82。
将主分区2变为swap分区
命令(输入 m 获取帮助):t
分区号 (1,2,4,5,默认 5):2
Hex 代码(输入 L 列出所有代码):L
0 空 24 NEC DOS 81 Minix / 旧 Linu bf Solaris
1 FAT12 27 隐藏的 NTFS Win 82 Linux 交换 / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 隐藏的 C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux 扩展 c7 Syrinx
5 扩展 41 PPC PReP Boot 86 NTFS 卷集 da 非文件系统数据
6 FAT16 42 SFS 87 NTFS 卷集 db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux 纯文本 de Dell 工具
8 AIX 4e QNX4.x 第2部分 8e Linux LVM df BootIt
9 AIX 可启动 4f QNX4.x 第3部分 93 Amoeba e1 DOS 访问
a OS/2 启动管理器 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad 休 eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 扩展 (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC
11 隐藏的 FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq 诊断 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 隐藏的 FAT16 <3 61 SpeedStor ab Darwin 启动 f2 DOS 次要
16 隐藏的 FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 隐藏的 HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST 智能睡眠 65 Novell Netware b8 BSDI swap fd Linux raid 自动
1b 隐藏的 W95 FAT3 70 DiskSecure 多启 bb Boot Wizard 隐 fe LANstep
1c 隐藏的 W95 FAT3 75 PC/IX be Solaris 启动 ff BBT
1e 隐藏的 W95 FAT1 80 旧 Minix
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”
命令(输入 m 获取帮助):
变更完成后p指令查看
命令(输入 m 获取帮助):p
磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 柱面 of 16065 * 512 = 8225280 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xbb987682
设备 Boot Start End Blocks Id System
/dev/sdd1 1 262 2097152 83 Linux
/dev/sdd2 262 524 2103296 82 Linux swap / Solaris
/dev/sdd4 524 786 2104320 5 Extended
/dev/sdd5 524 785 2102272 83 Linux
命令(输入 m 获取帮助):
5)w和q指令-退出fdisk分区工具
w指令是保存分区操作
q指令是不保存分区操作退出
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
三.管理文件系统
1.创建文件系统
mkfs命令工具格式化分区,mkswap命令格式化swap交换分区。
(1)mkfs命令
查看系统所有分区及分区类型
blkid
[root@localhost ~]# blkid
/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/sda1: UUID="193b25aa-faee-4342-a79b-4eb3e023d813" TYPE="xfs"
/dev/sda2: UUID="7f11b069-c75e-453e-a192-62c8dc883769" TYPE="swap"
/dev/sda3: UUID="0ce0ca4e-ddf3-474f-8a4e-a7ee517b5b81" TYPE="xfs"
lsblk -f 更详细
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 193b25aa-faee-4342-a79b-4eb3e023d813 /boot
├─sda2 swap 7f11b069-c75e-453e-a192-62c8dc883769 [SWAP]
└─sda3 xfs 0ce0ca4e-ddf3-474f-8a4e-a7ee517b5b81 /
sdb
sdc
sdd
├─sdd1
├─sdd2
├─sdd4
└─sdd5
sde
sr0 iso9660 CentOS 7 x86_64 2018-11-25-23-54-16-00 /run/media/root/CentOS 7 x86_64
1)创建xfs文件系统
centos7系统中默认使用xfs文件系统
mkfs -t xfs 分区设备
[root@localhost ~]# mkfs -t xfs /dev/sdd1
meta-data=/dev/sdd1 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
2)创建ext4文件系统
mkfs -t ext4 分区设备
[root@localhost ~]# mkfs -t ext4 /dev/sdd2
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131648 inodes, 525824 blocks
26291 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=538968064
17 block groups
32768 blocks per group, 32768 fragments per group
7744 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
创建后查看
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 193b25aa-faee-4342-a79b-4eb3e023d813 /boot
├─sda2 swap 7f11b069-c75e-453e-a192-62c8dc883769 [SWAP]
└─sda3 xfs 0ce0ca4e-ddf3-474f-8a4e-a7ee517b5b81 /
sdb
sdc
sdd
├─sdd1 xfs be9f4ade-f3a9-41c1-8acd-83ce58271edd
├─sdd2 ext4 b431d684-f210-4f4a-abf9-8f9698a353dd
├─sdd4
└─sdd5
sde
sr0 iso9660 CentOS 7 x86_64 2018-11-25-23-54-16-00 /run/media/root/CentOS 7 x86_64
(2)mkswap命令
创建交换文件系统
mkswap 分区设备
目标分区ID号要是82,如果不是82需要fdisk先进行交换分区。
[root@localhost ~]# blkid
/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/sda1: UUID="193b25aa-faee-4342-a79b-4eb3e023d813" TYPE="xfs"
/dev/sda2: UUID="7f11b069-c75e-453e-a192-62c8dc883769" TYPE="swap"
/dev/sda3: UUID="0ce0ca4e-ddf3-474f-8a4e-a7ee517b5b81" TYPE="xfs"
/dev/sdd1: UUID="be9f4ade-f3a9-41c1-8acd-83ce58271edd" TYPE="xfs"
/dev/sdd2: UUID="b91ec746-8bbf-4258-8d03-a2d1f081a897" TYPE="swap"
[root@localhost ~]# mkswap /dev/sdd2
mkswap: /dev/sdd2: warning: wiping old swap signature.
正在设置交换空间版本 1,大小 = 2103292 KiB
无标签,UUID=ed114f9a-cd02-4c4d-a67e-489b9218bd60
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 193b25aa-faee-4342-a79b-4eb3e023d813 /boot
├─sda2 swap 7f11b069-c75e-453e-a192-62c8dc883769 [SWAP]
└─sda3 xfs 0ce0ca4e-ddf3-474f-8a4e-a7ee517b5b81 /
sdb
sdc
sdd
├─sdd1 xfs be9f4ade-f3a9-41c1-8acd-83ce58271edd
├─sdd2 swap ed114f9a-cd02-4c4d-a67e-489b9218bd60
├─sdd4
└─sdd5
sde
sr0 iso9660 CentOS 7 x86_64 2018-11-25-23-54-16-00 /run/media/root/CentOS 7 x86_64
swapon 启用交换分区,swapoff停用交换分区
swapon -s 查看当前系统正在使用的swap分区情况有哪些
[root@localhost ~]# swapon /dev/sdd2
[root@localhost ~]# swapon -s
文件名 类型 大小 已用 权限
/dev/sda2 partition 3145724 0 -2
/dev/sdd2 partition 2103292 0 -3
查看内存
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 1819 792 155 28 870 763
Swap: 5125 0 5125
[root@localhost ~]# cat /proc/meminfo | grep -i "swaptotal"
SwapTotal: 3145724 kB
[root@localhost ~]# swapon /dev/sdd2
[root@localhost ~]# cat /proc/meminfo | grep -i "swaptotal"
SwapTotal: 5249016 kB
2.挂载卸载文件系统
挂载一个分区时必须指定一个目录作为挂载点,用户通过这个目录访问设备中的文件目录数据。
(1)挂载文件系统mount命令
新建目录tom,将设备/dev/sdd1 挂载到root/tom下
mkdir tom
mount /dev/sdd1 /root/tom
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 193b25aa-faee-4342-a79b-4eb3e023d813 /boot
├─sda2 swap 7f11b069-c75e-453e-a192-62c8dc883769 [SWAP]
└─sda3 xfs 0ce0ca4e-ddf3-474f-8a4e-a7ee517b5b81 /
sdb
sdc
sdd
├─sdd1 xfs be9f4ade-f3a9-41c1-8acd-83ce58271edd
├─sdd2 swap ed114f9a-cd02-4c4d-a67e-489b9218bd60 [SWAP]
├─sdd4
└─sdd5
sde
sr0 iso9660 CentOS 7 x86_64 2018-11-25-23-54-16-00 /run/media/root/CentOS 7 x86_64
[root@localhost ~]# mkdir tom
[root@localhost ~]# ls
11 123 145 195 22 33 a aa anaconda-ks.cfg b bb initial-setup-ks.cfg qq tom 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@localhost ~]# cd tom
[root@localhost tom]# pwd
/root/tom
[root@localhost tom]# cd
[root@localhost ~]# mount /dev/sdd1 /root/tom
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 193b25aa-faee-4342-a79b-4eb3e023d813 /boot
├─sda2 swap 7f11b069-c75e-453e-a192-62c8dc883769 [SWAP]
└─sda3 xfs 0ce0ca4e-ddf3-474f-8a4e-a7ee517b5b81 /
sdb
sdc
sdd
├─sdd1 xfs be9f4ade-f3a9-41c1-8acd-83ce58271edd /root/tom
├─sdd2 swap ed114f9a-cd02-4c4d-a67e-489b9218bd60 [SWAP]
├─sdd4
└─sdd5
sde
sr0 iso9660 CentOS 7 x86_64 2018-11-25-23-54-16-00 /run/media/root/CentOS 7 x86_64
说明 :
mount 挂载只是临时的,设备重启后就没有了,要永久生效,需要到/etc/fstab写入挂载配置并保存
vim /etc/fstab
写入
/dev/sdd1 /root/tom xfs defaults 0 0
挂盘如何永久挂载
mount /dev/sr0 /mnt
vim /etc/fstab
/dev/sr0 /mnt iso9660 defaults 0 0
wq保存
mount -a 挂载立即生效
(2)卸载文件系统umount命令
umount 设备名 或者mount挂载点
umount /dev/sdd1或者 umount /root/tom
(3)查看磁盘使用情况
df -Th
[root@localhost ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda3 xfs 297G 5.4G 292G 2% /
devtmpfs devtmpfs 895M 0 895M 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 197M 152M 45M 78% /boot
tmpfs tmpfs 182M 8.0K 182M 1% /run/user/42
tmpfs tmpfs 182M 36K 182M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdd1 xfs 2.0G 33M 2.0G 2% /root/tom