linux——存储结构与磁盘划分。

6.1 一切从“/”开始html

Linux系统中常见的目录名称以及相应内容
目录名称 应放置文件的内容
/boot 开机所需文件—内核、开机菜单以及所需配置文件等
/dev 以文件形式存听任何设备与接口
/etc 配置文件
/home 用户主目录
/bin 存放单用户模式下还能够操做的命令
/lib 开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数
/sbin 开机过程当中须要的命令
/media 用于挂载设备文件的目录
/opt 放置第三方的软件
/root 系统管理员的家目录
/srv 一些网络服务的数据文件目录
/tmp 任何人都可使用的“共享”临时目录
/proc 虚拟文件系统,例如系统内核、进程、外部设备及网络状态等
/usr/local 用户自行安装的软件
/usr/sbin Linux系统开机时不会使用到的软件/命令/脚本
/usr/share 帮助与说明文件,也可放置共享文件
/var 主要存放常常变化的文件,如日志
/lost+found 当文件系统发生错误时,将一些丢失的文件片断存放在这里

6.2 物理设备的命名规则node

 

常见的硬件设备及其文件名称
硬件设备 文件名称
IDE设备 /dev/hd[a-d]
SCSI/SATA/U盘 /dev/sd[a-p]
软驱 /dev/fd[0-1]
打印机 /dev/lp[0-15]
光驱 /dev/cdrom
鼠标 /dev/mouse
磁带机

/dev/st0或/dev/ht0linux

设备文件名称

/dev目录中sda设备之因此是a,并非由插槽决定的,而是由系统内核的识别顺序来决定的,分区的数字编码不必定是强制顺延下来的,也有多是手工指定的。vim

第一个扇区中的数据信息

为了解决分区个数不够的问题,能够将第一个扇区的分区表中16字节(本来要写入主分区信息)的空间(称之为扩展分区)拿出来指向另一个分区。也就是说,扩展分区其实并非一个真正的分区,而更像是一个占用16字节分区表空间的指针—一个指向另一个分区的指针。这样一来,用户通常会选择使用3个主分区加1个扩展分区的方法,而后在扩展分区中建立出数个逻辑分区,从而来知足多分区(大于4个)的需求。网络

硬盘分区的规划

6.3 文件系统与数据资料运维

Ext3:是一款日志文件系统,可以在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,并且也不能百分之百地保证资料不会丢失。它会把整个磁盘的每一个写入动做的细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断的部分,而后尝试进行修复。async

Ext4:Ext3的改进版本,做为RHEL 6系统中的默认文件管理系统,它支持的存储容量高达1EB(1EB=1,073,741,824GB),且可以有无限多的子目录。另外,Ext4文件系统可以批量分配block块,从而极大地提升了读写效率。函数

XFS:是一种高性能的日志文件系统,并且是RHEL 7中默认的文件管理系统,它的优点在发生意外宕机后尤为明显,便可以快速地恢复可能被破坏的文件,并且强大的日志功能只用花费极低的计算和存储性能。而且它最大可支持的存储容量为18EB,这几乎知足了全部需求。性能

在拿到了一块新的硬盘存储设备后,也须要先分区(可选),而后再格式化(必须)文件系统,最后才能挂载并正常使用。学习

Linux系统中有一个名为super block的“硬盘地图”。里面记录着整个文件系统的信息。Linux会把每一个文件的权限与属性记录在inode中,并且每一个文件占用一个独立的inode表格,该表格的大小默认为128字节,里面记录着以下信息:

 

文件的实际内容则保存在block块中(大小能够是1KB、2KB或4KB),一个inode的默认大小仅为128B(Ext3),记录一个block则消耗4B。当文件的inode被写满后,Linux系统会自动分配出一个block块,专门用于像inode那样记录其余block块的信息,这样把各个block块的内容串到一块儿,就可以让用户读到完整的文件内容了。 

计算机系统在发展过程当中产生了众多的文件系统,为了使用户在读取或写入文件时不用关心底层的硬盘结构,Linux内核中的软件层为用户程序提供了一个VFS(Virtual File System,虚拟文件系统)接口,这样用户实际上在操做文件时就是统一对这个虚拟文件系统进行操做了。

 

  • 该文件的访问权限(read、write、execute);
  • 该文件的全部者与所属组(owner、group);
  • 该文件的大小(size);
  • 该文件的建立或内容修改时间(ctime);
  • 该文件的最后一次访问时间(atime);
  • 该文件的修改时间(mtime);
  • 文件的特殊权限(SUID、SGID、SBIT);
  • 该文件的真实数据地址(point)。 

6.4 挂载硬件设备

当用户须要使用硬盘设备或分区中的数据时,须要先将其与一个已存在的目录文件进行关联,而这个关联动做就是“挂载”。

/etc/fstab
字段 意义
设备文件 通常为设备的路径+设备名称,也能够写惟一识别码(UUID,Universally Unique Identifier)
挂载目录 指定要挂载到的目录,需在挂载前建立好
格式类型 指定文件系统的格式,好比Ext三、Ext四、XFS、SWAP、iso9660(此为光盘设备)等
权限选项 若设置为defaults,则默认权限为:rw, suid, dev, exec, auto, nouser, async
是否备份 若为1则开机后使用dump进行磁盘备份,为0则不备份
是否自检 若为1则开机后自动进行磁盘自检,为0则不自检

umount命令用于撤销已经挂载的设备文件,格式为“umount [挂载点/设备文件]”

6.5 添加硬盘设备

fdisk命令用于管理磁盘分区,格式为“fdisk  [磁盘名称]”,它提供了集添加、删除、转换分区等功能于一身的“一站式分区服务”。

参数 做用
m 查看所有可用的参数
n 添加新的分区
d 删除某个分区信息
l 列出全部可用的分区类型
t 改变某个分区的类型
p 查看分区表信息
w 保存并退出
q 不保存直接退出

输入参数n尝试添加新的分区。系统会要求您是选择继续输入参数p来建立主分区,仍是输入参数e来建立扩展分区。

在上述步骤执行完毕以后,Linux系统会自动把这个硬盘主分区抽象成/dev/sdb1设备文件。咱们可使用file命令查看该文件,有些时候系统并无自动把分区信息同步给Linux内核,能够输入partprobe命令手动将分区信息同步到内核,并且通常推荐连续两次执行该命令,效果会更好。(或重启计算机)

在Linux系统中用于格式化操做的命令是mkfs。

最后使用df -h命令来查看挂载状态和硬盘使用量信息。

用于查看文件数据占用量的du命令,其格式为“du [选项] [文件]”。

可使用du -sh /*命令来查看在Linux系统根目录下全部一级目录分别占用的空间大小。

6.6 添加交换分区

交换分区的划分建议:在生产环境中,交换分区的大小通常为真实物理内存的1.5~2倍

使用SWAP分区专用的格式化命令mkswap,对新建的主分区进行格式化操做使用swapon命令把准备好的SWAP分区设备正式挂载到系统中,咱们可使用free -m命令查看交换分区的大小变化。

6.7 磁盘容量配额

root管理员就须要使用磁盘容量配额服务来限制某位用户或某个用户组针对特定文件夹可使用的最大硬盘空间或最大文件个数。

  • 软限制:当达到软限制时会提示用户,但仍容许用户在限定的额度内继续使用。
  • 硬限制:当达到硬限制时会提示用户,且强制终止用户的操做。

RHEL 7系统中已经安装了quota磁盘容量配额服务程序包,但存储设备却默认没有开启对quota的支持,此时须要手动编辑配置文件,让RHEL 7系统中的/boot目录可以支持quota磁盘配额技术。另外,对于学习过早期的Linux系统,或者具备RHEL 6系统使用经验的读者来讲,这里须要特别注意。早期的Linux系统要想让硬盘设备支持quota磁盘容量配额服务,使用的是usrquota参数,而RHEL 7系统使用的则是uquota参数。在重启系统后使用mount命令查看,便可发现/boot目录已经支持quota磁盘配额技术了:

[root@linuxprobe ~]# vim /etc/fstab
UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults,uquota 1 2
[root@linuxprobe ~]# reboot
[root@linuxprobe ~]# mount | grep boot
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,usrquota)

建立一个用于检查quota磁盘容量配额效果的用户tom,并针对/boot目录增长其余人的写权限,保证用户可以正常写入数据:

[root@linuxprobe ~]# useradd tom
[root@linuxprobe ~]# chmod -Rf o+w /boot

1.  xfs_quota命令

[root@linuxprobe ~]# xfs_quota -x -c 'limit bsoft=3m bhard=6m isoft=3 ihard=6 tom' /boot
[root@linuxprobe ~]# xfs_quota -x -c report /boot
[tom@linuxprobe ~]$ dd if=/dev/zero of=/boot/tom bs=5M count=1

其中,-c参数用于以参数的形式设置要执行的命令;-x参数是专家模式,让运维人员可以对quota服务进行更多复杂的配置。

2.  edquota命令

edquota命令用于编辑用户的quota配额限制,格式为“edquota [参数] [用户] ”。在为用户设置了quota磁盘容量配额限制后,可使用edquota命令按需修改限额的数值。其中,-u参数表示要针对哪一个用户进行设置;-g参数表示要针对哪一个用户组进行设置。

6.8 软硬方式连接

硬连接(hard link):能够将它理解为一个“指向原始文件inode的指针”,系统不为它分配独立的inode和文件。因此,硬连接文件与原始文件实际上是同一个文件,只是名字不一样。咱们每添加一个硬连接,该文件的inode链接数就会增长1;并且只有当该文件的inode链接数为0时,才算完全将它删除。换言之,因为硬连接其实是指向原文件inode的指针,所以即使原始文件被删除,依然能够经过硬连接文件来访问。须要注意的是,因为技术的局限性,咱们不能跨分区对目录文件进行连接。

软连接(也称为符号连接[symbolic link]):仅仅包含所连接文件的路径名,所以能连接目录文件,也能够跨越文件系统进行连接。可是,当原始文件被删除后,连接文件也将失效,从这一点上来讲与Windows系统中的“快捷方式”具备同样的性质。

ln命令中可用的参数以及做用
参数 做用
-s 建立“符号连接”(若是不带-s参数,则默认建立硬连接)
-f 强制建立文件或目录的连接
-i 覆盖前先询问
-v 显示建立连接的过程