计算机系统应用教程网站

网站首页 > 技术文章 正文

Linux基础知识之Linux启动流程继续分析

btikc 2024-09-03 11:32:54 技术文章 11 ℃ 0 评论

Linux系统中磁盘空间满和inode满的现象,是不同的。inode是文件存储在磁盘的块上,inode用来记录文件的元信息。比如文件的字节数、所有者、读写权限、时间戳、块位置等,可以通过stat filename查看元数据信息。

Inode满了,一般是无法记录新文件的元数据信息,磁盘出现只读的现象,但是磁盘的空间还是有剩余的。

inode满了之后,需要删除对应挂载分区下面的小文件,释放inode数量。执行df -i查看inode的使用数量和使用率。

如果磁盘的硬盘空间满了,那么写数据到磁盘上会报错,会提示:No space left on device,磁盘是只读的,但是可以创建空文件。所有写磁盘的操作命令,都是无法使用的。

可以执行df -Th命令,然后看到使用率比较高的分区,进入到目录后执行du -sh * | grep G| sort -rn,然后去使用率特别高的目录,删除一些日志。还有lsof | grep deleted,去重启进程删除这些进程使用的已经标记为“已删除”的文件。查找这种未释放系统空间的文件,磁盘的空间就会被释放了,空闲空间就会增多。

一般在服务器异常断电、重启或者磁盘异常的情况下,文件系统会自我保护,操作系统的分区变成只读的状态。执行fsck或者xfs_check、xfs_repair对设备的文件进行扫描和修复。fsck命令一定要先把设备umount掉之后,才能进行。因为fsck对已经挂载使用的设备,会造成文件系统损坏。先把服务器的操作系统中的分区umount卸载掉,然后执行fsck -y /dev/sdx修复设备的文件系统。如果是/dev/sda1系统分区异常了,无法直接卸载系统分区,就需要重启服务器,进入救援模式或者修复模式后,再去执行fsck命令。服务器已经无法操作的情况,可以进入单用户模式去执行fsck或者xfs_check,例如:fsck -y /dev/sda1然后执行xfs_repair去修复文件系统。

重启后如果服务器无法正常启动,进入单用户模式后,无法touch新建文件,报错read-only file system。那么是系统启动过程中,需要读取根目录的启动信息,根目录有可能在各种设备上。比如:scsi、sata、u-disk等,但是相关的驱动程序编入内核又很不方便,导致内核的容量很大。所以通过加载一个小型的根目录,这个根目录包含启动阶段必须的驱动、脚本等,然后在里面加载各种驱动程序,就可以挂载真正的根目录了。这种小型的根目录就是/boot/grub2/grub.cfg里面指定的initramfs-$(uname -r),早期的是initrd,可以理解成为一个临时性的根目录文件系统。一般initramfs启动文件损坏,那么可以使用老版本的内核去替换解决。如果是sysinit文件没了,也会导致文件系统无法挂载。这种时候换内存无法实现,需要更换一份sysinit文件。

鼓励的话语:青春没有售价,起伏路在脚下!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表