磁盘与文件系统管理-1
磁盘基础结构
基础结构
1.物理结构
盘片:硬盘有多个盘片,每个盘片两面。(Platter)
磁头:每面一个磁头。(Head)
2.数据结构
磁道:磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道(Track)。
扇区:每个磁道被等分为福哦干个弧段,这些弧段便是扇区(Sector)。扇区是磁盘的最小组成单元,通常是512字节,由于不断提高磁盘的大小,部分厂商设定每个扇区的大小是4096字节。
柱面:在多个盘片构成的盘组中,由不同盘片的面,但处于同一半径圆的多个磁道组成的一个圆柱面(Cylinder)。
3.存储容量
硬盘存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数。
4.磁盘读取响应时间
寻道时间:磁头从开始移动到数据所在磁道所需要的时间,寻道时间越短,I/O操作越快,目前磁盘的平均寻道时间一般在3-15ms,一般都在10ms左右。
旋转延迟:盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间,旋转延迟取决于磁盘转速。普通硬盘一般都是7200rpm,慢的5400rpm。
数据传输时间:完成传输所请求的数据所需要的时间。
5.扇区、块/簇、page
扇区:硬盘的最小读写单元
块/簇:是操作系统针对硬盘读写的最小单元
page:是内存与操作系统之间操作的最小单元。
扇区 <= 块/簇 <= page
6.硬盘接口
ATA(IDE):并口,抗干扰性太差,排线占用空间大,逐渐被SATA取代。
SATA:抗干扰性强,支持热拔插,速度快,纠错能力强。
SCSI:广为工作站级个人电脑以及服务器使用,资料传输时CPU占用率较低,转速快,支持热拔插。
SAS:新一代的SCSI技术,与SATA相同,都是采取序列式技术以获得更高的传输速度,可达6Gb/s。
MBR
MBR是主引导记录(Master Boot Record),位于硬盘第一个物理扇区处,MBR中包含硬盘的主引导程序和硬盘分区表。分区表中有4个分区记录区,每个分区记录区占16个字节。
磁盘分区
分区表示
IDE接口的设备表示为hdX形式,SCSI接口的设备表示为sdX形式。
X可以为a、b、c等,如第一个IDE设备表示为hda,第二个SCSI设备表示为sdb。
主分区和扩展分区序号为1~4,逻辑分区从5开始,扩展分区里分逻辑分区。如hda2,sdb5。扩展分区不可存数据,扩展分区中的逻辑分区可以存数据。
fdisk -l [磁盘设备]
[root@gh1 ~]# fdisk -l
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a4bde
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 25593855 12591104 8e Linux LVM
fdisk 交互模式
m:帮助
p:显示分区列表print
n:创建新分区new
d:删除分区delete
t:转化分区类型type,通过ID号。82swap、83ext4或xfs、bfat32。
l:列出所有分区类型
w:保存修改write
q:退出quit
磁盘分区实验
进入磁盘m显示帮助
[root@gh1 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xc2ed1850 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):m
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition(删除分区delete)
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(创建新分区new)
o create a new empty DOS partition table
p print the partition table(显示分区列表print)
q quit without saving changes(退出)
s create a new empty Sun disklabel
t change a partition's system id(转化分区类型type,通过ID号。82swap、83ext4或xfs、bfat32。)
u change display/entry units
v verify the partition table
w write table to disk and exit(保存)
x extra functionality (experts only)
创建3个主分区2G、2G、3G
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+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):
起始 扇区 (4196352-20971519,默认为 4196352):
将使用默认值 4196352
Last 扇区, +扇区 or +size{K,M,G} (4196352-20971519,默认为 20971519):+2G
分区 2 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
分区号 (3,4,默认 3):
起始 扇区 (8390656-20971519,默认为 8390656):
将使用默认值 8390656
Last 扇区, +扇区 or +size{K,M,G} (8390656-20971519,默认为 20971519):+3G
分区 3 已设置为 Linux 类型,大小设为 3 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x8770faa2
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 8390655 2097152 83 Linux
/dev/sdb3 8390656 14682111 3145728 83 Linux
剩下空间创建扩展分区
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e
已选择分区 4
起始 扇区 (14682112-20971519,默认为 14682112):
将使用默认值 14682112
Last 扇区, +扇区 or +size{K,M,G} (14682112-20971519,默认为 20971519):
将使用默认值 20971519
分区 4 已设置为 Extended 类型,大小设为 3 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7d3a28d1
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 8390655 2097152 83 Linux
/dev/sdb3 8390656 14682111 3145728 83 Linux
/dev/sdb4 14682112 20971519 3144704 5 Extended
分两个逻辑分区1G、2G
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (14684160-20971519,默认为 14684160):
将使用默认值 14684160
Last 扇区, +扇区 or +size{K,M,G} (14684160-20971519,默认为 20971519):+1G
分区 5 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 6
起始 扇区 (16783360-20971519,默认为 16783360):
将使用默认值 16783360
Last 扇区, +扇区 or +size{K,M,G} (16783360-20971519,默认为 20971519):
将使用默认值 20971519
分区 6 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):P
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7d3a28d1
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 8390655 2097152 83 Linux
/dev/sdb3 8390656 14682111 3145728 83 Linux
/dev/sdb4 14682112 20971519 3144704 5 Extended
/dev/sdb5 14684160 16781311 1048576 83 Linux
/dev/sdb6 16783360 20971519 2094080 83 Linux
更改sdb3为swap交换分区
命令(输入 m 获取帮助):t
分区号 (1-6,默认 6):3
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
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7d3a28d1
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 8390655 2097152 83 Linux
/dev/sdb3 8390656 14682111 3145728 82 Linux swap / Solaris
/dev/sdb4 14682112 20971519 3144704 5 Extended
/dev/sdb5 14684160 16781311 1048576 83 Linux
/dev/sdb6 16783360 20971519 2094080 83 Linux
删除sdb6分区
命令(输入 m 获取帮助):d
分区号 (1-6,默认 6):6
分区 6 已删除
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7d3a28d1
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 8390655 2097152 83 Linux
/dev/sdb3 8390656 14682111 3145728 82 Linux swap / Solaris
/dev/sdb4 14682112 20971519 3144704 5 Extended
/dev/sdb5 14684160 16781311 1048576 83 Linux
保存分区修改并退出
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
查看磁盘分区列表
[root@gh1 ~]# fdisk -l
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7d3a28d1
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 8390655 2097152 83 Linux
/dev/sdb3 8390656 14682111 3145728 82 Linux swap / Solaris
/dev/sdb4 14682112 20971519 3144704 5 Extended
/dev/sdb5 14684160 16781311 1048576 83 Linux
文件系统
文件系统
SWAP:交换文件系统,相当于虚拟内存。能够在一定程度上缓解物理内存不足的问题。
EXT4:第4代扩展文件系统,典型的日志型文件系统,保存有磁盘存取记录的日志数据,便于恢复,在存取性能和稳定性方面更加出色。
XFS:高性能的日志文件系统,擅长处理大文件,能识别PB级别的存储。由于文件系统开启日志功能,所以即使发生宕机也不怕数据遭到破坏,可根据日志记录在短时间内进行数据恢复。
创建文件系统
mkfs.文件系统类型 分区设备
格式化sdb1为xfs文件系统
[root@gh1 ~]# 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
mkfs -t 文件系统类型 分区设备
格式化sdb5为ext4文件系统
[root@gh1 ~]# mkfs -t ext4 /dev/sdb5
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
扩展 语法格式:lsblk[参数]
了解
常用参数:
-a显示所有设备
-b以bytes方式显示设备大小
-d不显示slaves或holders
-D print discard capabilities
-e排除设备
-f显示文件系统信息
-h显示帮助信息
-i use ascii characters only
-m显示权限信息
-l使用列表格式显示
-n不显示标题
-o输出列.
-P使用key="value"格式显示
-r使用原始格式显示
-t显示拓扑结构信息
df格式[ options]
df -Th常用
1.作用df命令用来检查文件系统的磁盘空间占用情况,使用权限是所有用户。
主要参数
了解
-s:对每个Names参数只给出占用的数据块总数。
-a:递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定一s,也不指定一a,则只显示NMames中的每一个目录及其中的各子目录所占的磁盘块数。
-k:以1024字节为单位列出磁盘空间使用情况。
-x:跳过在不同文件系统上的目录不予统计。
-l:计算所有的文件大小,对硬链接文件则计算多次。
-i:显示inode信息而非块使用量。
-h:以容易理解的格式印出文件系统大小,例如136KB、24MB、21GB。一P:使用POSIx输出格式。
-T:显示文件系统类型。
挂载
mount [-t 文件系统类型] 存储设备 挂载点
点击查看代码
[root@gh1 ~]# mkdir /mnt/guazai01
[root@gh1 ~]# mount /dev/sdb1 /mnt/guazai01/
[root@gh1 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 10G 4.5G 5.6G 45% /
devtmpfs devtmpfs 974M 0 974M 0% /dev
tmpfs tmpfs 991M 0 991M 0% /dev/shm
tmpfs tmpfs 991M 11M 981M 2% /run
tmpfs tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 xfs 197M 144M 54M 74% /boot
tmpfs tmpfs 199M 12K 199M 1% /run/user/42
tmpfs tmpfs 199M 0 199M 0% /run/user/0
/dev/sdb1 xfs 2.0G 33M 2.0G 2% /mnt/guazai01
umount卸载挂载
自动挂载
/etc/fstab
cat查看
点击查看代码
[root@gh1 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Jun 22 19:41:06 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=bf411dcd-88a9-4843-ade2-fbf89b329f8f /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
第一字段:设备名或设备卷标名。
第二字段:文件系统的挂载点目录的位置。
第三字段:文件系统类型,如ext4、xfs、swap等。
第四字段:挂载参数,如defaults默认、rw读写、ro只读、noexec禁止执行程序。
第五字段:表示文件是否需要dump备份,1需要,0忽略。
第六字段:决定系统启动时进行磁盘检查的顺序,0不进行,1优先,2其次。一般根分区设1,其他分区设2,或者都不设置。
vim编辑
[root@gh1 ~]# vim /etc/fstab
/dev/sdb1 /mnt/guazai01 xfs defaults 0 0
mount -a刷新永久挂载 或reboot重启
[root@gh1 ~]# mount -a
[root@gh1 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 10G 4.5G 5.6G 45% /
devtmpfs devtmpfs 974M 0 974M 0% /dev
tmpfs tmpfs 991M 0 991M 0% /dev/shm
tmpfs tmpfs 991M 11M 981M 2% /run
tmpfs tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 xfs 197M 144M 54M 74% /boot
tmpfs tmpfs 199M 12K 199M 1% /run/user/42
tmpfs tmpfs 199M 0 199M 0% /run/user/0
/dev/sdb1 xfs 2.0G 33M 2.0G 2% /mnt/guazai01