存储结构与磁盘划分
目录结构
主要常见的目录定义:
目录名称 | 应放置文件的内容 |
---|---|
/boot | 开机所需文件——内核,开机菜单及所需配置文件等 |
/dev | 任何设备与接口都以文件形式存放在此目录 |
/etc | 配置文件 |
/home | 用户主目录 |
/bin | 单用户维护模式下还能够被操作的命令 |
/lib | 开机时用到的函数库及/bin与/sbin下面命令要调用的函数 |
/sbin | 开机过程中需要的 |
/media | 一般挂载或删除的设备 |
/opt | 放置第三方的软件 |
/root | 系统管理员的主文件夹 |
/srv | 一些网络服务的数据目录 |
/tmp | 任何人均可使用的”共享”临时目录 |
/proc | 虚拟文件系统,例如系统内核,进程,外部设备及网络状态等 |
/usr/local | 用户自行安装的软件 |
/usr/sbin | 非系统开机时需要的软件/命令/脚本 |
/usr/share | 帮助与说明文件,也可放置共享文件 |
/var | 主要存放经常变换的文件,如日志 |
/lost+found | 当文件系统发生错误事,将一些丢失的文件片段存放在这里 |
绝对路径(absolute):由根目录(/)开始写起的目录或文件名
相对路径(relative):相对于当前路径的写法
物理设备的命名规则
一般采用三个主分区加一个拓展分区的分发,拓展分区中能够创建无数个逻辑分区
主分区不能超过四个
系统内核的设备管理器(Udev)会自动将硬件名称规范起来,让我们可以通过设备名称猜出设备大致的属性以及分区信息等,Udev会一直以守护进程的形式运行并侦听来自内核发出的uevent来管理/dev目录下的设备文件
常见的硬件命名如下:
硬件设备 | 文件名称 |
---|---|
IDE设备 | /dev/hd[a-d] |
SCSI/SATA/U盘 | /dev/sd[a-p] |
软驱 | /dev/df[0-1] |
打印机 | /dev/lp[0-15] |
光驱 | /dev/cdrom |
鼠标 | /dev/mouse |
磁带机 | /dev/st0或者/dev/hr0(IDE设备) |
文件系统与数据资料
每个文件的权限与属性都会记录在inode table中(每个文件都会占用一个独立的 inode 表格,默认为128bytes),记录着:
该文件的访问权限(read,write,execute)
该文件的所属主与组(owner,group)
该文件的大小(size)
该文件的创建或状态修改时间(ctime)
该文件的最后一次访问时间(atime)
该文件的修改时间(mtime)
文件的特殊权限(SUID,SGID,SBIT)
该文件的真实数据地址(point)
挂载硬件设备
挂载操作指的是当用户需要使用硬盘设备或分区数据时,需要先将一个已存在的目录文件做关联,而哲哥动作就叫挂载
主要命令:mount、umount
mount是临时挂载,重启后失效,如果想让重启后依然生效,必须修改配置文件/etc/fstab
“/etc/fstab”包含着文件系统与挂载信息等内容,因为过于重要,所以只有root用户才可以编辑它
填写格式如下:“设备文件 挂载目录 格式类型 权限选项 自检 优先级”
设备文件:一般为设备的路径+名称,也可以写UUID值等
挂载目录:指定要挂载的目录,需挂载钱创建好
格式类型:即指定文件系统的格式,比如有ext3/ext4/xfs/iso9660/swap等
权限选项:默认为defaults(rw,suid,dev,exec,auto,nouser,async),可指定acl或quota等
自检:若为1开机后进行磁盘自检,0为不自检
优先级:若“自检”为1,则可对多块硬盘进行优先级设置
例:
定义设备/dev/sdb2开机自动挂载到/backu目录,文件格式ext4,默认权限且无需开机自检
/dev/sdb2 /backup ext4 defaults 0 0
添加硬盘设备
主要命令:fdisk、mkfs
swap(交换分区)
SWAP即交换分区是一种类似于Windows系统虚拟内存的功能,将一部分硬盘空间虚拟成内存来使用,从而解决内存容量不足的情况,因为SWAP毕竟是用硬盘资源来虚拟的,所以速度上比真实物理内存要慢很多,一般只有当真实的物理内存耗尽时才会调用SWAP
磁盘冗余阵列
RAID:即杜丽硬盘组,作用是防止硬盘物理损坏以及增加存储设备的吞吐量,RAID常见的组合有0、1、5、10
RAID0
RAID0需要至少两块硬盘,可以有效的提高硬盘的性能和吞吐量,但没有数据的冗余和错误修复能力
多块硬盘串联在一起,数据一次写入各个硬盘,性能极大提升,但任意一块硬盘故障整个系统数据都会受到破坏
RAID1
需要至少两块硬盘,就可以有效的提高数据资料的安全性和可修复性,但成本却提高了
实现原来是在数据写入硬盘时也会在另外一块闲置的硬盘上生成镜像文件,在不影响性能的情况下最大限度保证数据资料的可靠性,只要在一对镜像盘中还有一块硬盘可以使用,那么数据也不会丢失,具有很好的硬盘冗余能力,虽然对数据来讲绝对的安全,但成本明显增加,磁盘利用率仅为50%
RAID5
至少需要三块硬盘,加固存储性能、数据安全和存储成本
如上图所示”parity”块中保存的是其他硬盘数据的奇偶校验信息(并非其他硬盘的数据),以数据的奇偶校验信息来保证数据的安全,RAID5不以单独的硬盘来存放数据的奇偶校验信息,而是保存在各个磁盘上
这样当任何一个硬盘损坏都可以根据其他硬盘上的奇偶校验信息来尝试重建损坏的数据,性能也很高,兼顾了存储性能,数据安全和存储成本,尅看作是RAID0与RAID1的这种方案
RAID10
需要至少四块硬盘,兼具速度和安全性,但成本很高
继承了RAID10的快速与RAID1的安全,RAID1在这里提供了冗余备份的阵列,而RAID0则负责数据的读写阵列
因这种结构的成本高,一般用于存放要求速度与差错控制的数据
逻辑卷管理器
当用户根据实际情况需要对分区增加、减小等调整时,经常会受到硬盘”灵活性”的限制,很不方便
逻辑卷管理器则是在磁盘分区与文件系统之间添加的逻辑层,提供一个抽象的卷组,使得管理者可以忽略底层磁盘布局,从而实现对分区的灵活动态调整,这毫不夸张,系统默认启用了LVM机制(Logical Volume Manager)
物理卷(PV,Physical Volume):整个硬盘设备或使用fdisk命令建立的硬盘分区
卷组(VG,Volume Group):由一个或多个物理卷(PV(组成的整体
逻辑卷(LV,Logical Volume):从卷组(VG)出切割出的空间来用于创建文件系统,大小由PE的个数决定
基本单元(PE,Physical Extent)默认为4MB的基本块
虚拟文件系统
软硬链接
在linux系统中ln命令能够让用户创建出俩中不同类型的文件快捷方式
硬链接(hard link)
可以理解为一个”指向原始文件inode的指针”,系统部位它分配独立的inode与文件,所以实际上来讲硬链接文件与原始文件其实是同一个文件,只是名字不同、
于是每添加一个硬链接,该文件的inode连接数就会增加1,直到该文件的inode连接数归0才是彻底删除。
概括来说因为硬链接实际就是指向原文件inode的指针,即使原始文件背删除依然可以通过链接文件访问,但是不能够跨文件系统也不能链接目录文件。
软链接(symbolic link)
即”仅仅包含它索要链接文件的路径名”,因此能做该目录链接也可以跨越文件系统,但原始文件背删除后链接文件也将失败,如同windows中的”快捷方式”
ln命令创建链接文件,格式为:ln [选项] 目标
创建硬链接:”ln 文件名 链接名”
创建软链接:”ln -s 文件名 链接名”