linux 磁盘分区
文件知识
存储空间数据分为:数据区,元数据区 元数据:文件名,大小,时间戳,权限,属主、属组,对应的数据存储在哪些磁盘块上; index node: 索引区域中每个文件元数据条件,每个inode都有其编号:ls -i如果某inode指向的常见类型的文件(f, d),指定向磁盘的数据区中的某个或某些个磁盘块 目录:数据区存储的是(直接附属于此目录)文件名,以及与其对应的inode编号, 格式化:创建文件系统 链接文件: 一个inode可以被引用多次,其有计数器:在引用次为降为0之前是不会被标记为未用的。 两个路径的文件名:指向同一个inode,此时,一个文件就称为另一个文件的硬链接 创建链接: ln [-sv] SRC DEST 硬链接: 不能对目录文件创建硬链接; 硬链接不能跨分区 创建硬链接会增加inode引用计数 符号链接: 可以对目录创建 不受分区限制 对文件创建符号链接不会增加引用计数 文件删除: inode被标记为空闲,此inode指向的磁盘块被标记为空闲; 如果inode被引用了多次,且此次删除未使得其引用计数降低为的话,这意味着文件被删除仅删除了一个访问路径; 文件复制: 创建一个新文件,并原文件中数据在新文件指向的磁盘块中再写一次的过程; 文件移动: 在同一个分区移到:移动文件仅是改变了文件访问路径; 跨分区移到:在新分区创建文件,把数据复制过去,删除原分区数据;
Linux文件系统的类型
ext(2,3,4), xfs, ffs, ufs, reiserfs, jfs, vfat(fat32), ntfs
交换文件系统:swap
网络文件系统:nfs, smbfs(cifs)
分布式文件系统:ceph
光盘文件系统:isso9660
btrfs,
文件系统的日志功能:Journal
ext2: 无日志功能
ext3, ext4, xfs: 日志文件系统
磁盘知识
设备文件:特殊文件,只有inode,而没有数据, 关联至一个驱动程序,进而跟对应的硬件设备打交道; 设备号: 主设备号:用于标记设备类型 次设备号:用于标记同一类型中的不同设备 磁盘设备文件: /dev/hd: IDE: 并口, 133MB/s /dev/sd: USB: 串行 SATA: 串行,6Gbps/8 SCSI: 并行,(Small Computer System Interface) SAS:串行, /dev/sd[a-z] 分区:数字 /dev/sda1 /dev/sda2 分区编号: 主+扩展:1-4 逻辑:5 硬盘分区: 磁道:track 扇区:sector 柱面:cylinder: 分区根据柱面划分 MBR:Master Boot Record(主引导记录) 512Bytes: 引导启动OS 446bytes: 程序,bootloader 64bytes: 分区表,每16bytes标记一个分区,一共4分区 2bytes: 5A, MBR有效性标记
fdisk:分区创建
查看创建分区 查看:fdisk -l [DEVICE]... 创建分区:fdisk [DEVICE] p: 显示磁盘分区表 n: new,新建分区 d: delete,删除分区 t: 修改分区的系统ID l: 列表出所有已经的系统ID w: 保存并退出 q: 不保存退出 ps: 对于已经有分区处于使用状态的磁盘来讲,新建分区后需要让内核重读其分区表: CentOS 6: partx -a [DEVICE] kpartx -af [DEVICE]
mkfs:创建文件系统
mkfs : -t FSTYPE [DEVICE] mkfs -t FSTYPE = mkfs.FSTYPE mkfs -t ext4 = mkfs.ext4 ps Linux内核是模块化的,这些模块支持动态装载和卸载,文件系统可能会被直接打包进内核,也可以被编译成内核模块;
mke2fs:创建文件系统
-t {ext2|ext3|ext4}:指定文件系统 -b {1024|2048|4096}:指定块大小 -L LABEL: 打标 -j: 相当于 -t ext3 -i #: 每多少字节给创建一个inode,此字节数不应该少小块大小 -N #: 直接指定可用的inode数; -m #: 指定预留空间占整个分区空间的百分比;默认为5; -O:指定分区特性
blkid: 查看指定块设备的信息
e2label:查看或设定卷标
e2label DEVICE [LABEL]
查看超级块信息
tune2fs -l DEVICE dumpe2fs -h DEVICE
tune2fs:修改分区属性
块大小无法调整; -j: ext2 --> ext3 -L LABEL:修改卷标 -m #: 修改预留空间百分比; -O [^]FEATURE: 启用指定特性,特性前加^,表示关闭此种特性 -o [^]mount-options: 开启或关闭指定的挂载选项
fsck: 因进程意外中止或系统崩溃等情况导入写入操作非正常中止时,可能会导致文件损坏;此时,应该修复文件系统:是离线修复
-t fstype -a: 自动修复错误 -r: 交互式修复错误
e2fsck: 专用于修改ext系列文件系统
-y: 对问题自动回答为yes -f: 强制进行检测
swap:交换分区
缓解物理内存资源不够用的情况; 创建交换分区: mkswap [-L LABEL] DEVICE
swapon [DEVICE]
-a: all, 启用所有交换分区
-p #: 指定此交换设备的优先级
swapoff:禁用某交换分区设备
swapoff [DEVICE]
-a: 禁用所有
mount: 文件系统挂载,默认只有管理员才有权限
将额外的分区与根文件系统上的某目录建立关联关系的过程; 目录中的原有文件会被隐藏 挂载点:另一个文件系统的访问入口 挂载: mount DEVICE MOUNT_POINT 固定挂载点:/mnt, /media mount [option]... [-t fstype] [-o option] 设备 挂载点 挂载点:事先存在或使用空闲目录; -t fstype:指定文件系统类型 -r: readonly, 只读挂载 -w: read and write, 读写挂载 -L LABEL:以卷标方式指定设备, mount -L MYDATA 挂载点 -U UUID: 以UUID的方式指定设备,mount UUID='uuid' 挂载点, mount -U uuid 挂载点 -a: 自动挂载所有(/etc/fstab文件中定义的)的支持自动挂载设备 -n: 挂载时,不更新/etc/mtab文件 -o option: async:异步I/O,数据写操作先于内存完成,而后再根据某种策略同步至持久设备中 sync: 同步I/O, atime/noatime: 文件和目录被访问时是更新最近一次的访问时间戳 auto/noauto:设备是否支持mount的-a选项自动挂载 diratime/nodiratime: 目录被访问时是更新最近一次的访问时间戳 dev/nodev: 是否支持在此设备上使用设备; exec/noexec: 是否允许执行此设备上的二进制程序文件 suid/nosuid: 是否支持在此设备的文件上使用suid remount: 重新挂载,通常用于不卸载的情况下重新指定挂载选项 ro: 只读 rw: 读写 user/nouser: 是否允许普通挂载此文件设备 acl: 在此设备是支持使用facl,默认不支持; 查看所有已经挂载的设备: mount cat /proc/mounts cat /etc/mtab
umount :卸载挂载点没有被进程访问时方可以卸载
umount DEVICE umount MOUNT_POINT
fuser: 查看哪些进程正在访问挂载的设备
fuser -v 挂载点 中止正在此挂载点的进程: fuser -km 挂载点
df: 查看磁盘剩余空间
-h: human-readable -i: 显示inode的使用信息而非默认的磁盘空间使用信息
du: 查看磁盘已用空间
-s: -h: human-readable
free: 查看内存及交换分区的使用信息
/etc/fstab:自动挂载的设备的配置文件
6字段: 挂载的设备: 设备文件 LABEL UUID 挂载点: 文件系统类型 挂载选项: 挂载选项可以有多个,彼此间使用逗号分隔; 转储频率: 0:从不转储 1: 每天转储 2: 每隔一天 自检次序: 0:不自检,额外创建的文件系统都无须自动自检 1:首先自检,通常只有根文件系统需要首先自检 2:次级自检,不同的设备可以使用同一个自检次序