目录(持续更新)
第2章-磁盘及文件系统管理
第一节 磁盘基本概念
单盘片 多盘片 每个盘配磁头 转速越高 性能越好 7200 5400
固态硬盘只是存储芯片 速度快500M/S
机械硬盘基本概念
柱面 cylinder 所有盘片某一圈的集合
扇区 sector 中心到边缘的扇形区
磁头 head 每个磁头大概512字节
磁盘在linux中表示
所有设备都被抽象为文件 保存在/dev下
设备名字一般为 hd[a-z] sd[a-z] (a-z为分区号)
如: hda,hdb,sda,sdb
IDE设备的名称为 hd[a-z],SATA,SCSI,SAS,USB 等设备名称为sd[a-z]
硬盘1 /dec/sda
硬盘2 /dev/sdb
硬盘3 /dev/sdc
分区概念
将磁盘逻辑分区 方便管理
linux中是 设备名称+分区号
硬盘1的第1分区 /dev/sda1
硬盘1的第2分区 /dev/sda2
硬盘2的第1分区 /dev/sdb1
硬盘2的第2分区 /dev/sdb2
主流分区机制为 MBR 和 GPT
MBR(Master Boot Record)是传统的分区机制
应用于绝大多数使用BIOS的PC设备 EFI代替BIOS
MBR支持32bit和64bit系统
MBR支持分区数量有限
MBR仅仅支持不超过2T的硬盘 ,超过2T的硬盘则只能用2T
MBR共512字节
前446字节为引导代码
接下来4×16字节为分区表
接下来两个字节为 55h AAh
MBR分区
主分区 最多四个主分区
扩展分区 扩展分区会占用一个主分区位置 用于承载逻辑分区 无法直接使用
逻辑分区 linux最多支持63个IDE分区和 15个SCSI分区
/dev/sda
/dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4
/dev/sda
/dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4
/dev/sda5------ /dev/sda6------ /dev/sda7
GPT(GUI Partition Table)是一个较新的分区机制 解决了MBR了很多缺点
支持超过2T的磁盘
向后兼容MBR
必须在支持UEFI的硬件上才能使用
必须用64bit系统
Mac和linux系统都能支持GPT分区格式
Windows7 64bit ,WindowsServer2008 64bit支持GPT
第二节 使用fdisk进行磁盘分区
FDISK分区工具来自IBM的老牌分区工具 支持大多系统
几乎所有linux的发行版都有fdisk 包括linux rescue模式下也能使用
fdisk是个针对MBR的工具 如果需要用GPT则无法使用fdisk 大于2T的磁盘无法使用
fdisk只有超级用户权限才能用
使用fdisk -l可以显示所有磁盘的信息
使用fdisk /dev/sda可以列出所有安装的磁盘及其分区信息
进入交互命令
m 帮助
n 创建分区
p 列出分区
t 修改号
w 保存修改
按下N创建分区
e 扩展分区
p 主分区
按下p创建主分区
输入分区号
或输入大小 +2G
按下N创建分区
e 扩展分区
p 主分区
按下e创建扩展分区
无需输入 直接确认
按下N创建分区
l 逻辑分区 (永远从5开始)
p 主分区
按下l创建逻辑分区
输入分区号
或输入大小 +2G
按下T修改分区ID
输入类型数字
L 列出类型
按83linux为正常分区 按82swap为交换分区
按下W保存写入并退出
有时分区后需要用partprobe命令 让内核更新分区信息
查看: /proc/partitions 查看分区信息
第三节 linux文件系统
需要创建文件系统才能用 过程称为格式化 没有经过此过程的为裸设备raw
常见的文件系统有fat32 NTFS ext3 ext4 xfs HFS 等
系统之间的区别 : 日志 支持分区大小 支持单个文件大小
win下主流为NTFS
linux主流为ext4
linux支持的系统 ext nfs iso9660 gfs jfs vfat fat(msdos)
mke2fs 用来创建文件系统
mke2fs -t ext4 /dev/sda3 将第一块硬盘的第三个主分区格式化为ext4文件格式
常用参数:
-b +大小 指定文件系统块大小 每次读写系统块的大小 4K就是4096字节
-c 建立文件系统时检查坏损快
-L label 指定卷标 磁盘取名
-j 建立文件系统日志 ext4带日志 无需使用
mkfs亦可以创建文件系统 单相比mke2fs比较简单 但是支持的参数比较少 不能精细化控制
mkfs.ext3 /dev/sda3 将第一块硬盘的第三个主分区格式化为ext3文件格式
mkfs.ext4 /dev/sda3 将第一块硬盘的第三个主分区格式化为ext4文件格式
mkfs.vfat /dev/sda3 将第一块硬盘的第三个主分区格式化为vfat文件格式
dumpe2fs查看分区文件的系统信息
dumpe2fs /dev/sda2
日志
带有日志的系统有较强的稳定性
日志两阶段提交 将准备执行的事计入日志 然后操作 执行之后删除
E2LABEL对文件系统打标签
e2label /dev/sdb1 查看系统标签
e2label /dev/sdb1 LINUX 打上LINUX标签
FSCK用来检查修复损坏的文件系统
fsck /dev/sdb1 检查系统()检查前需要卸载
使用 -y 参数不提示且修复
fsck自动判断文件系统类型 如果损坏比较严重 建议加上 -t 参数
对于识别文件的损坏数据有些找不到记录,将会计入lost+found目录
系统启动都校验磁盘
第四节 linux文件系统挂载管理
磁盘创建好文件系统之后 挂载后才能使用
win和mac都是自动挂载 一旦创建好之后自动挂载
linux需要手工挂载
/dev/sda2 到 /mnt
mount挂载格式化的磁盘分区
mount /dev/sda1 /mnt/ 将第一块磁盘的第一主分区挂载到 /mnt目录下
-t 指定系统类型 默认自动识别
-o 指定挂载选项
ro rw 只读 还是 读写
mount -o remount,ro /dev/sdb1 /mnt/
将sdb1以只读形式重新挂载到/mnt目录
sync 代表不用缓存 将所有操作直接写入磁盘
async 代表使用缓存 默认是async
noatime 每次访问文件是不更新文件访问时间
atime 每次访问文件是都更新文件访问时间
remount 重新挂载文件系统
mount -o remount,sync /dev/sdb1 /mnt/
将sdb1以不用缓存写入形式重挂载到/mnt目录
mount -o remount,ro,noatime /dev/sdb1 /mnt/
将sdb1以 只读形式 且 访问时不更新文件时间形式 重新挂载到/mnt目录
umount用来卸载已经挂载的文件系统 相当于win中的弹出
umount 文件系统/挂载点
umount /dev/sda3 即 umount /mnt/
如果出现报错,则说明文件系统正在被使用,无法卸载
可用fuser查看哪些进程在使用该文件系统
fuser -m /mnt
可用lsof查看哪些文件被打开了
lsof /mnt
自动挂载
配置文件/etc/fstab来定义需要自动挂载的文件系统
fstab中每一行代表一个挂载的配置
格式如下
/dev/sda3 /mnt ext4 defaults 0 0
要挂载的设备 挂载点 格式 挂载选项 dump和fsck相关选项
要挂载的设备也可以使用label进行识别 label可以取代第一路径
label=卷标 /mnt ext4 defaults 0 0
要挂载的设备 挂载点 格式 挂载选项 dump和fsck相关选项
mount -a命令会挂载所有fstab中定义的自动挂载项