磁盘及文件系统管理详解之一二(文件系统,特殊文件)_2019.03.31-22:00-23:00_2019.04.1-22:00-23:00_2019.04.2_mage_linux_log

磁盘构成与工作原理

回忆:扇区、磁道、柱面
磁盘在出厂时会进行一次格式化:低级格式化(划分扇区、磁道、柱面等)

分区

Partition:分区(把整个磁盘划分成多个不同的逻辑组成部分,每个组成部分可以创建一个独立的文件系统),安照柱面进行分区

柱面编号由外向内从小到大(0开始),靠近盘面边缘的磁道读写速率较高(同时间比靠近圆心的磁道走过更长距离),把经常使用的数据放在这些扇区
(C盘所在分区一般靠近边缘)

MBR(Main/Master Boot Record):主引导记录----存在于0盘面0柱面0扇区0磁道的512byte,独立于操作系统之外的一部分存储空间:被划分为三段
第一段:前446byte放BootLoader,一段代码,作用是引导某个分区上的操作系统,让其启动
第二段:64byte:每16byte标识一个分区,总共可以标识4个分区(主分区,主分区和扩展分区的和小于等于4)
第三段:2byte:Magic Number,标识MBR是否有效

文件系统

复习:看体系结构笔记
软件:存储在磁盘某个地方,管理软件,可以把磁盘划分为多个区
包括:元数据存储区数据存储器:被分为多个逻辑存储单元(块:block)
元数据存储区存在一个区叫块位图(bitmap:加速查找空闲磁盘块):标记哪些块已经使用(1)哪些没有用(0)
inode(index node:索引节点):用来索引文件的条目,没有文件名;只有inode号,文件件属主属组,权限,时间戳等元数据。
根目录是自引用的:内核知道根位于哪里,访问任何文件系统必须由根开始
目录也是文件:
目录项(dentry)
新建文件的过程
删除文件的过程
复制文件的过程

复制就是创建新文件,填充相同内容
同分区剪切:同一个分区只是更改文件路径,不可跨分区剪切
跨分区剪切:新分区创建文件,复制旧分区内容,删除旧分区内容

特殊文件

链接文件

硬链接:ln SRC DEST

/backup/a/m.txt 与 /backup/b/n.txt硬链接关系
磁盘及文件系统管理详解之一二(文件系统,特殊文件)_2019.03.31-22:00-23:00_2019.04.1-22:00-23:00_2019.04.2_mage_linux_log
在运行图中1所示命令之前,abc.txt被硬链接的次数为1;图中1表示将/test/abc2.txt硬链接到abc.txt,现在abc.txt被硬链接的次数为2,只有硬链接次数小于1时,才真正删除该文件;若此时删除abc.txt,/test2/abc2.txt的内容不变,依然为abc.txt的内容。
硬链接总结:
1,硬链接只能对文件创建,不能应用于目录;
2,硬链接不能跨文件系统;
3,创建硬链接会增加文件被链接的次数;

软链接:ln -s SRC DEST

(符号链接)
1,可以应用于目录;
2,可以跨文件系统;
3,不会增加被链接文件的链接次数;
4,其大小为指定路径所包含的字符个数;

du命令

显示文件空间使用情况
du [-s -h] FILEPATH

df命令

报告文件系统磁盘空间使用情况
df [-h -i]
-h 单位换算
-i 显示inode情况
-p

设备文件 /dev

b:块设备,按块为单位,随机访问的设备;
块设备如硬盘
c:字符设备:按字符为单位,线性设备
字符设备如键盘

ls -l /dev
磁盘及文件系统管理详解之一二(文件系统,特殊文件)_2019.03.31-22:00-23:00_2019.04.1-22:00-23:00_2019.04.2_mage_linux_log
主设备号(major number)
标识设备类型,上图左边红框中
次设备号(minor number)
标识同一种类型中的不同设备,上图右边红框中
设备文件几乎不占用磁盘空间

mknod命令

NAME
mknod - make block or character special files

SYNOPSIS
mknod [OPTION]… NAME TYPE [MAJOR MINOR]

DESCRIPTION
Create the special file NAME of the given TYPE.
-m, --mode=MODE
set file permission bits to MODE, not a=rw - umask
b create a block (buffered) special file
c, u create a character (unbuffered) special file
p create a FIFO
eg:mknod mydev **c** 66 0 #创建一个字符设备文件,名称为mydev,主设备号为66,次设备号为0

硬盘设备的设备文件名

文件名开头
IDE,ATA:hd
第一个IDE口:主(hda),从(hdb)
被识别为: /dev/hda, /dev/hdb
第二个IDE口:主(hdc),从(hdd)
被识别为: /dev/hdc, /dev/hdd
hda1:第一个主分区(主分区只能有4个)
hda2:
hda3:
hda4:
hda5:第一个逻辑分区,逻辑分区只能从第5个分区开始

SATA:sd
SCSI:sd
USB:sd
不同硬盘用a,b,c,…区别多块硬盘
被识别为:/dev/sda, /dev/sdb, /dev/sdc, /dev/sdd

fdisk -l 命令

fdisk -l 列出系统识别的所有设备
fdisk -l [/dev/some_devices_file] 列出系统识别的某一设备
NAME
fdisk - manipulate disk partition table

SYNOPSIS

   fdisk [-uc] [-b sectorsize] [-C cyls] [-H heads] [-S sects] device
   fdisk -l [-u] [device...]
   fdisk -s partition...
   fdisk -v
   fdisk -h

DESCRIPTION
fdisk (in the first form of invocation) is a menu-driven program for
creation and manipulation of partition tables. It understands DOS-type partition tables and BSD- or SUN-type disklabels.

DEVICES
The device is usually /dev/sda, /dev/sdb or so. A device name refers
to the entire disk. Old systems without libata (a library used inside
the Linux kernel to support ATA host controllers and devices) make a difference between IDE and SCSI disks. In such cases the device name will be /dev/hd* (IDE) or /dev/sd* (SCSI).

   The partition is a device name followed by  a  partition  number.   For
   example, /dev/sda1 is the first partition on the first hard disk in the
   system.   See  also  Linux   kernel   documentation   (the   Documenta‐
   tion/devices.txt file).

DISK LABELS
A BSD/SUN-type disklabel can describe 8 partitions, the third of which should be a `whole disk’ partition. Do not start a partition that actually uses its first sector (like a swap partition) at cylinder 0,
since that will destroy the disklabel.

Linux支持的文件系统

文件系统属于内核功能,创建文件系统需要用户命令结合内核功能完成。
低级格式化:创建磁道
高级格式化:创建文件系统 mkfs -t ext3
对文件的操作:open,close,create,delete,edit
linux提供VFS:Virtual file system 使得其支持多种文件系统
linux常用ext2,ext3,ext3等文件系统,
windows常用:FAT32(linux中叫vfat),NTFS,CIFS(网络文件系统)
光盘:ISO9660
其他:xfs,reiserfs,jfs,nfs,ocfs,gfs2,swap(linux)
linux除了对NTFS兼容性不好,支持几乎所有其他文件系统(VFS)
一个分区就是一个独立的文件系统,可以单独格式化,使用不同文件系统;但是最终都要并到根目录下,使用挂载的方式。

Linux 管理分区

fdisk /dev/sda #命令fdisk指向/dev/sda后会打开一个交互式命令,有很多命令提供来实现磁盘分区管理,最后保存退出后才生效
p:显示当前硬盘上的分区
n:创建新分区

  • e:扩展分区
  • p:主分区

d:删除一个分区
w:保存退出
q:不保存退出
t:修改分区类型(默认ext3或ext4文件系统类型)
l:显示支持的文件系统类型

更改后需要:
partprob命令:通知内核重读分区表/proc/partitions