Linux 磁盘与文件系统管理
@[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、作为挂载点的目录理论上应该都是空目录。(这说的不还是我吗。。。)
人不可能被说服,只能被天启。
所以多说无益,自己动手试试就知道了。
- 点赞
- 收藏
- 关注作者
评论(0)