一、认识硬盘
1、物理组成
磁头(head):对硬盘进行读写操作
磁道(Track):硬盘转一圈所画的圆就是磁道
磁柱(Cylinder):两个磁盘上的同一个磁道就是一个磁柱
磁盘分区(partition):磁柱也就是磁盘分区
扇区(sector):磁盘上最小的物理存储单元
2、磁盘分区
记录起始与结束磁柱
MBR(Master boot Recorder):主要启动扇区,只能记录4个partition的信息。partition(P)和extended(E)最多只能有4个。3P+1E
3、文件系统
每个partition就是一个文件系统,
逻辑区块(Block):partition进行filesystem的格式化时,所指定的最小存储单元。一个Block最多只能存储一个文件
Superblock:每个文件系统开始位置的Block称为superblock,用于记录文件系统的大小,空闲block等信息
4、linux的文件系统(inode)
文件包括文件数据和元数据
linux标准文件系统ext2,使用iNode和block分别存储元数据和文件数据
inode:元数据
block:文件数据
读取文件内容的流程,以/etc/crontab为例:
1、操作系统根据根目录( / )的相关资料可取得 /etc 这个目录所在的 inode ,并前往读取 /etc 这个目录的所有相关属性;
2、根据 /etc 的 inode 的资料,可以取得 /etc 这个目录底下所有档案的关连数据是放置在哪一个 Block 当中,并前往该 block 读取档案的关连性内容;
3、由上个步骤的 Block 当中,可以知道 crontab 这个档案的 inode 所在地,并前往该 inode ;
4、由上个步骤的 inode 当中,可以取得 crontab 这个档案的所有属性,并且可前往由 inode 所指向的 Block 区域,顺利的取得 crontab 的档案内容。
5、查看硬盘或目录的容量
命令:
df:查看已挂载磁盘总容量,使用量与inode等
-i:使用i-nodes显示结果
-k:使用KBytes显示结果
-m:使用MBytes显示结果
du:查看档案使用掉的量
-s:列出目录占的总量
-k:列出的值以KB输出
-m:列出的值以MB输出
-b:列出的值以byte输出
6、连接文件
硬连接(Hard link)
Hard Link在某个目录下新增一个该档案的关连数据
Hard link是在同一个partition上进行数据关联的建立
缺点:Hard link不能跨Filesystem
不能link目录
软连接(Symbolic Link)
软连接是建立一个独立的档案,这个档案会指向它link的档案。
命令:
ln [-s] [来源档] [目的档]
-s:提供Symbolic link的连接
不加任何参数就是Hard link
7、检查硬盘坏轨与数据同步化写入
fsck:检查硬盘有没有坏轨
-A:依据/etc/fstab的内容,将所有的装置都扫描一次
-a:自动修复检查到的有问题的扇区
-r:交互式修复检查到的有问题扇区
sync:内存中的数据同步写入磁盘
二、存储管理
对于磁盘:
如果是IDE存储设备,识别为hd。依次被识别为hda,hdb...
如果是SATA、USB或SCSI设备。依次被识别为sda、sdb...
对于分区:
第一块磁盘的第一个分区为sda1;
第二块磁盘的第三个分区为sdb3;
三、磁盘分区
传统MBR分区方式
1、一块磁盘最多可以分四个主分区,磁盘分配了四个主分区之后,即使还有剩余空间,也无法继续分区
2、如果需要更多的分区,则需要在扩展分区中创建逻辑分区。所有逻辑分区的总和为扩展分区的大小。
3、无法创建大于2TB的分区
4、SATA的扩展分区为sda4。sda4 = sda5 + sda6 + ...
5、SATA磁盘的第一个逻辑分区一定为sda5
fdisk
#fdisk -l #查看磁盘分区表
#fdisk /dev/sdb #操作磁盘sdb
#partprobe /dev/sdb #内核读取新的分区表,无须重启
GPT分区方式:
1、不受传统MBR分区的限制
2、提供分区表的冗余以实现分区表的备份和安全
3、fdisk命令不支持GPT分区方式,使用另一个分区工具parted
4、改变分区方式,原有磁盘中的数据将全部丢失,因此要保存好自己的数据备份
parted
#parted /dev/sdb mklabel gpt #修改分区表格式,磁盘信息将全部丢失
#parted /dev/sdb print #查看系统分区信息表
#创建格式为ext3的主分区,从磁盘的第1M开始,到1G的位置
#parted /dev/sdb mkpart primary ext3 1 1G
#创建格式为ext3的主分区,从磁盘的第1G开始,到2G的位置
#parted /dev/sdb mkpart primary ext3 1G 2G
#删除分区
#parted /dev/sdb rm 2
四、分区格式化与挂载文件系统
硬盘格式化
磁盘格式化之后,需要格式化
#mkfs.ext4 /dev/sdb1 #将/dev/sdb1格式为linux的默认格式ext4
#mkswap /dev/sdb2 #将/dev/sdb2格式化为swap分区
挂载文件系统
硬盘在linux中启用,首先要挂载到文件系统,挂载点即为硬盘所在目录,该目录下所有目录都归硬盘所有。
如要挂载的目录不为空,则mount文件系统之后,该目录下的东西就会暂时消失,unmount之后,文件又显示出来
mount [-ahlV]
-a:依照/etc/fstab的内容将相关的磁盘都挂上
-h:只列出mount相关的参数,并不挂载任何装置
-l:列出目前已挂载的装置,文件系统名与挂载点
-V:累出mount的版本信息
mount -t type /dev/hdxx /mountpoint
type:将/dev/hdxx这个装置以type的文件格式挂载到/mountpoint这个点
vfat,msdos:支持windows系统的文件格式,尤其是vfat
ext,ext2:linux的主要文件格式
mount -o [options]
rw :mount的扇区可擦写
suid:允许文件可配置为suid的状态
exec:允许执行binary的档案
auto:允许该档案可以使用mount -a参数设定
nouser:禁止其他人使用挂载功能
async:允许扇区进行异步记录
default:同时具有rw,suid,exec,nouser,async这些功能的设定值
nosuid:不允许文件可配置为suid的状态
ro:设定为只读属性
remount:让系统本来挂载的扇区重新被挂载
unmount:
unmount [-f] [device|mount_point]
-f:强制将该文件系统退出,最常使用在无法退出的NFS文件系统中
第二种方法:修改/etc/fsrab文件,设为开机挂载
#blkid /dev/sdb1 #查看磁盘的UUID
/dev/vg_test/lv_test1 /ryan1 ext4 defaults 0 0
/path/to/lv /dir_mount ext4 defaults 0 0