磁盘管理与文件系统
磁盘管理与文件系统
一.磁盘基础
磁盘结构
硬件的物理结构
盘片:硬盘有多个盘片,没盘片两面
磁头:每面一个磁头
硬盘的数据结构
扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据
磁道:同一盘片不同半径的同心圆
柱面:不同盘片相同半径构成的圆柱面
硬盘存储容量
磁盘储存容量=磁头数x磁道(磁面)数x每道扇区数x每道扇区数x每扇去字节数
可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域
磁盘接口类型
IDE、133mb/s,并行接口,早期家用电脑
SATA、6Gbps,SATA数据端口与电源端口是分开的,即需要两条线,一条数据一条电源线
SCSI、640/mb/s,并行接口,早期服务器
SAS、6Gbps,SAS是一整条,数据端口与电源端口是一体化的,SAS中是包括含供电线,而SATA中不包括含供电线。SATA标准其实是SAS标准的一个子集,二者可兼容,SATA硬盘可插入SAS主板上,翻之不行。
光纤通道
服务器硬盘大小
LFF:3.5英寸一般见到的台式机大小
SFF:small form Factor小形状因数,2.5寸,注意不同于2.5寸的笔记本硬盘
这里的L、S分别指的是大小,目前服务器或者盘柜采用sff规格的硬盘主要是考虑增大单位密度内的磁盘容量、增强散热、减小功耗
MBR磁盘分区表示
主引导记录(MBR:Master Boot Record)
MBR主引导记录字节数为446字节
MBR位于硬盘第一个物理扇区处
MBR中包含硬盘的主引导程序和硬盘分区表
分区表有4个分区及录区,每个分区及录区占16个字节
linux中将硬盘、分区等设备均表示为文件
/dev/hda5
dev:硬件设备所在的目录
hd:表示IDE设备 sd:表示SCSI设备
a:硬盘的顺序号,以字母a、b、c......表示
5:分区的顺序号,以数字1、2、3......表示
磁盘分区结构
硬盘中的主分区数目只有4个
主分区和扩展分区的序号限制在1~4
扩展分区再分逻辑分区
逻辑分区的序号将始终从5开始
二.文件系统类型
XFS文件系统
文件系统类型决定了向分区中存放、读取数据的方式和效率。
根据所记录的日志在很短的时间内迅速恢复磁盘文件内容
用优化算法,日志记录对整体文件操作影响非常小
是一个全64-bit的文件系统,最大可以支持8EB的文件系统,
而支持单个文件则达到8E能以接近裸设备I/O的性能存储
swap交换文件系统
swap交换分区是系统RAM的补充,swap 分区支持虚拟内存。当没有足够的RAM保存系统处理的数据时会将数据写入swap分区,当系统缺乏swap空间时,内核会因RAM内存耗尽而终止进程。配置过多swap空间会造成存储设备处于分配状态但闲置,造成浪费,过多swap空间还会掩盖内存不足。
FAT16、FAT32、
且最大只能支持32GB分区,单个文件也只能支持最大4GB。
3.1.4NTFS
NTFS文件系统所具备3个功能:错误预警功能、磁盘自我修复功能和日志功能,单个文件64GB
EXT4
Extended file system适用于那些分区容量不是太大,更新也不频繁的情况,例如/boot分区是ext文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳。创建和使用巨型文件(16TB)、最大1EB的文件系统,以及速度的提升1EB=1024PB=1024TB
JFS
主要是为满足服务器的高吞吐量和可靠性需求而设计、开发的。单个文件最大限制16TB, 该文件系统最大支持1 PB的容量。1PB=1024TB
三.检测并确认新硬盘
fdisk命令
查看或管理磁盘分区
fdisk -l [磁盘设备]
或
fdisk [磁盘设备]
交互模式中的常用指令
m:打印出菜单
p:打印出当前分区表
n:新建一个分区
d:删除一个分区
t:改变分区的属性、系统ID
w:保存
q:不保存退出
[root@localhost ~]# fdisk -l /dev/sda #查看磁盘分区
#这里不加-l的话则会显示所有磁盘
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0002e26d
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 31475711 14688256 8e Linux LVM
device:分区的设备文件名称
Boot:是否是引导分区。若是,则有“*”标识。主系统
start:该分区在硬盘中的扇区起始位置
End:该分区在硬盘中的扇区结束位置
Blocks:分区的大小,以blocks(块)为单位。默块大小为1024字节
ID: 分区对应的系统ID号,83表示Linux中的默认分区(XFS或EXT4),8e表示LVM逻辑卷; Lvm是linux操作系统中对磁盘分区进行管理的一种逻辑机制。
System:分区类型 ,识别到新的硬盘后,就可以在该硬盘中建立新的分区了。
[root@localhost ~]# fdisk /dev/sda #管理分区
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p #打印出当前分区表
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0002e26d
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 31475711 14688256 8e Linux LVM
规划硬盘中的分区
步骤:
1.先添加硬盘,并让系统识别,可以重启,或者不重启的情况下输入一下命令
echo "- - - "> /sys/class/scsi_host/host0/scan
echo "- - - "> /sys/class/scsi_host/host1/scan
echo "- - - "> /sys/class/scsi_host/host2/scan
2.fdisk分区 方便使用,最大化硬盘性能
3.格式化后确定文件系统,Windows系统不格式化也无法使用
4.挂载
添加硬盘
1.首先点击设置
2.点击硬盘添加
3.点击硬盘下一步
5.下一步
6.下一步
7.完成
最后一步点击确定
这个时候我们添加的硬盘系统并不识别
[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 14G 0 part
├─centos-root 253:0 0 10G 0 lvm /
└─centos-swap 253:1 0 4G 0 lvm [SWAP]
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
这是可以重启或者刷新接口
[root@localhost ~]# echo "- - -"> /sys/class/scsi_host/host0/scan
[root@localhost ~]# echo "- - -"> /sys/class/scsi_host/host1/scan
[root@localhost ~]# echo "- - -"> /sys/class/scsi_host/host2/scan
[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 14G 0 part
├─centos-root 253:0 0 10G 0 lvm /
└─centos-swap 253:1 0 4G 0 lvm [SWAP]
sdb 8:16 0 5G 0 disk #这时可以看到硬盘出来了
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
分区
[root@localhost ~]# fdisk /dev/sdb#分区交互界面
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xcd7049f3 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type: #选择分区类型
p primary (0 primary, 0 extended, 4 free)#这里可以看到0个主分区0个扩展分区还有四个剩余
e extended #扩展分区
Select (default p): #回车默认p选择主分区
Using default response p
分区号 (1-4,默认 1): #回车默认序列号为1
起始 柱面 (1-652,默认为 1):
将使用默认值 1
Last 柱面, +柱面 or +size{K,M,G} (1-652,默认为 652):+3G
分区 1 已设置为 Linux 类型,大小设为 3 GiB
命令(输入 m 获取帮助):p #打印出当前分区表
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 柱面 of 16065 * 512 = 8225280 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xa04201e5
设备 Boot Start End Blocks Id System
/dev/sdb1 1 394 3155968 83 Linux
命令(输入 m 获取帮助):w #保存
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# ll /dev/sd*显示dev目录下以sd开头的文件
brw-rw----. 1 root disk 8, 0 2月 22 21:07 /dev/sda
brw-rw----. 1 root disk 8, 1 2月 22 21:07 /dev/sda1
brw-rw----. 1 root disk 8, 2 2月 22 21:07 /dev/sda2
brw-rw----. 1 root disk 8, 16 2月 22 21:44 /dev/sdb
brw-rw----. 1 root disk 8, 17 2月 22 21:44 /dev/sdb1
#这里可以看到刚分的区出来了
这时这个分区还不可以用,还未指定文件系统
[root@localhost ~]# mkfs -t xfs /dev/sdb1#给sdb1#对新建的分区进行格式化
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=197248 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=788992, 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 mnt]# mount /dev/sdb1 /mnt#挂载
[root@localhost mnt]#查看挂载
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/centos-root 10475520 5112844 5362676 49% /
devtmpfs 991324 0 991324 0% /dev
tmpfs 1007236 0 1007236 0% /dev/shm
tmpfs 1007236 9212 998024 1% /run
tmpfs 1007236 0 1007236 0% /sys/fs/cgroup
/dev/sda1 1038336 182364 855972 18% /boot
tmpfs 201448 24 201424 1% /run/user/0
/dev/sr0 4414592 4414592 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb1 3145728 32944 3112784 2% /mnt
#这可以看到已经挂载上去了
mkfs命令
Make Filesystem,创建文件系统(格式化)
命令格式
mkfs -t 文件系统类型 分区设备
[root@localhost ~]# mkfs -t xfs /dev/sdb1#给sdb1#对新建的分区进行格式化
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=197248 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=788992, 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
mkswap命令
make swap,创建交换文件系统
格式:
mkswap 分区设备
示例
[root@localhost mnt]# fdisk /dev/sdc#进入分区交互界面
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x6f050ae5 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n#新建分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-10485759,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+3G
分区 1 已设置为 Linux 类型,大小设为 3 GiB
命令(输入 m 获取帮助):p #打印出当前分区表
磁盘 /dev/sdc:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6f050ae5
设备 Boot Start End Blocks Id System
/dev/sdc1 2048 6293503 3145728 83 Linux
命令(输入 m 获取帮助):t #改变分区的属性、系统ID
已选择分区 1
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/sdc:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6f050ae5
设备 Boot Start End Blocks Id System
/dev/sdc1 2048 6293503 3145728 82 Linux swap / Solaris
命令(输入 m 获取帮助):w #保存
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost mnt]# mkswap /dev/sdc1#格式化
正在设置交换空间版本 1,大小 = 3145724 KiB
无标签,UUID=af58d1e8-f098-4297-a828-bcae99de6f6a
[root@localhost mnt]# free -h #查看swap分区
total used free shared buff/cache available
Mem: 1.9G 642M 811M 9.3M 512M 1.1G
Swap: 4.0G 0B 4.0G
[root@localhost mnt]# swapon /dev/sdc1 #开启交换分区
[root@localhost mnt]# free -h
total used free shared buff/cache available
Mem: 1.9G 644M 809M 9.3M 512M 1.1G
Swap: 7.0G 0B 7.0G#对比上一个明显变大
[root@localhost mnt]# swapoff /dev/sdc1 #关闭交换分区
[root@localhost mnt]# free -h
total used free shared buff/cache available
Mem: 1.9G 642M 811M 9.3M 512M 1.1G
Swap: 4.0G 0B 4.0G
挂载、卸载文件系统
mount命令
挂载文件系统、ios镜像指定文件
格式:
mount [-t类型] 储存设备 挂载点目录
mount -o loop IOS镜像文件 挂载点目录
umount命令
卸载已挂载的文件系统
格式:
umount 存储设备位置
umount 挂载点目录
设置文件系统的自动挂载
/etc/fstab配置文件
包含需要开机后自动挂载的文件系统记录
[root@localhost ~]# vim /etc/fstab #打开配置文件
/dev/mapper/centos-root / xfs defaults 0 0
# 分区 挂载点 文件系统类型
第1字段:设备名或设备卷标名。
第2字段:文件系统的挂载点目录的位置。
第3字段:文件系统类型,如XFS、swap等。
第4字段:挂载参数,即mount 命令“-o”选项后可使用的参数。例如,defaults、 rW、ro、 noexec 分别表示默认参数、可写、只读、禁用执行程序。
第5字段:表示文件系统是否需要dump 备份(dump 是一-个备份工具)。一般设为1时表示需要,设为0时将被dump忽略
第6字段:该数字决定在系统启动时进行磁盘检查的顺序。0表示不进行检查,1表示优先检查,2表示其次检查。根分区应设为1, 其他分区设为2。
示例
[root@localhost ~]# vim /etc/fstab #打开配置文件
/dev/sdb1/ /data/ cfs defaults 0 0
[root@localhost ~]# mount -a #检查挂载是否正确
mount: 未知的文件系统类型“cfs” #这里可以看到报错配置文件写错了
[root@localhost ~]# vim /etc/fstab #打开配置文件修改一下
/dev/sdb1/ /data/ xfs defaults 0 0
[root@localhost ~]# mount -a #这里可以看到没报错
[root@localhost ~]# df -h #这个命令可以查看挂载信息可以看到已经挂载好了
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 10G 3.7G 6.4G 37% /
devtmpfs 969M 0 969M 0% /dev
tmpfs 984M 0 984M 0% /dev/shm
tmpfs 984M 9.2M 975M 1% /run
tmpfs 984M 0 984M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 197M 4.0K 197M 1% /run/user/42
tmpfs 197M 48K 197M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb1 20M 1.3M 18M 7% /data
[root@localhost ~]# reboot #重启一下看是否开机自动挂载
Connection closing...Socket close.
Connection closed by foreign host.
Disconnected from remote host(centos7-1) at 14:46:37.
Type `help' to learn how to use Xshell prompt.
[C:\~]$
Connecting to 192.168.88.10:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
Last login: Wed Feb 23 14:47:16 2022
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 10G 3.7G 6.4G 37% /
devtmpfs 969M 0 969M 0% /dev
tmpfs 984M 0 984M 0% /dev/shm
tmpfs 984M 9.1M 975M 1% /run
tmpfs 984M 0 984M 0% /sys/fs/cgroup
/dev/sdb1 20M 1.3M 18M 7% /data #这里可以看到已自动挂载
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 197M 4.0K 197M 1% /run/user/42
tmpfs 197M 16K 197M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64