如何理解Linux下的根目录?(Linux根目录满了怎么办?)

如何理解Linux下的根目录?
一.什么是根?
1.Window系统分区
为更好的理解根分区,现在拿Windows来理解。Window系统一般有C盘,D盘,E盘等,每个盘都有一个盘符,用来标记它是什么盘,我们把盘符和硬盘分区建立联系的过程,叫做挂载。分区是操作系统的逻辑概念,事实上硬盘本身是并不存在分区的。
与硬盘分区建立联系的系统盘符称为“挂载点”,比如C、D、E等都可以称为挂载点。Windows的挂载是“自动的”,当你启动Windows系统的时候,会自动出现C盘、D盘、E盘等,当你把U盘插入Windows系统电脑的USB接口时,自动创建一个新的分区,比如F、G、H盘符等,不需要人为操作。
我们可以把C盘、D盘和E盘理解为/(根),每个盘符就是一个根。
2.Linux分区
/可以理解为在Windows系统上C盘的盘符,在Linux系统当中只准存在一个盘即/,如果再创建分区,这些分区只能往/下面去挂载,比如将新分的一个分区sda1,如果想使用这个分区必须将该分区挂载到/分区下面的一个目录上,我将此分区挂载到/boot下面了,当在/boot下面写数据的时候,其实是在分区sda1里面存取的,/目录所在分区是sda2分区。在Linux下面新创建的分区只能往/目录下面挂载到某一个目录上,如果该目录存在数据,去挂载一个分区,那么该目录原有数据将不再显示,出现的将是新增加分区的数据。
二.Linux系统目录结构
Linux系统中一切皆文件,文件就要有一定的组织方式,Linux是以树形组织文件,LSB(linux标准库)下的FHS标准规定了目录结构,也就是说所有Linux发行版都要遵守这个标准。
文件系统层次结构
Linux系统中的所有文件存储在文件系统中,它们被组织到一个颠倒的目录树中,称为文件系统层级结构。这棵树是颠倒的,因为树根在该层次结构的顶部,树根的下方延伸出目录和子目录的分支。
/
根目录所有的文件和目录,皆是由根目录延伸。位于文件系统层次结构的顶部,/字符还用作文件名中的目录分隔符。/的子目录用于标准化的用途,以便根据文件和用途组织文件,还可以方便查找文件。
/boot
开机启动过程所需的文件,比如:内核文件,引导文件,驱动文件,boot目录一般在200M左右。
/opt
第三方应用程序的安装位置,兼容老程序,系统附件就装在这个目录中。
/srv
系统自行管理的服务用到的数据
/usr
全局共享只读数据目录,可独立分区。编辑安装的第三方软件、共享的库,包括文件和静态只读程序数据,重要的子目录:/usr/bin,用户命令;/usr/sbin,系统管理命令;/usr/local,第三方应用程序的安装位置,本地自定义软件。
/etc
系统配置文件。
/var
系统的可变数据,在系统启动之间保持永久性。动态变化的文件,如:数据库、缓存目录、日志文件、打印机后台处理文档和网站内容。可独立分区。
/run
自本次系统启动以来启动的进程的运行时数据。包括进程ID文件和锁定文件等。此目录中的内容在重启时会重新创建。
/root
超级用户root的家目录。
/home
普通用户的个人数据和配置文件的主目录,每切换用户时,首先就是切换到用户的家目录,每个用户的家目录里面有这个用户特有的环境变量,可以用ls -a查看有四个.bash开头的文件,就是这个用户的环境变量。比如:在root家目录下.bash_profile定义一个环境变量,export dd=test,在其它用户echo$dd,是不能输出的。工作中有可能需要为某些用户设置独有的环境变量。
/proc
用于输出内核和进程信息相关的虚拟文件系统,放置的是内存数据,不会占用磁盘空间,内存里有什么:1.系统开机时的硬件信息,比如;CPU的信息:/proc/cpuinfo,内存信息:/pro/meminfo。2进程信息,数字命名的文件都是进程的信息,数字代表这个进程的PID。
/sys
用于输出当前系统上硬件设备相关信息的虚拟文件系统。
/tmp
临时文件目录,供临时文件使用的全局可写空间,10天内未访问、未更改或未修改的文件将自动从该目录中删除,还有一个临时目录/var/tmp,该目录中的文件如果在30天内未曾访问、更改或修改过,将被自动删除。
/dev
设备文件目录,包含特殊设备文件,供系统用于访问硬件。
/media
便携式移动设备挂载目录,比如:U盘,光盘等。
/mnt
临时挂载用
/bin
供所有用户使用的基本命令,不能独立分区,系统启动时会用到的程序/sbin管理类的基本命令,不能独立分区,系统启动时会用到的程序。
/lib
基本共享库文件,以及内核模块文件。
/lib64
专用于64位系统上的共享库文件。
注意:etc,bin,sbin,lib这几个目录必须和根目录在同一个分区。
在RHEL7中/下面的4个较旧的目录现在与它们在/usr中对应的目录拥有完全相同的内容:/bin和/usr/bin、/sbin和/usr/sbin、/lib和/usr/lib、/lib64和/usr/lib64,/中的目录是/usr中对应目录的符号链接(软链接)。

 

Linux根目录满了怎么办?
一、背景
在项目上、测试环境中经常遇到根目录空间满,同时在安装系统过程中是自动分配目录空间只有50G,加上长时间运行环境难免会产生日志等相关信息出现根目录满引起一些监控告警、从而导致业务服务无法启动。
经常通过du -h -x --max-depth=1 命令去排查具体哪个目录占用空间,而却找不到问题点,可以通过扩容的方式来解决根目录空间满的问题。
二、扩容操作步骤
扩容钱截图如下,本次扩容根目录,在home目录释放出空间注意:
操作之前/home目录下数据需要备份出来,避免数据丢失。
1、解除home目录并解挂
(1)、首先杀死home目录挂载进程
命令如下:
[root@SAMB08 ~]# fuser -km /home/
(2)、卸载home目录
命令如下:
[root@SAMB08 ~]# umount /home/
2、删除centos-home卷
命令如下:
[root@SAMB08 ~]# lvremove /dev/mapper/centos-homeDo you really want to remove active logical volume home? [y/n]: yLogical volume "home" successfully removed3、centos-root卷追加空间
命令如下:
[root@SAMB08 ~]# lvextend -L +100G /dev/mapper/centos-rootSize of logical volume centos/root changed from 50.00 GiB (12800 extents) to 150.00 GiB (38400 extents).
Logical volume root successfully resized.
[root@SAMB08 ~]#
4、扩展到root文件系统
命令如下:
[root@SAMB08 ~]# xfs_growfs /dev/mapper/centos-rootmeta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=3276800 blks= sectsz=512 attr=2, projid32bit=1= crc=0 finobt=0data = bsize=4096 blocks=13107200, imaxpct=25= sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=0log =internal bsize=4096 blocks=6400, version=2= sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0data blocks changed from 13107200 to 39321600[root@SAMB08 ~]#
5、创建centos-home卷
命令如下:
[root@SAMB08 ~]# lvcreate -L 60G -n /dev/mapper/centos-homeLogical volume "home" created.
[root@SAMB08 ~]#
6、格式化文件系统
命令如下:
[root@SAMB08 ~]# mkfs.xfs /dev/mapper/centos-homemeta-data=/dev/mapper/centos-home isize=256 agcount=4, agsize=3932160 blks= sectsz=512 attr=2, projid32bit=1= crc=0 finobt=0data = bsize=4096 blocks=15728640, imaxpct=25= sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=0log =internal log bsize=4096 blocks=7680, version=2= sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0[root@SAMB08 ~]#
7、挂载home目录
命令如下:
[root@SAMB08 ~]# mount /dev/mapper/centos-home /home/根目录扩容成功。。。