硬盘的物理结构
● 盘片:硬盘有多个盘片,每盘片2面
● 磁头:每面一个磁头
硬盘的数据结构
● 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据,硬盘的最小存储单位。
● 磁道:同一盘片不同半径的同心圆,是由磁头在盘片表面划出的圆形轨迹。
● 柱面:不同盘片相同半径构成的圆柱面,由同一半径圆的多个磁道组成。
硬盘存储容量=磁头数 × 磁道(柱面)数 x 每道扇区数 × 每扇区字节数(512字节)
可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域
磁盘接口类型
● IDE、SATA、SCSI、SAS、光纤通道
接口类型 | 功能特性 |
---|---|
IDE | 并口数据线连接主板与硬盘,抗干扰性太差,且排线占用空间较大,不利于电脑内部散热,已逐渐被SATA所取代 |
SATA | 抗干扰性强,支持热插拔等功能,速度快,纠错能力强 |
SCSI | 小型机系统接口,SCSI硬盘广为工作站级个人电脑以及服务器所使用,资料传输时CPU占用率较低,转速快,支持热插拔等 |
SAS | 是新一代的SCSI技术,和SATA硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到6Gb/s |
主引导记录(MBR: Master Boot Record)
MBR位于硬盘第一个物理扇区处
MBR中包含硬盘的主引导程序和硬盘分区表
● 分区表有4个分区记录区,每个分区记录区占16个字节
● Linux中将硬盘、分区等设备均表示为文件
硬盘中的主分区数目只有4个
主分区和扩展分区的序号限制在1~4
扩展分区再分为逻辑分区
逻辑分区的序号将始终从5开始
● 存放文件和目录数据的分区
● 高性能的日志型文件系统,特别擅长于处理大文件,可支持上百万TB的存储空间
● CentOS 7系统中默认使用的文件系统
● 为Linux系统建立交换分区
● 一般设置为物理内存的1.5~2倍
Linux支持的其它文件系统类型
● EXT4、FAT32、NTFS、LVM
注意:
CentOS 6默认使用的文件系统是EXT4/3; CentOS 7默认使用的文件系统是XFS.
fdisk命令
查看或管理磁盘分区
fdisk -l [磁盘设备] 或 fdisk [磁盘设备]
交互模式中的常用指令
m、p、n、d、t、 w、q
[root@clr ~]# fdisk -l (/dev/sda) #查看系统中磁盘分区情况,sd表示使用SCSI设备
磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00099d02
设备 Boot Start End Blocks(块大小) Id(系统对应ID号) System(系统类型)
/dev/sda1 *(引导分区) 2099200 79771647 38836224 83 Linux
/dev/sda2 117698560 125829119 4065280 5 Extended
/dev/sda5 117700608 125829119 4064256 82 Linux swap / Solaris(交换分区)
新增一块硬盘,步骤如下所示:
设置——硬盘——添加;
硬盘,然后选择下一步;
修改磁盘大小为40GB;
最后确定即可;
重启reboot,刷新后查看新增加的硬盘分区情况;
[root@clr ~]# fdisk -l
磁盘 /dev/sdb:42.9 GB, 42949672960 字节,83886080 个扇区 #新增加的第二块硬盘sdb,b代表是第二块
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00099d02
设备 Boot Start End Blocks Id System
/dev/sda1 * 2099200 79771647 38836224 83 Linux
/dev/sda2 117698560 125829119 4065280 5 Extended
/dev/sda5 117700608 125829119 4064256 82 Linux swap / Solaris
在线刷新磁盘分区情况;
[root@clr ~]# echo "- - -" > /sys/class/scsi_host/host0/scan #在线刷新磁盘命令
[root@clr ~]# echo "- - -" > /sys/class/scsi_host/host1/scan
[root@clr ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
[root@clr ~]# fdisk -l
磁盘 /dev/sdb:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00099d02
设备 Boot Start End Blocks Id System
/dev/sda1 * 2099200 79771647 38836224 83 Linux
/dev/sda2 117698560 125829119 4065280 5 Extended
/dev/sda5 117700608 125829119 4064256 82 Linux swap / Solaris
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区 #新增加的第三块磁盘分区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
将磁盘 /dev/sdb再次分区;
将新硬盘分好区以后,还需要对分区进行格式化(即创建文件系统),并挂载到Linux系统中的指定目录下,然后才能用于存储文件、目录等数据。
[root@clr ~]# ls /sbin/mkfs* #查看以mkfs开头的所有文件
/sbin/mkfs /sbin/mkfs.cramfs /sbin/mkfs.ext3 /sbin/mkfs.fat /sbin/mkfs.msdos /sbin/mkfs.xfs
/sbin/mkfs.btrfs /sbin/mkfs.ext2 /sbin/mkfs.ext4 /sbin/mkfs.minix /sbin/mkfs.vfat
mkfs -t xfs [指定分区]:将指定分区格式化为xfs类型;
[root@clr ~]# mkfs -t
btrfs cramfs ext2 ext3 ext4 fat minix msdos vfat xfs
[root@clr ~]# mkfs -t xfs /dev/sdb1 #将/dev/sdb指定为xfs类型的文件系统
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=1310720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242880, 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.ext4 [指定分区]:将指定分区格式化为ext4类型;
[root@clr ~]# mkfs.
mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs
[root@clr ~]# mkfs.ext4 /dev/sdb5 #将/dev/sdb5指定为ext4类型的文件系统
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: 完成
mkswap命令
mkswap [分区设备]:为指定交换分区格式化文件系统;
[root@clr ~]# mkswap /dev/sdc1 #为交换分区/dev/sdc1创建文件系统
正在设置交换空间版本 1,大小 = 5242876 KiB
无标签,UUID=90f22d9c-46b4-4faa-a4ae-7ee42ee0a439
free -m :查看系统内存情况,-m统一单位,以兆为单位查看内存
[root@clr ~]# free -m #查看系统内存情况,-m统一单位,以兆为单位查看内存
total used free shared buff/cache available
Mem: 3931 772 2446 17 713 2921
Swap: 3968 0 3968
free -h :以人性化方式,查看内存情况
[root@clr ~]# free -h #以人性化方式,查看内存情况
total used free shared buff/cache available
Mem: 3.8G 772M 2.4G 17M 713M 2.9G
Swap: 3.9G 0B 3.9G
swapon [分区设备]:启用新增加的交换分区;
[root@clr ~]# swapon /dev/sdc1 #启用新增加的交换分区/dev/sdc1
[root@clr ~]# free -m
total used free shared buff/cache available
Mem: 3931 775 2442 17 713 2917
Swap: 9088 0 9088
[root@clr ~]# free -h
total used free shared buff/cache available
Mem: 3.8G 775M 2.4G 17M 713M 2.8G
Swap: 8.9G 0B 8.9G
swapon -s:查看系统中的交换分区由哪几个设备提供;
[root@clr ~]# swapon -s #查看系统中的交换分区由哪几个设备提供
文件名 类型 大小 已用 权限
/dev/sda5 partition 4064252 0 -2
/dev/sdc1 partition 5242876 0 -3
swapoff [分区设备]:停用指定的交换分区设备;
[root@clr ~]# swapoff /dev/sdc1 #停用指定的交换分区设备/dev/sdc1
[root@clr ~]# swapon -s #查看系统中的交换分区由哪几个设备提供
文件名 类型 大小 已用 权限
/dev/sda5 partition 4064252 0 -2
swapoff -a :停用系统中所有的交换分区;
[root@clr ~]# swapoff -a #停用系统中所有的交换分区
[root@clr ~]# free -h #查看系统中的交换分区由哪几个设备提供
total used free shared buff/cache available
Mem: 3.8G 771M 2.4G 17M 714M 2.9G
Swap: 0B 0B 0B #此时可以看到洗系统中的交换分区为0
mount命令
[root@clr ~]# mkdir /data1
[root@clr ~]# ls /
admin boot dev home lib64 mnt proc run srv tmp var
bin data1 etc lib media opt root sbin sys usr
[root@clr ~]# mount /dev/sdb1 /data1/ #将/dev/sdb1硬盘分区挂载到/data1目录下
[root@clr ~]# df #查看磁盘挂载情况
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 1997348 0 1997348 0% /dev
tmpfs 2013076 0 2013076 0% /dev/shm
tmpfs 2013076 12736 2000340 1% /run
tmpfs 2013076 0 2013076 0% /sys/fs/cgroup
/dev/sda1 38817264 5684776 33132488 15% /
tmpfs 402616 24 402592 1% /run/user/0
/dev/sr0 4600876 4600876 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb1 20961280 32992 20928288 1% /data1 #已成功将/dev/sdb1 挂载到/data1目录下
mount -o loop [ISO镜像文件] [挂载点目录]:将镜像文件挂载到指定目录;
[root@clr /mnt]# cd /opt #切换到/opt目录
[root@clr /opt]# mount -o loop CentOS-7-x86_64-DVD-2009-7.9.iso /mnt #将镜像文件挂载到指定目录/mnt
mount: /dev/loop0 写保护,将以只读方式挂载
[root@clr /opt]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 13M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda1 38G 9.4G 28G 26% /
tmpfs 394M 12K 394M 1% /run/user/42
tmpfs 394M 0 394M 0% /run/user/0
/dev/sdb1 20G 33M 20G 1% /data
/dev/sdb5 9.8G 37M 9.2G 1% /data2
/dev/loop0 4.4G 4.4G 0 100% /mnt #此处查看可以看到,镜像文件已经挂载成功
[root@clr /opt]# cd /mnt #切换到挂载点所在目录
[root@clr /mnt]# ls #查看,以下都是新挂载的ISO镜像文件
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
umount -lf [挂载点目录]:表示强制卸载指定目录;
[root@clr /mnt]# cd /data
[root@clr /data]# umount /data
umount: /data:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以
找到有关使用该设备的进程的有用信息)
[root@clr /data]# umount -lf /data
[root@clr /data]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 13M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda1 38G 9.4G 28G 26% /
tmpfs 394M 12K 394M 1% /run/user/42
tmpfs 394M 0 394M 0% /run/user/0
/dev/sdb5 9.8G 37M 9.2G 1% /data2
/dev/loop0 4.4G 4.4G 0 100% /mnt
通过配置文件方式,实现永久挂载;
#
# /etc/fstab
# Created by anaconda on Thu Mar 23 00:41:12 2023
#
# 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
#
UUID=bafe91da-4fb0-4d72-b66e-4f98f1645b49 / xfs defaults 0 0
UUID=54c26300-4b67-4510-a83f-07da2560c5a8 swap swap defaults 0 0
/dev/sdb1 /data xfs defaults 0 0
UUID=b53750a3-dacd-490e-8efd-d57c7f079ab9 /data2 ext4 defaults 0 0
/dev/sr0 /mnt iso9660 defaults 0 0
用于存放开机自动执行命令的文件;
[root@clr /]# vim /etc/fstab #将需要开机自启动的参数放置在/etc/fstab文件中
[root@clr /]# vim /etc/profile
[root@clr /]# vim ~/.bash_profile
[root@clr /]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 4月 5 17:34 /etc/rc.local -> rc.d/rc.local
[root@clr /]# vim /etc/rc.local
[root@clr /]# chmod +x /etc/rc.d/rc.local
[root@clr /]# ll !$ #能够自动识别上条命令中的最后一个字段/一列内容
df命令
df [选项] [文件]
示例
lsblk:查看当前所有分区设备的挂载情况;
[root@clr /data]# lsblk #lsblk:查看当前所有分区设备的挂载情况;
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 37G 0 part /
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 3.9G 0 part [SWAP] #交换分区
sdb 8:16 0 40G 0 disk
├─sdb1 8:17 0 20G 0 part /data #sdb1挂载到/data目录下
├─sdb2 8:18 0 1K 0 part
└─sdb5 8:21 0 10G 0 part /data2 #sdb5挂载到/data2目录下
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 5G 0 part [SWAP]
sr0 11:0 1 4.4G 0 rom
loop0 7:0 0 4.4G 0 loop /mnt #镜像文件挂载到/mnt目录下