磁盘管理与文件系统
一.磁盘管理
1.1、磁盘结构
-
硬盘的物理结构:
- 盘头:硬盘有多个盘片,每盘片2面
- 磁头:每面一个磁头
-
硬盘的数据结构
-
扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据,是硬盘的最小存储单位
- 磁道:同一盘片不同半径的同心圆,是由磁头在盘片表面划出的圆形轨迹
- 柱面:不同盘片相同半径构成的圆柱面,由同一半径圆的多个磁道组成
硬盘存储容量=磁头数x磁道(柱面)数x每道扇区数x每扇区字节数
可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域
磁盘接口类型:IDE、SATA、SCSI、SAS、光纤通道
IDE——并口数据线连接主板与硬盘,抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被 SATA 所取代。
SATA——相对于IDE其散热性好,抗干扰性强,支持热插拔。
SCSI——SCSI硬盘广为工作站级个人电脑以及服务器所使用,CPU占用率小,转速快,支持热插拔等。
SAS——和SATA硬盘相同,转速(理论值)可达到 6Gb/s。
光纤通道——和SCSI接口一样光纤通道最初也不是为硬盘设计开发的接口技术,是专门为网络系统设计的,但随着存储系统对速度的需求,才逐渐应用到硬盘系统中。光纤通道的主要特性有:热插拔性、高速带宽、远程连接、连接设备数量大等。
1.2、MBR与磁盘分区表示
主引导记录:
- MBR位于硬盘第一个物理扇区处
- MBR中包含硬盘的主引导程序446bytes和硬盘分区表 (硬盘分区表有66bytes,512-446=66)
- 分区表有4个分区记录,每个记录区占16个字符 (66➗16≈4/font>
Linux中将硬盘、分区等设备均表示为文件
/dev/hda5,其中/dev代表硬件目录;hd代表IDE;a代表第一块硬盘;5代表分区
1.3、磁盘分区结构
- 硬盘中的主分区数目只有4个
- 主分区和扩展分区的序号限制在1~4
- 扩展分区再分为逻辑分区
- 逻辑分区的序号将始终从5开始
二.文件系统
2.1、文件系统类型
XFS文件系统:
- 存放文件和目录数据的分区
- 高性能的日志型文件系统
- CentOS 7系统中默认使用的文件系统
SWAP—交换文件系统: - 为Linux系统建立交换分区
- 一般设置为物理内存的1.5~2倍
Linux支持的其他文件系统类型: - FAT16、FAT32、NTFS
- EXT4、JFS
2.2、检测并确认新硬盘
fdisk:查看或管理磁盘分区格式:fdisk -l [磁盘设备]
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a32bf
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 209715199 103808000 8e Linux LVM
磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x9f4e1879
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 20973567 10485760 82 Linux swap / Solaris
/dev/sdb2 20973568 41945087 10485760 83 Linux
磁盘 /dev/mapper/centos-root:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-home:50.5 GB, 50457477120 字节,98549760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
不重启识别硬盘:
[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 ~]# cd /sys/class/scsi_host/
[root@localhost scsi_host]# ls
host0 host1 host2
[root@localhost scsi_host]# ll
总用量 0
lrwxrwxrwx. 1 root root 0 9月 7 14:41 host0 -> ../../devices/pci0000:00/0000:00:10.0/host0/scsi_host/host0
lrwxrwxrwx. 1 root root 0 9月 7 14:41 host1 -> ../../devices/pci0000:00/0000:00:07.1/ata1/host1/scsi_host/host1
lrwxrwxrwx. 1 root root 0 9月 7 14:41 host2 -> ../../devices/pci0000:00/0000:00:07.1/ata2/host2/scsi_host/host2
2.3、管理磁盘分区
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 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)
命令(输入 m 获取帮助):
演示:
[root@localhost opt]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x791f6494 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-125829119,默认为 2048):2048
Last 扇区, +扇区 or +size{K,M,G} (2048-125829119,默认为 125829119):+10G
分区 1 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost opt]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 5G 0 part /boot
└─sda2 8:2 0 84G 0 part
├─centos-root 253:0 0 80G 0 lvm /
└─centos-swap 253:1 0 4G 0 lvm [SWAP]
sdb 8:16 0 60G 0 disk
└─sdb1 8:17 0 10G 0 part
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
常用选项:n:新建一个分区 p:打印出当前分区表 d:删除一个分区 t:修改分区的系统id w:保持修改并退出
2.4、创建文件系统
mkfs -t 文件系统类型 格式化的分区或硬盘 例:mkfs -t xfs /dev/sdb1
mkfs.文件系统类型 格式化的分区或硬盘 例:mkfs.xfs /dev/sdb1
[root@localhost opt]# mkfs.
mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.fat mkfs.minix mkfs.msdos mkfs.vfat mkfs.xfs
[root@localhost opt]# mkfs.
mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.fat mkfs.minix mkfs.msdos mkfs.vfat mkfs.xfs
[root@localhost opt]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2621440, 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 opt]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 5G 0 part /boot
└─sda2 8:2 0 84G 0 part
├─centos-root 253:0 0 80G 0 lvm /
└─centos-swap 253:1 0 4G 0 lvm [SWAP]
sdb 8:16 0 60G 0 disk
└─sdb1 8:17 0 10G 0 part
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
2.5、创建文件系统
格式:mkswap 分区设备
swapon /dev/ sdb2 新增加的交换分区
swapoff /dev/ sdb2 停用指定的交换分区
swapon - s 查看每个分区的swap状态信息
free -h 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值
[root@localhost data]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):2
起始 扇区 (2048-125829119,默认为 2048):2048
Last 扇区, +扇区 or +size{K,M,G} (2048-125829119,默认为 125829119):+10G
分区 2 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x791f6494
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 20973567 10485760 0 Empty
/dev/sdb2 2048 20973567 10485760 83 Linux
命令(输入 m 获取帮助):t
分区号 (1,2,默认 2):2
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x791f6494
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 20973567 10485760 0 Empty
/dev/sdb2 2048 20973567 10485760 82 Linux swap / Solaris
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 636M 664M 9.3M 522M 976M
Swap: 4.0G 0B 4.0G
[root@localhost ~]# ls /dev/sdb2
/dev/sdb2
[root@localhost ~]# mkswap /dev/sdb2
mkswap: /dev/sdb2: warning: wiping old xfs signature.
正在设置交换空间版本 1,大小 = 10485756 KiB
无标签,UUID=77a53374-0957-4399-99af-892da7a57eb6
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 635M 664M 9.3M 522M 976M
Swap: 4.0G 0B 4.0G
[root@localhost ~]# swapon /dev/sdb2
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 643M 656M 9.3M 522M 968M
Swap: 13G 0B 13G
[root@localhost ~]#
三.挂载、卸载文件系统
3.1、挂载——mount
挂载文件系统、ISO镜像到指定文件夹
mount [-t 类型] 存储设备 挂载点目录
mount -o loop ISO镜像文件 挂载点目录
[root@localhost /]# mount /dev/sdb2 /data/
[root@localhost /]# de -Th
bash: de: 未找到命令...
相似命令是: 'ed'
[root@localhost /]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 50G 5.0G 46G 10% /
devtmpfs devtmpfs 897M 0 897M 0% /dev
tmpfs tmpfs 912M 0 912M 0% /dev/shm
tmpfs tmpfs 912M 9.1M 903M 1% /run
tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sdb2(挂载成功) xfs 10G 33M 10G 1% /mnt
/dev/sda1 xfs 1014M 179M 836M 18% /boot
/dev/mapper/centos-home xfs 47G 33M 47G 1% /home
tmpfs tmpfs 183M 24K 183M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
3.2、卸载——umount
[root@localhost /]# umount /dev/sdb2 /data/
[root@localhost /]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 50G 5.0G 46G 10% /
devtmpfs devtmpfs 897M 0 897M 0% /dev
tmpfs tmpfs 912M 0 912M 0% /dev/shm
tmpfs tmpfs 912M 9.1M 903M 1% /run
tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 179M 836M 18% /boot
/dev/mapper/centos-home xfs 47G 33M 47G 1% /home
tmpfs tmpfs 183M 24K 183M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
四.设置文件系统的自动挂载
/etc/fstab配置文件:
包含需要开机后自动挂载的文件系统记录
Linux 操作系统在每次开机时,会自动读取/etc/fstab文件的内容,自动挂载所指定的文件系统。
[root@localhost /]# vim /etc/fstab
# /etc/fstab
# Created by anaconda on Tue Aug 31 17:50:35 2021
#
# 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=406ffced-77a0-4384-808f-c0c8ecfd7029 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/cento-swap swap swap defaults 0 0r
/dev/sdb2 /mnt xfs defaults 0 0
[root@localhost /]# mount -a
重启后(reboot)自动挂载
还有一种方法使用UUID
[root@localhost /]# blkid
/dev/sda1: UUID="406ffced-77a0-4384-808f-c0c8ecfd7029" TYPE="xfs"
/dev/sda2: UUID="tK1pXy-2E8r-Algn-c4fH-TGh6-eMtR-rjzpIc" TYPE="LVM2_member"
/dev/sdb1: UUID="ac426b25-9154-49ac-8c30-cebfde6c120a" TYPE="swap"
/dev/sdb2: UUID="2e218a54-5784-421e-85f4-2a565b4bad5d" TYPE="xfs" (看sdb2的UUID)
/dev/sr0: UUID="2017-09-06-10-51-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/centos-root: UUID="3e19ef30-c297-45d6-a881-204539b6483a" TYPE="xfs"
/dev/mapper/centos-swap: UUID="8c62fc68-336e-4867-a7f1-42d63758cf4e" TYPE="swap"
/dev/mapper/centos-home: UUID="6ebc71f9-5171-44ae-91af-d587a6fb3e30" TYPE="xfs"
[root@localhost /]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Aug 31 17:50:35 2021
#
# 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=406ffced-77a0-4384-808f-c0c8ecfd7029 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/cento-swap swap swap defaults 0 0
UUID=2e218a54-5784-421e-85f4-2a565b4bad5d /mnt xfs defaults 0 0
[root@localhost /]# mount -a
重启后(reboot)自动挂载