Linux 磁盘与文件系统管理

举报
看,未来 发表于 2021/12/24 21:13:07 2021/12/24
【摘要】 @[toc] 磁盘分区linux磁盘分区主要分为基本分区(primary partion)和扩充分区(extension partion)两种,基本分区和扩充分区的数目之和不能大于四个(由于分区表只有64bytes而已,最多只能容纳四个分区)。且基本分区可以马上被使用但不能再分区。扩充分区必须再进行分区后才能使用,也就是说它必须还要进行二次分区。理论上允许一个硬盘只有1个主分区,其它空间都分...

请添加图片描述

@[toc]

磁盘分区

linux磁盘分区主要分为基本分区(primary partion)和扩充分区(extension partion)两种,基本分区和扩充分区的数目之和不能大于四个(由于分区表只有64bytes而已,最多只能容纳四个分区)。且基本分区可以马上被使用但不能再分区。扩充分区必须再进行分区后才能使用,也就是说它必须还要进行二次分区。理论上允许一个硬盘只有1个主分区,其它空间都分配给扩展分区(难道这不是默认安装下的普遍现象吗?)。

磁盘由盘片,机械手臂,磁头,主轴马达组成,而数据的写入主要是在盘片上面,盘片上又细分为扇区与柱面两种单位,扇区每个为512bytes那么大 ,其中,磁盘的第一个扇区特别重要,因为磁盘的第一个扇区记录了两个重要的信息:

1、主引导分区:可以安装引导加载程序的地方。
2、分区表:记录整块硬盘分区的状态。

这个扇区如果物理损坏了,那这个磁盘也就报废了。


在Windows操作系统中,是先将物理地址分开,再在分区上建立目录.在Windows操作系统中,所有路径都是从盘符开始,如C://program file。

Linux正好相反,是先有目录,再将物理地址映射到目录中。在Linux操作系统中,所有路径都是从根目录开始。Linux默认可分为3个分区,分别是boot分区(约100MB.该分区存放Linux的Grub(bootloader)和内核源码)、swap分区(该分区没有对应的目录,故用户无法访问。
Linux下的swap分区即为虚拟内存.虚拟内存用于当系统内存空间不足时,先将临时数据存放在swap分区,等待一段时间后,然后再将数据调入到内存中执行)、根分区。

无论是Windows操作系统,还是Linux操作系统,每个分区均可以有不同的文件系统,如FAT32、NTFS、Yaffs2等。

逻辑分割的数量依操作系统而不同,在Linux系统中,IDE硬盘最多有59个) 逻辑分割(5号到63号), SATA硬盘则有11个) 逻辑分割(5号到15号)。
根据最新的 linux内核技术规范 中指示,逻辑分区可以无限。


linux各个目录的作用

/bin: /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。

/boot:放置linux系统启动时用到的一些文件。/boot/vmlinuz 为 linux 的内核文件,以及 /boot/gurb。建议单独分区,分区大小100M即可。

/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。

/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d修改配置文件之前记得备份。

注:/etc/X11 存放与 x windows 有关的设置。

/home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~edu 表示用户 edu 的家目录。建议单独分区,并设置较大的磁盘空间,方便用户存放数据。

/lib: /usr/lib: /usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,比较重要的目录为 /lib/modules。

/lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下,通常这个目录会自动出现在装置目录下。如加载硬盘于 /disk 中,此目录下就会自动产生目录 /disk/lost+found。

/mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。

/opt:给主机额外安装软件所摆放的目录。如:FC4使用的Fedora 社群开发软件,如果想要自行安装新的 KDE 桌面软件,可以将该软件安装在该目录下。以前的 Linux 系统中,习惯放置在 /usr/local 目录下。

/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。

/root:系统管理员root的家目录,系统第一个启动的分区为 /,所以最好将 /root和 /放置在一个分区下。

/sbin: /usr/sbin: /usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root使用的命令,一般用户只能"查看"而不能设置和使用。

/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。

/srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。

/usr:应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录,使用 man ls 时会查询 /usr/share/man/man1/ls.1.gz 的内容建议单独分区,设置较大的磁盘空间。

/var:放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。建议单独分区,设置较大的磁盘空间。


磁盘与目录的容量

df:列出文件系统的整体磁盘使用量

格式:df 【-ahikHTm】【目录或文件名】

-a:列出所有的文件系统,包括系统特有的/proc等文件系统

-h:以KB的容量显示各文件系统

-m:以MB的容量显示各文件系统

-h:以人们较易阅读的GB,MB,KB等格式自行显示

-H:以M=1000K替代M=1024K的进位方式

-T:连同该分区的文件系统名称(例ext4)也列出

-i:不用硬盘容量,而以inode的数量来显示

一般我用df -h


软/硬 连接

对于这个软、硬 连接,以前我是一直不明白的,不过看了这个比喻我是清楚了。

在linux中连接有两种,一种是类似Windows的快捷方式功能的文件,可以让你快速连接到目标文件;另一种则时通过文件系统的inode连接来产生新文件名,而不是产生新文件,这种成为硬连接。

文件名只与目录有关,但文件内容则与inode有关。hard link只是在某个目录下新建一条文件名连接到inode号码的关联记录而以。

[root@server3 mnt]# ll ss
-rw-r--r-- 1 root root 94 Dec  3 17:53 ss

[root@server3 mnt]# ln ss /media/kk      *做一个连接

[root@server3 mnt]# ll ss
-rw-r--r-- 2 root root 94 Dec  3 17:53 ss

[root@server3 mnt]# ll -i ss /media/kk
18160500 -rw-r--r-- 2 root root 94 Dec  3 17:53 /media/kk
18160500 -rw-r--r-- 2 root root 94 Dec  3 17:53 ss

由上我们可发现联合各文件名都连接到18160500的inode号码,其文件的权限,属性完全一样。因为这两个文件其实是一模一样的“文件”,而且“连接”字段的数字由1变成了2。

这里要注意以下,硬连接不能跨文件系统,也不能连接到目录上。连接到目录上很麻烦,所以干脆关闭这个通道。


symbolic link(符号连接,也称快捷方式,软连接)

symbolic link就是在创建一个独立的文件。而这个文件会让数据的读取指向它连接的那个文件的文件名。由于只是利用文件来作为指向的操作,所以,当源文件删除后,symbolic link的文件会无法打开。

[root@server3 mnt]# ln -s ss  kk

[root@server3 mnt]# ll -i ss kk

18162480 lrwxrwxrwx 1 root root  2 Jan  8 19:36 kk -> ss

18160500 -rw-r--r-- 1 root root 94 Dec  3 17:53 ss

由上面结果我们可以知道两个文件指向不同的inode号码,当然就是两个独立的文件存在。而且连接文件的重要内容就是它会写上目标文件的文件名。


ln
格式: ln 【-sf】 源文件 目标文件
-s:如果不加任何参数就进行连接,那就是hard link,至于-s 就是symbolic link
-f:如果目标文件存在时,就主动将目标文件直接删除后再创建

磁盘的分区、格式化、检验与挂载

lsblk (list block device)列出系统上的所有磁盘列表

[root@study ~] lsblk [-dfimpt] [device]
选项与参数:
-d : 仅列出磁盘本身,并不会列出该磁盘的分区数据
-f : 同时列出该磁盘内的文件系统名称
-i : 使用ASCII的字符输出
-m : 同时输出该设备在 /dev 下的权限信息
-p : 列出该设备的完整文件名
-t : 列出该磁盘设备的详细数据,包括磁盘阵列机制、与读写的数据量大小等

blkid 列出设备的 UUID 等参数

UUID时全局唯一标识符(Universally Unique Identifier),Linux会将系统内所有的设备都给予一个独一无二的标识符,这个标识符就可拿来作为挂载或是使用这个设备或文件系统。


磁盘分区:gdisk/fdisk

GPT分区表请使用【gdisk】分区、
MBR分区表请使用【fdisk】分区。

用法示例:

[root@study ~] gdisk 设备名称

[root@study ~] gdisk /dev/sda #设备名称后不要加数字,比如:/dev/sda1是错误的

在这里插入图片描述

不管进行什么操作,只要离开 gdisk 时按下【q】,那么所有的操作都不会生效,按下【w】就是写入、操作生效的意思。

关于这部分,其实我现在更倾向于用工具来解决:为什么我的虚拟机开机即卡死?以及我是怎么修补的


几个注意点

个人认为以下这几个注意点比较重要的,使用工具并不妨碍我们在没有经验的情况下错用工具呀!

在挂载前,最好先明确以下几件事:
1、单一文件系统不要被重复挂载在多个挂载点中。
2、单一挂载点不应该被重复挂载多个文件。(这说的不就是我吗。。。)
3、作为挂载点的目录理论上应该都是空目录。(这说的不还是我吗。。。)


人不可能被说服,只能被天启。

所以多说无益,自己动手试试就知道了。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。