linux-运维进阶-11 存储结构与磁盘划分
Linux文件结构
Linux 文件系统是一个目录树的结构,文件系统结构从一个根目录开始,根目录下可以有任意多个文件和子目录,子目录中又可以有任意多个文件和子目录。Linux 的这种文件系统结构使得一个目录和它包含的文件/子目录之间形成一种层次关系。
物理设备的命名规则
硬件设备 | 文件名称 |
---|---|
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/ht0 |
主分区或扩展分区的编号从1开始,到4结束; •逻辑分区从编号5开始。
文件系统
Ext3
一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分之百地保证资料不会丢失。它会把整个磁盘的每个写入动作的细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断的部分,然后尝试进行修复。
Ext4
Ext3的改进版本,作为RHEL 6系统中的默认文件管理系统,它支持的存储容量高达1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外,Ext4文件系统能够批量分配block块,从而极大地提高了读写效率。
XFS
一种高性能的日志文件系统,而且是RHEL 7中默认的文件管理系统,它的优势在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的日志功能只用花费极低的计算和存储性能。并且它最大可支持的存储容量为18EB,这几乎满足了所有需求。
挂载
在windows操作系统中, 挂载通常是指给磁盘分区(包括被虚拟出来的磁盘分区)分配一个盘符。 第三方软件,如磁盘分区管理软件、虚拟磁盘软件等,通常也附带挂载功能。
在linux操作系统中, 挂载是指将一个设备(通常是存储设备)挂接到一个已存在的目录上。 我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上, 然后通过访问这个目录来访问存储设备。
在linux 操作系统中,挂载是一个非常重要的功能,使用非常频繁。它指将一个设备(通常是存储设备)挂接到一个已存在的目录上。(这个目录可以不为空,但挂载后这个目录下以前的内容将不可用。)需要理解的是,linux操作系统将所有的设备都看作文件,它将整个计算机的资源都整合。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过访问这个目录来访问存储设备。
举个栗子:
1 | [root@localhost ~]# cd /dev |
如上,我们的/dev目录下有个叫做cdrom的文件(就是指设备,设备也是一种文件),但是我们没办法cd到这个文件(设备)里面去看它究竟包含了哪些东西。所以呢,我们可以新建一个目录/mnt/cdrom/,然后把原来的cdrom文件(设备)挂载到/mnt/cdrom/这个目录底下,此时你可以cd到/mnt/cdrom/目录下看看,多出来一堆东西就是原来的cdrom文件(设备)里包含的东西了。
1 | [root@localhost dev]# mkdir -p /mnt/cdrom |
挂载条件
1、挂载点必须是一个目录。
2、一个分区挂载在一个已存在的目录上,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用。对于其他操作系统建立的文件系统的挂载也是这样。
挂载硬件设备
mount
mount命令用于挂载文件系统,格式为
1 | mount 文件系统 挂载目录 |
临时挂载、使用mount命令来查看mount的挂载情况举例:
1 | [root@localhost ~]# cd /mnt |
卸载文件系统(取消挂载)的两种方法
1 | [root@localhost ~]# ls /mnt/cdrom/ |
umount 的时候要求目标设备没有在使用中,比如当前没有用户cd到这个目录
1 | [root@localhost ~]# cd /mnt/cdrom/ |
开机自动挂载
注意:现在咱们是继续上面的实验继续做,也就是说,上面咱们已经把挂载好的卸载掉了,/mnt/cdrom/现在仅仅是空目录,现在先让它空着就好!呐:
1 | [root@localhost ~]# ls /mnt/cdrom/ |
接下来咱们开始做开机自动挂载
在/etc目录下有个fstab文件,它里面列出了linux开机时自动挂载的文件系统的列表。
编辑/etc/fstab文件使分区开机自动挂载
1 | [root@localhost cdrom]# vim /etc/fstab |
字段 | 意义 |
---|---|
设备文件 | 一般为设备的路径+设备名称,也可以写唯一识别码(UUID,Universally Unique Identifier) |
挂载目录 | 指定要挂载到的目录,需在挂载前创建好 |
格式类型 | 指定文件系统的格式,比如Ext3、Ext4、XFS、SWAP、iso9660(此为光盘设备)等 |
权限选项 | 若设置为defaults,则默认权限为:rw, suid, dev, exec, auto, nouser, async |
是否备份 | 若为1则开机后使用dump进行磁盘备份,为0则不备份 |
是否自检 | 若为1则开机后自动进行磁盘自检,为0则不自检 |
mount -a命令可以重新加载fstab文件测试此文件是否修改成功且配置生效,如果哪里出错它会显示出来
1 | [root@localhost ~]# mount -a |
如上,哎,出错了 QAQ。如果刚刚没有用mount -a检查一下就重启,后面就会遇到一系列问题。
解决思路:把你出错的提示复制下来,百度一下即可。我了个去,刚刚百度花了快十分钟,才找到问题所在,其实虽然从报错字面wrong fs type可以看出是我的文件格式类型写错了,也就是不能写ext4,关键是我也不知道写啥呀。万能的百度上搜到的,原来就是咱们上面敲过的命令:
1 | [root@localhost cdrom]# mount | grep /mnt/cdrom #注意这里cdrom后面没有符号/ |
我刚刚没有认真看它的type是iso9660,于是后面就写错了,现在改正:
1 | [root@localhost ~]# vim /etc/fstab |
然后再检查一下,就没有报错了!同时顺带检查了一下挂载情况,的确挂载成功了!
1 | [root@localhost ~]# mount -a |
重启
1 | [root@localhost ~]# reboot |
再次检查
1 | [root@localhost ~]# ls /mnt/cdrom/ |
可以看到,上面的挂载并未消失,所以这个开机自动挂载是成功滴!
磁盘分区
fdisk工具:
在Linux系统中,管理硬盘设备最常用的方法就当属fdisk命令了。fdisk命令用于管理磁盘分区它提供了集添加、删除、转换分区等功能于一身的“一站式分区服务”,格式为
1 | fdisk [磁盘名称] |
题目:添加一块20G硬盘,分出一个5G大小的分区,分区格式分别为xfs,将分区通过UUID永久挂载到/mnt/note目录
首先,查看硬盘及分区信息
1 | [root@localhost ~]# fdisk -l |
可以看出,Disk /dev/sda: 21.5 GB说明只有一块磁盘,我们现在给它加上第二块磁盘:
然后再次查看硬盘及分区信息:
1 | [root@localhost ~]# fdisk -l |
可以看到多出了Disk /dev/sdb: 21.5 GB的另一块磁盘。咱们接下来就在这个新磁盘上完成题目要求
1 | # 1.使用fdisk分出一个大小为5G的分区 |
df -h
用于查看文件系统的使用情况
1 | [root@localhost ~]# df -h |
du -sh
用于查看文件数据占用量的du命令,其格式为
1 | du [选项] [文件] |
1 | [root@localhost ~]# cd / |
交换分区
题目:添加一个3G大小的交换分区,删除原先系统里的交换分区fstab挂载(如下图有“swap”的那一行),然后再用mount -a命令重新挂载fstab文件,还要敲下面的命令关闭当前系统生效的交换分区
1 | [root@localhost ~]# swapoff /dev/mapper/centos-swap |
1.首先添加一块3G的分区sdb2
1 | [root@localhost ~]# fdisk /dev/sdb |
2.将分区格式化为交换分区
1 | [root@localhost ~]# mkswap /dev/sdb2 |
3.让交换分区能开机启动生效
1 | [root@localhost ~]# blkid | grep /dev/sdb2 |
磁盘配额
为了限制用户在分区上使用磁盘的容量,利用磁盘限额技术来限制,一般应用场景有网盘、邮箱,还有网络论坛用户上传文件限制等等。
修改/etc/fstab中的类型字段来开启分期的磁盘配额功能
1 | [root@localhost ~]# vim /etc/fstab |