2.1 磁盘与目录的容量
磁盘的整体数据是在superblock区块中,但是每个各别文件的容量是在inode中记载的,使用命令可以得到这几个数据。
df:列出文件系统的整体磁盘使用量
du:评估文件系统的磁盘使用量
实例:将系统内所有filesystem列出来。
以上图而言,Filesystem:代表文件系统在哪个partition,所以列出设备名称。1k-block:说明下面的数字是以1KB为单位。可以使用
-h或-m改变容量,Used:用掉的磁盘,Avaiable:剩下的磁盘空间大小,Use%:磁盘使用率,Mounted on:磁盘挂载的目录所在。其余的使用方法可以参考选项参数。
以df主要读取的数据是针对整个文件系统,读取的是superblock内的信息,所以这个指令显示结果的速度很快,要注意的是更目录的剩余容量,所有的数据都是由根目录衍生出来的,如果根目录剩余容量为0那么很可能就存在问题了。/proc这个挂载点是挂载在内存中的,所以没有占用任何磁盘空间。/dev/shm/目录是利用内存虚拟出来的磁盘空间,通常是实体内存的一半。
范例:列出目前目录下所有文件大小,最好切换到一个小一点的目录,在根目录下运行会很久。
可以使用万用字符*代表每个目录。du这个指令会直接到文件系统内去搜寻所有文件数据。
2.2 实体链接与符号链接
linux中链接文件有两种,一种类似于windows的快捷方式可以快速地连接到目标文件,另一种是通过文件系统的inode链接产生新文件名而不是新文件,这种称为实体链接。
Hard Link(实体链接,硬式链接或实际连接)
在前一节,我们知道,每个文件都会占用一个inode,文件内容由inode的记录来指向,想要读取到该文件必须要经过目录记录的文件名指向正确的inode号码才能读取。文件名是与目录有关的,文件内容是与inode有关,也就可以多个文件名对应到同一个inode号码。这也就是hardlink。hard link 只是在某个目录下新增一笔文件名链接到某inode号码的关联记录。可以通过ln指令来创建一个实体链接。创建之后,链接字段会变成2,两个文件除了文件名其余都一样。使用hardlink设置链接文件时,磁盘空间与iode的数目不会改变。
hard link 两个限制,不能跨filesystem,不能link目录。如果link目录需要将目录下所有数据都创建链接。所以不支持。
Symbolic Link(符号链接,捷径)
Symbolic link就是在创建一个独立的文件,这个文件会让数据的读取指向它link的那个文件的文件名。当来源文件删除之后,符号链接的文件就会打不开。符号链接创建的是一个新的文件,会占用inode和block。
关于目录的link数量
当我们创建一个新的目录的时候,新的目录的link数为2,上层目录的link数会加1。
3.1 观察磁盘分区状态
目前磁盘分区主要有MBR和GPT两种格式,两种所使用的分区工具不一样,可以使用fdisk和gdisk处理分区。
lsblk 列出系统上所有的磁盘列表
lsblk可以看作list block device的缩写。
范例:列出本系统下所有磁盘与磁盘内的分区信息。
如上图,NAME:设备名称,会省略/dev等前导目录。MAJ:MIN:主要次要设备代码。RM:是否为可卸载设备,SIZE:容量。RO:是否为只读设备。TYPE:是磁盘(disk),分区(partition)还是只读存储器(rom)等,MOUNTPOINT:挂载点。
blkid 列出设备的UUID等参数。
UUID是全域单一识别码,linux会将系统内所有设备都给予一个独一无二的识别码,这个识别码就可以拿来作为挂载或者是使用这个设备/文件系统之用。
每一行代表一个文件系统,主要列出设备名称,UUID名称以及文件系统的类型。
parted 列出磁盘分区表类型与分区信息
如下图:
3.2 磁盘分区:gdisk/fdisk
MBR分区表使用fdisk,GPT分区表使用gdisk。
先通过lsblk或者blkid找到磁盘,再用parted /dev/xxx print 找出内部分区表类型,再用gdisk或fdisk来操作系统。
gdisk新增分区,删除分区。参考上图。fdisk使用方法和gdisk基本一样。
3.3 磁盘格式化(创建文件系统)
格式化指令:mkfs(make filesystem),
XFS文件系统 mkfs.xfs,指令具体参数选项如下:
使用默认的xfs文件系统参数创建系统,如果有其他额外想要处理的项目,才需要加上设置值,可以使用多个数据流写系统,增加速度。
EXT4 文件系统 mkfs.ext4
其他文件系统 mksf
mkfs其实是个综合指令,可以支持很多文件系统。
3.4 文件系统检验
因为各种状况出现文件系统错乱,不同的文件系统有不同的救援指令。主要针对XFS和EXT4。
xfs_repair 处理XFS文件系统
当xfs文件系统错乱时,使用这个指令。
xfs_repair可以检查/修复文件系统,修复时该文件系统不能被挂载。
fsck.ext4 处理EXT4文件系统
fsck是一个综合指令,针对ext4就直接使用fsck.ext4检测。
通常只有身为root且文件系统有问题时才使用这个指令,否则会对系统造成危害。
3.5 文件系统挂载与卸载
挂载点是目录,而目录是进入磁盘分区(其实就是文件系统)的入口。在挂载之前最好确认:(1)单一文件系统不应该被重复挂载在不同的挂载点。(2)单一目录不应该重复挂载多个文件系统。(3)要作为挂载点的目录,理论上都是空目录。
挂载文件系统使用mount指令。
3.6 磁盘/文件系统参数修订
mknod
linux下所有设备都是用文件代表,用文件里面的major和minor数值代替,
上图中8为主要设备代码(major)0,1,2,5为次要设备代码(minor),linux核心认识的设备数据就是通过这两个数值来决定的。
大致了解。