LINUX系统学习笔记04-磁盘与文件系统管理

来源:互联网 发布:创维电视直播软件 编辑:程序博客网 时间:2024/06/09 00:35
四、磁盘与文件系统管理
4.1 索引式文件系统

Linux文件系统包括三个区块,分别为:
(1)superblock: 记录该文件系统的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式和相关信息等。
(2)inode: 记录文件的属性,一个文件占用一个inode,同时记录该文件的数据所在的block号码。
(3)block: 实际记录文件的内容,如果文件太大,会占用多个block。


4.2 ext2/ext3的文件存取
当我们新增一个文件时,文件系统的处理行为步骤为:
(1)审核用户是否与要新增文件的目录是否具有w和x权限,有才新增;
(2)根据inode bitmap 找到未使用的inode号码,并将新文件的权限/属性写入;
(3)根据block bitmap 找到未使用的block号码,并将实际的数据写入block中,并更新inode的block指向数据;
(4)将刚刚写入的inode和block数据同步更新inode bitmap和block bitmap,并更新superblock的内容。

ext3是ext2的升级版本,其日志是条件可以用于避免数据的损毁(比如突然断电引发上述步骤的中断)。

4.3 磁盘与目录的容量
df
-- 列出文件系统的整体磁盘使用量
语法: df [选项] 目录或文件
示例: df -m /usr
选项:
    -a 列出所有文件系统,包括系统特有的/proc等文件系统。
    -k 以KB为单位显示。
    -m 以MB为单位显示。
    -T 连同分区的文件系统类别(例如ext3)一并列出。
    -i 不用硬盘容量,而以inode的数量来显示。

4.4 硬链接和软链接
(1)硬链接(Hard Link) 

-- 相当于一个指针,指向文件索引节点,系统并不为它重新分配inode。比如我们为源文件file创建一个硬链接hardlink,此时file与hardlink都是链接到同一个inode的指针,具有同样的索引节点号和文件属性,删除其中一个,则只是删除了一个指针,并不会删除真正的文件。除非把所有的指针删除完毕,真正的文件才会真正被删除。
硬链接必须源文件与目标文件同在一个文件系统(及分区)上。
(2)软链接(Symbolic Link) 
软链接的源文件和软链接文件拥有不同的inode号,是两个不同的文件。建立软链接就是建立一个新文件,当访问链接文件时,系统就会发现它是一个链接文件,通过读取链接文件找到真正要访问的文件。
(3)硬链接/软链接的区别
a. 软链接可以跨文件系统(即是跨分区),硬链接仅可在同一个文件系统中。
b. 硬链接不管有多少个,都是指向同一个inode,会把节点连接数增加,只要节点链接非零,则文件就一直存在。
c. 软链接拥有自己的inode,它不直接使用inode作为文件指针,而是使用文件路径名作为指针,删除链接文件对源文件无影响,但是删除源文件,链接文件就会找不到要访问的文件。
(4)ln -- 创建链接文件
语法: ln [选项] 源文件 目标文件
示例: ln /usr/local/myfile /usr/myfile2
选项:
    -s 不加任何参数时就是硬链接,加上-s则软件链接。
    -f 强制创建。如果目标文件存在,则将其删除后再建立。


4.5 磁盘分区
一般处理步骤
如下:
(1)使用df命令查看可用的磁盘名称(比如为/dev/hdb)
(2)使用fdisk命令进行磁盘分区: fdisk /dev/hdb,进入fdisk程序工作界面。
在Command(m for help): 后输入对应的指令,指令内容可输入m查看。比如n为新增一个分区,d为删除分区,w将刚刚的动作写入分区表,q不保存退出。
a. 删除操作步骤如下:
    Command (m for help): d
--> Partition number(1-x): m  -- 要删除的分区编号,对应与hdbx
--> Command (m for help) : w --写入分区表
b. 新增分区步骤如下:
    Command (m for help): n
--> Command action
    e extended
    p primary partition(1-4) 
                            --分区类型:e为扩展分区,p为主分区。
--> Partition number(1-4): 4 -- 输入分区编号。
--> First cylinder(1-5005,default 1):  -- 该分区的第一个磁道,这里按下“enter”选择默认。
--> Last cylinder or + size or +sizeM or +sizeK (1-5005,,default 5005)  --该分区的最后一个磁道,也可以输入空间大小,比如+512M。
--> Command (m for help) : w --写入分区表

注意: ext3可以支持16TB以上的磁盘,但fdisk无法处理大于2TB以上的磁盘分区。此时需要使用parted指令。

4.6 磁盘格式化及检查
mkfs
-- make filesystem,格式化。
语法:mkfs [-t 文件系统格式] 磁盘分区名称   
    文件系统格式必须系统支持才会生效,比如ext3、ext2、vfat(经常用在格式化U盘)。

fsck -- filesystem check,磁盘检查。
badblocks -- 检查磁盘是否有坏区。

4.7.磁盘挂载与卸载
挂载点是目录,该目录是进入磁盘分区(即文件系统)的入口。挂载前需要确定几件事:
(1)单一文件系统只有一个挂载点。
(2)单一目录只挂载1个文件系统。
(3)挂载点理论上应该都是空目录。被挂载的目录如果不是空的,则挂载了文件系统后,原目录下的东西会暂时消失,需要卸载新的挂载点之后才能恢复。

mount -- 挂载
语法: mount [-t 文件系统] [-L Label名称] [-o 额外选项]\[-n] 被挂载的文件 挂载点
示例:
(1)查看已挂载的文件系统
# mount -l
(2)挂载ext2/ext3文件系统
# mkdir /mnt/hdc6
# mount /dev/hdc6 /mnt/hdc6
(3)挂载光驱
# mkdir /media/cdrom
# mount /dev/cdrom /media/cdrom
光驱一挂载就无法退出光盘,需要卸载方可退出。
(4)挂载虚拟光盘
# mkdir /mnt/myiso
# mount -o loop /usr/myiso.iso /mnt/myiso

unmount -- 卸载
语法: mount [-fn] 被挂载的文件或挂载点
选项:
    -f 强制卸载。
    -n 不更新/etc/mtab的情况下卸载。

4.8 开机挂载 /etc/fstab和/etc/mtab
直接修改/etc/fstab可以实现开机时自动挂载。
/etc/fatab包括6列,分别为:
第一列--磁盘装置文件名或该装置的Label。
第二列--挂载点。
第三列--磁盘分区的文件系统类型,如ext3、nfs、vfat等。
第四列--文件系统参数,比如
      async/sync 设定磁盘是否以异步方式运作。
      auto/noauto 文件系统是否被主动测试挂载。
      rw/ro 设定文件系统的权限,可读写或只读。
      exec/noexec 限制在此文件系统内是否可以进行执行操作。
      user/nouser 是否允许用户使用mount指令来挂载。
      suid/nosuid 该文件系统是否允许SUID存在。
      usrquota  启动文件系统支持磁盘配额模式。
      grpquota  启动文件系统对群组磁盘配额模式的支持。
      defaults  同时具有rw/suid/dev/exec/auto/nouser/async等参数。
第五列--是否具备dump备份指令操作:0代表不要做dump备份,1代表每天都执行dump操作,2代表其他补丁日期的dump操作。通常该数值都是0或者1.
第六列--是否以fsck检查扇区:0代表不检查;1代表最早检查;2代表检查,但1会比较早检查。一般根目录设置为1,其他文件系统设置为2。

示例:将/dev/hdc6每次开机都自动挂载到/mnt/hdc6。
#nano /etc/fstab
/dev/hdc6 /mnt/hdc6 ext3 default 1 2

4.9 创建swap分区
在安装操作系统时忘记创建swap分区,可在启动系统后重新创建。
步骤如下:
(1)分割分区(这里设置256M的swap分区)
# fdisk /dev/hdc  --/dev/hdc用于分割swap分区
Command (m for help):n
First cylinder(2303-5005,default 2303):  -- 直接按ENTER
Last cylinder or +size +sizeM +sizeK (2303-5005,default 5005): +256M
Command (m for help):p
Command (m for help):t   --修改系统ID
Partition number(1-7):7  --7为swap的分区编号
Hex code(type L to list codes):82 -- 82为swap格式的ID,其他格式直接输入L查看。
Command (m for help):w  --写入分区表。
# partprobe  --很重要!让核心更新分区表。
(2)swap格式化
# mkswap /dev/hdc7 
(3)观察和加载
# free --查看内存情况
# swapon /dev/hdc7  --启动swap分区

4.10 parted -- 大磁盘分区
语法: parted [装置] [指令]  -- 可理解为对[装置]执行什么[指令]。
指令:
(1)新增分割:mkpart [primary|logical|extended] [ext3|vfat] 开始位置 结束位置
(2)分割表: print
(3)删除分割: rm [partition]
示例:
(1)列出本机的分区表资料
# parted /dev/hdc print
返回的内容包含6列,分别为:
Number -- 分区编号
Start  -- 起始磁柱位置,即在该磁盘的多少MB处。
End    -- 结束磁柱位置,挤在该磁盘的多少MB处。
Size   -- 分区大小。
Type   -- 分区类型,比如primary/extended/logical等类型。
File System -- 文件系统类型。

(2)建立一个512MB大小的逻辑分区
# parted /dev/hdc mkpart local ext3 19.2GB 19.7GB

(3)删除第8分区
# parted /dev/hdc rm 8
 


原创粉丝点击