磁盘存储
设备文件
I/O Ports: I/O 设备地址
一切皆文件: open(), read(), write(), close()
设备类型:
块设备: block, 存取单位 "块", 磁盘
字符设备: char, 存取单位 "字符", 键盘
设备文件: 关联至一个设备驱动程序, 进而能够跟与之对应硬件设备进行通信
设备号码:
主设备号: major number, 标识设备类型
次设备号: minor number, 标识同一类型下的不同设备
硬盘接口类型
并行:
- IDE:133MB/s
- SCSI:640MB/s
串口: SATA:6Gbps
- SAS:6Gbps
- USB:480MB/s
- rpm: rotations
- per minute
机械硬盘和固态硬盘
机械硬盘(HDD):Hard Disk Drive, 即是传统普通硬盘, 主要由: 盘片, 磁头, 盘 片转轴及控制电机, 磁头控制器, 数据转换器, 接口, 缓存等几个部分组成. 机械硬盘 中所有的盘片都装在一个旋转轴上, 每张盘片之间是平行的, 在每个盘片的存储面上有 一个磁头, 磁头与盘片之间的距离比头发丝的直径还小, 所有的磁头联在一个磁头控制 器上, 由磁头控制器负责各个磁头的运动. 磁头可沿盘片的半径方向运动, 加上盘片每 分钟几千转的高速旋转, 磁头就可以定位在盘片的指定位置上进行数据的读写操作. 数 据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上, 也可以通过相反方式读取. 硬盘为精密设备, 进入硬盘的空气必须过滤
固态硬盘 (SSD):Solid State Drive, 用固态电子存储芯片阵列而制成的硬盘, 由控 制单元和存储单元(FLASH 芯片, DRAM 芯片) 组成. 固态硬盘在接口的规范和定义, 功能及使用方法上与普通硬盘的完全相同, 在产品外形和尺寸上也与普通硬盘一致
相较于 HDD,SSD 在防震抗摔, 传输速率, 功耗, 重量, 噪音上有明显优势, SSD 传 输速率性能是 HDD 的 2 倍
相较于 SSD,HDD 在价格, 容量, 使用寿命上占有绝对优势
硬盘有价, 数据无价, 目前 SSD 不能完全取代 HHD
设备文件
磁盘设备的设备文件命名:/dev/DEV_FILE
虚拟磁盘:/dev/vd
不同磁盘标识: a-z,aa,ab... /dev/sda, /dev/sdb, ...
同一设备上的不同分区: 1,2, ... /dev/sda1, /dev/sda5
硬盘存储术语
head: 磁头
track: 磁道
cylinder: 柱面
sector: 扇区, 512bytes
分区 MBR,CPT
两种分区方式: MBR,GPT
MBR: Master Boot Record,1982 年, 使用 32 位表示扇区数, 分区不超过 2T
如何分区: 按柱面
0 磁道 0 扇区: 512bytes
446bytes: boot loader
64bytes: 分区表
16bytes: 标识一个分区
2bytes: 55AA
4 个主分区; 3 主分区 + 1 扩展(N 个逻辑分区)
MBR 分区结构
硬盘主引导记录 MBR 由 4 个部分组成
主引导程序(偏移地址 0000H--0088H), 它负责从活动分区中装载, 并运行 系统引导程序
出错信息数据区, 偏移地址 0089H--00E1H 为出错信息, 00E2H--01BDH 全为 0 字节
分区表 (DPT,Disk Partition Table) 含 4 个分区项, 偏移地址 01BEH--01FDH,
每个分区表项长 16 个字节, 共 64 字节为分区项 1, 分区项 2, 分区项 3, 分区项 4
结束标志字, 偏移地址 01FE--01FF 的 2 个字节值为结束标志 55AA
GPT 分区
GPT:GUID(Globals Unique Identifiers) partition table 支持 128 个分区, 使用 64 位, 支持 8Z( 512Byte/block )64Z ( 4096Byte/block)
使用 128 位 UUID(Universally Unique Identifier) 表示磁盘和分区 GPT 分区表 自动备份在头和尾两份, 并有 CRC 校验位
UEFI (统一扩展固件接口)硬件支持 GPT, 使操作系统启动
管理分区
列出块设备
? lsblk
创建分区使用:
? fdisk 创建 MBR 分区
? gdisk 创建 GPT 分区
? parted 高级分区操作
partprobe - 重新设置内存中的内核分区表版本
parted 命令[小心使用]
parted 的操作都是实时生效的, 小心使用
用法: parted [选项]... [设备 [命令 [参数]...]...]
- parted /dev/sdb mklabel gpt|msdos
- parted /dev/sdb print
- parted /dev/sdb mkpart primary 1 200 (默认 M)
parted /dev/sdb rm 1 parted -l 列出分区信息
分区工具 fdisk 和 fdisk
gdisk /dev/sdb 类 fdisk
fdisk -l ,dev/sda 查看分区
fdisk /dev/sdb 管理分区 子命令:
p 分区列表
t 更改分区类型
n 创建新分区
d 删除分区
v 校验分区
u 转换单位
w 保存并退出
q 不保存并退出
同步分区表
查看内核是否已经识别新的分区
cat/proc/partations
fdisk 分区后 fdisk -l .dev.se1[查看硬盘]
lsblk[查看内存硬盘]
centos6 通知内核重新读取硬盘分区表
新增分区用:
partx -a /dev/sr1
删除分区用:
partx -d --nr M-N /dev/sr1
centos7 同步使用:
partprobe 命令
文件系统
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;
即在储存设备上组织文件的方法. 操作系统中负责管理和储存文件信息的软件结构称为文件管理系统, 简称文件系统
从系统角度来看文件系统对文件储存设备的空间进行组织和分配, 负责文件储存并对存入的文件进行保护和检索的系统封.
具体的说, 他负责为用户创立文件, 存入, 读取, 修改, 转储问价, 控制问价的读出, 安全控制, 日志, 压缩, 加密等
支持的文件系统:
/lib/modules/'uname -r' /kernel/fs
各种文件系统:
https://en.wikipedia.org/wiki/Comparison_of_file_systems
文件系统类型
linux 系统类型:
ext2(Extended file system) : 适用于那些分区容量不是太大, 更新也不频繁的情况, 例如 /boot 分区.
ext3: 是 ext2 的改进版本, 其支持日志功能, 能够帮助系统从非正常关机导致的异常中 恢复. 它通常被用作通用的文件系统
ext4: 是 ext 文件系统的最新版. 提供了很多新的特性, 包括纳秒级时间戳, 创建和使 用巨型文件(16TB), 最大 1EB 的文件系统, 以及速度的提升 xfs:SGI, 支持最大 8EB 的文件系统 btrfs(Oracle), reiserfs, jfs(AIX), swap
光盘: iso9660
- windows:FAT32,NTFS
- Unix:FFS(fast),UFS(unix),JFS2
网络文件系统: NFS,CIFS
集群文件系统: GFS2,OCFS2
分布式文件系统: fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre
RAW: 未经处理或者未经格式化产生的文件系统
文件系统分类
根据其是否支持 "journl" 功能:
日志型文件系统: ext3,ext4,xfs,....
非日志文件系统: ext2,vfat
文件系统的组织部分:
内核中的模块: ext4, xfs, vfat
用户空间的管理工具: mkfs.ext4, mkfs.xfs,mkfs.vfat
linux 的虚拟文件系统: VFS
查看当前支持的文件系统: cat/proc/filesystems
创建文件系统
mkfs 命令:
- (1):mkfs.ext4/der/...
- xfs
- btrfs
- vfat
创建 ext 文件系统
mke2fs:ext 系列文件系统专用管理工具
- -t {ext2|ext3|ext4}
- -b {1024|2048|4096}
- -L 'LABEL'
-j: 相当于 -t ext3
- mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
- -i #: 为数据空间中每多少个字节创建一个 inode; 此大小不应该小于 block 的大小
- -N #: 指定分区中创建多少个 inode
-I 一个 inode 记录占用的磁盘空间大小, 128---4096
-m #: 默认 5%, 为管理人员预留空间占总空间的百分比
-O FEATURE[,...]: 启用指定特性
-O ^FEATURE: 关闭指定特性
tune2fs
tune2fs: 重新设定 ext 系列文件系统可调整参数的值
-l: 查看指定文件系统超级块信息; super block
-L 'LABEL': 修改卷标
-m #: 修预留给管理员的空间百分比
-j: 将 ext2 升级为 ext3
-O: 文件系统属性启用或禁用, -O ^has_journal
-o: 调整文件系统的默认挂载选项,-o ^acl
-U UUID: 修改 UUID 号
tune2fs -U`uuidgen` /dev/sdb1
uuidgen[这个命令可以自动生成 UUID]
dumpe2fs:
块分组管理, 32768 块
-h: 查看超级块信息, 不显示分组信息
例: tune2fs -l /dev/sdr[查看文件系统]
tune2fs -o acl /dev/sdr [手工添加 acl]
tune2fs -o ^acl /dev/sdr[删除 acl]
[acl 类似于权限密码]
如: setfacl -m u:dang:rw f1[给 dang 用户 rw 权限对于 f1 文件]
文件系统检测和修复
常发生于死机或者非正常关机之后
挂载为文件系统标记为 "no clean"
注意: 一定不要在挂载状态下修复
- fsck: File System Check
- fsck.FS_TYPE fsck -t FS_TYPE
-p: 自动修复错误
-r: 交互式修复错误
FS_TYPE 一定要与分区上已经文件类型相同
e2fsck:ext 系列文件专用的检测修复工具
-y: 自动回答为 yes
-f: 强制修复
例: fsck -y /dev/sdb/[修复文件系统,, 注意要取消挂载后再修复, 否则会破坏数据]
挂载 mount
挂载: 将额外文件系统与根文件系统某现存的目录建立起关联关系, 进而使得此 目录做为其它文件访问入口的行为
挂载: mount + 挂载设备 + 挂载点
卸载: umount 可以使用设备或挂载点
挂载点下原有的文件在挂载后会被临时隐藏
挂载点目录一般为空
mount 常用命令选项
-t vsftype: 指定要挂载的设备上的文件系统类型
-r: readonly, 只读挂载
-w: read and write, 读写挂载
-n: 不更新 / etc/mtab,mount 不可见
-a: 自动挂载所有支持自动挂载的设备(定义在了 / etc/fstab 文件中, 且挂载选 项中有 auto 功能)
-L 'LABEL': 以卷标指定挂载设备
-U 'UUID': 以 UUID 指定要挂载的设备
-B, --bind: 绑定目录到另一个目录上
查看内核追踪到的已挂载的所有设备 cat /proc/mounts
mount 常见命令选型
-o options:(挂载文件系统的选项), 多个选项使用逗号分隔
async: 异步模式 sync: 同步模式, 内存更改时, 同时写磁盘
atime/noatime: 包含目录和文件
diratime/nodiratime: 目录的访问时间戳
auto/noauto: 是否支持自动挂载, 是否支持 - a 选项
exec/noexec: 是否支持将文件系统上运行应用程序
dev/nodev: 是否支持在此文件系统上使用设备文件
suid/nosuid: 是否支持 suid 和 sgid 权限
remount: 重新挂载
ro: 只读
rw: 读写
user/nouser: 是否允许普通用户挂载此设备,/etc/fstab 使用
acl: 启用此文件系统上的 acl 功能
loop: 使用 loop 设备
defaults: 相当于 rw, suid, dev, exec, auto, nouser, async
文件挂载配置文件
/etc/fstab 每行定义一个要挂载的文件系统
1, 要挂载的设备或伪文件系统
设备文件
LABEL:LABEL="" UUID:UUID=""
伪文件系统名称: proc, sysfs
2, 挂载点
3, 文件系统类型: ext4,xfs,nfs,none
4, 挂载选项: defaults ,acl,bind
5, 转储频率: 0: 不做备份 1: 每天转储 2: 每隔一天转储
6,fsck 检查的文件系统的顺序: 允许的数字是 0, 1, 和 2
0: 不自检
1: 首先自检; 一般只有 rootfs 才用
2: 非 rootfs 使用
处理交换文件和分区
交换分区是系统 RAM 的补充
基本设置包括:
? 创建交换分区或者文件
? 使用 mkswap 写入特殊签名
? 在 / etc/fstab 文件中添加适当的条目
? 使用 swapon -a 激活交换空间
挂载交换分区
启用: swapon
swapon [OPTION]... [DEVICE]
-a: 激活所有的交换分区
-p PRIORITY: 指定优先级
/etc/fstab:pri=value ?
禁用: swapoff [OPTION]... [DEVICE]
SWAP 的优先级
可以指定 swap 分区 0 到 32767 的优先级, 值越大优先级越高
如果用户没有指定, 那么核心会自动给 swap 指定一个优先级, 这个优先级从 -1 开始, 每加入一个新的没有用户指定优先级的 swap, 会给这个优先级减一
先添加的 swap 的缺省优先级比较高, 除非用户自己指定一个优先级, 而用户 指定的优先级 (是正数) 永远高于核心缺省指定的优先级(是负数)
优化性能: 分布存放, 高性能磁盘存放
来源: http://www.bubuko.com/infodetail-2724553.html