【鸟哥的linux私房菜-学习笔记】文件系统管理

文件系统的简单操作

磁盘与目录的容量

df:列出文件系统的整体磁盘使用量;
du:评估文件系统的磁盘使用量(常用在估计目录所占容量)

**使用du时可能会出现次目录累加,需要加-S参数~

输出的结果信息为:

Filesystem:代表该文件系统是在哪个 partition ,所以列出装置名称;
1k-blocks:说明底下的数字单位是 1KB,可利用 -h 或 -m 来改变容量;
Used:顾名思义,就是使用掉的硬盘空间;
Available:也就是剩下的磁盘空间大小;
Use%:磁盘的使用率。如果使用率高达 90% 以上时, 最好需要注意一下了,免得容量不足造成系统问题;
Mounted on:就是磁盘挂载的目录所在(挂载点)。

实体链接与符号链接: ln

透过文件系统的 inode 连结来产生新档名,而不是产生新文件。

简单的说,hard link 只是在某个目录下新增一笔档名链接到某 inode 号码的关连记录而已。

因此,对其中任何一个文件的操作,保存之后另一个文件的内容也跟着改动(因为事实上两者是链接到同一哥inode上)。

hard link 是有限制的:

不能跨 Filesystem;
不能 link 目录。 

例子: ln /etc/crontab . :在当前目录下创建crontab的实体链接。

类似 Windows 的快捷方式功能的文件,可以让你快速的链接到目标文件(或目录)

Symbolic link 就是创建一个独立的文件,会占用inode和block,block中存放的是所指向的文件的档名。由于只是利用文件来做为指向的动作, 所以,当来源档被删除之后,symbolic link 的文件会失效。

例子: ln -s /etc/crontab crontab2

关于目录的link数量(ls -l显示的第二个字段)

当我们创建一个新目录名称为 /tmp/testing 时,基本上会有三个东西,那就是:

/tmp/testing
/tmp/testing/.
/tmp/testing/..

而其中 /tmp/testing 与 /tmp/testing/. 其实是一样的,都代表该目录~而 /tmp/testing/.. 则代表 /tmp 这个目录,所以说,当我们创建一个新的目录时, 新的目录的 link 数为 2 ,而上一级目录的 link 数则会添加 1 。

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

如果我们想要在系统里面新增一颗硬盘,应该做以下动作:

对磁盘进行分割,以创建可用的 partition ;
对该 partition 进行格式化( format ),以创建系统可用的 filesystem;
若想要仔细一点,则可对刚刚创建好的 filesystem 进行检验;
在 Linux 系统上,需要创建挂载点 ( 亦即是目录 ),并将他挂载上来;

磁盘分区: fdisk

可先用df查看根目录所在的磁盘。

之后fdisk /dev/sda (磁盘名,注意不用加数字),输入m可以查看菜单。

做完分割之后,可以reboot重启生效,或者用 partprobe 这个命令,它仅是告知核心必须要读取新的分割表而已,因此并不会在屏幕上出现任何信息。

操作环境的说明:

以 root 的身份进行硬盘的 partition 时,在单人维护模式底下比较安全一些, 此外,在进行 fdisk 的时候,如果该硬盘某个 partition 还在使用当中, 那么很有可能系统核心会无法重载硬盘的 partition table ,解决的方法就是将该使用中的 partition 给他卸除,然后再重新进入 fdisk 一遍,重新写入 partition table ,那么就可以成功。

磁盘格式化:mkfs(make filesystem)

mkfs [tab][tab]可看mkfs支持的文件格式。(事实上,mkfs是一个综合命令)

使用mke2fs则可指定格式化的一些细部配置。

磁盘检验: fsck, badblocks

fsck(filesystem check):用来检查与修正文件系统错误的命令。注意:通常只有身为 root 且文件系统有问题的时候才使用这个命令,否则在正常状况下使用此一命令, 可能会造成对系统的危害!通常使用这个命令的场合都是在系统出现极大的问题,导致你在 Linux 启动的时候得进入单人单机模式下进行维护的行为时,才必须使用此一命令!运行 fsck 时, 被检查的 partition 务必不可挂载到系统上,即需要在卸除的状态!
(实际上,我们运行的 fsck 命令,其实是呼叫 e2fsck 这个软件)

badblocks:用来检查硬盘或软盘扇区有没有坏轨的命令。

磁盘挂载与卸除

注意事项:

单一文件系统不应该被重复挂载在不同的挂载点(目录)中;
单一目录不应该重复挂载多个文件系统;
要作为挂载点的目录,理论上应该都是空目录才是。

利用『mount 装置文件名 挂载点』进行挂载。

使用 Label name 进行挂载的方法: 使用 dumpe2fs查询装置标头,用mount挂载时用标头代替文件名。好处:系统不必知道该文件系统所在的接口与磁盘文件名;坏处:不能随意修改标头。

umount:将装置文件卸除。

磁盘参数修订:mknod,e2label,tune2fs,hdparm

配置启动挂载

启动挂载 /etc/fstab 及 /etc/mtab

系统挂载的一些限制:

根目录 / 是必须挂载的﹐而且一定要先于其它 mount point 被挂载进来。
其它 mount point 必须为已创建的目录﹐可任意指定﹐但一定要遵守必须的系统目录架构原则
所有 mount point 在同一时间之内﹐只能挂载一次。
所有 partition 在同一时间之内﹐只能挂载一次。
如若进行卸除﹐您必须先将工作目录移到 mount point(及其子目录) 之外。

/etc/fstab (filesystem table) 就是将我们利用 mount 命令进行挂载时, 将所有的选项与参数写入到这个文件中。除此之外, /etc/fstab 还加入了 dump 这个备份用命令的支持! 与启动时是否进行文件系统检验 fsck 等命令有关。

用cat查阅下/etc/fstab:
第一栏:磁盘装置文件名或该装置的 Label;

第二栏:挂载点 (mount point);

第三栏:磁盘分区槽的文件系统;

第四栏:文件系统参数:

参数内容意义
async/sync(异步/同步)配置磁盘是否以异步方式运行!默认为 async(效能较佳)
auto/noauto(自动/非自动)当下达 mount -a 时,此文件系统是否会被主动测试挂载。默认为 auto。
rw/ro(可擦写/只读)让该分割槽以可擦写或者是只读的型态挂载上来,如果你想要分享的数据是不给用户随意变更的, 这里也能够配置为只读。则不论在此文件系统的文件是否配置 w 权限,都无法写入!
exec/noexec(可运行/不可运行)限制在此文件系统内是否可以进行『运行』的工作?如果是纯粹用来储存数据的, 那么可以配置为 noexec 会比较安全,相对的,会比较麻烦!
user/nouser(允许/不允许使用者挂载)是否允许用户使用 mount 命令来挂载呢?一般而言,我们当然不希望一般身份的 user 能使用 mount,因为太不安全了,因此这里应该要配置为 nouser!
suid/nosuid(具有/不具有 suid 权限)该文件系统是否允许 SUID 的存在?如果不是运行文件放置目录,也可以配置为 nosuid 来取消这个功能!
usrquota注意名称是『 usrquota 』不要拼错了!这个是在启动 filesystem 支持磁盘配额模式。
grpquota注意名称是『grpquota』,启动 filesystem 对群组磁盘配额模式的支持。
defaults同时具有 rw, suid, dev, exec, auto, nouser, async 等参数。 基本上,默认情况使用 defaults 配置即可!

第五栏:能否被 dump 备份命令作用: 0 代表不要做 dump 备份, 1 代表要每天进行 dump 的动作。 2 也代表其他不定日期的 dump 备份动作, 通常这个数值不是 0 就是 1 。

第六栏:是否以 fsck 检验扇区:0 是不要检验, 1 表示最早检验(一般只有根目录会配置为 1), 2 也是要检验,不过 1 会比较早被检验! 一般来说,根目录配置为 1 ,其他的要检验的 filesystem 都配置为 2 就好了。

**parted:用来划分大于2TB的分割槽。

重点回顾

基本上 Linux 的正统文件系统为 Ext2 ,该文件系统内的信息主要有:

superblock:记录此 filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及文件系统的格式与相关信息等;

inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的 block 号码;

block:实际记录文件的内容,若文件太大时,会占用多个 block 。

Ext2 文件系统的数据存取为索引式文件系统(indexed allocation)

需要碎片整理的原因就是文件写入的 block 太过于离散了,此时文件读取的效能将会变的很差所致。 这个时候可以透过碎片整理将同一个文件所属的 blocks 汇整在一起。

Ext2文件系统主要有:boot sector, superblock, inode bitmap, block bitmap, inode table, data block 等六大部分。

data block 是用来放置文件内容数据地方,在 Ext2 文件系统中所支持的 block 大小有 1K, 2K 及 4K 三种而已

inode 记录文件的属性/权限等数据,其他重要项目为: 每个 inode 大小均固定为 128 bytes; 每个文件都仅会占用一个 inode 而已; 因此文件系统能够创建的文件数量与 inode 的数量有关;

文件的 block 在记录文件的实际数据,目录的 block 则在记录该目录底下文件名与其 inode 号码的对照表;

日志式文件系统 (journal) 会多出一块记录区,随时记载文件系统的主要活动,可加快系统复原时间;

Linux 文件系统为添加效能,会让主存储器作为大量的磁盘高速缓存;

实体链接只是多了一个文件名对该 inode 号码的链接而已;

符号链接就类似Windows的快捷方式功能。

磁盘的使用必需要经过:分割、格式化与挂载,分别惯用的命令为:fdisk, mkfs, mount三个命令

启动自动挂载可参考/etc/fstab之配置,配置完毕务必使用 mount -a 测试语法正确否。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值