第七章 Linux 磁盘与文件系统管理

《鸟哥的Linux私房菜-基础篇》第四版学习笔记目录

原书:《鸟哥的Linux私房菜-基础篇》第四版 | 作者:鳥哥

7.2 文件系统的简单操作

7.2.1 磁盘与目录的容量

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

df

1
df [-ahikHTm] [目录或文件名]

选项与参数

  • -a 列出所有的文件系统,包括系统特有的 /proc 等文件系统;
  • -m :以 MBytes 的容量显示各文件系统;
  • -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
  • -H :以 M=1000K 取代 M=1024K 的进位方式;
  • -T :连同该 partition 的 filesystem 名称 (例如 xfs) 也列出;
  • -i :不用磁盘容量,而以 inode 的数量来显示

du

1
du [-ahskm] 文件或目录名称
  • 仅显示目录容量(不含文件)

选项与参数

  • -a :列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已。
  • -h :以人们较易读的容量格式 (G/M) 显示;
  • -s :列出总量而已,而不列出每个各别的目录占用容量;
  • -S :不包括子目录下的总计,与 -s 有点差别。
  • -k :以 KBytes 列出容量显示;
  • -m :以 MBytes 列出容量显示;

7.2.2 实体链接与符号链接: ln

链接(link)

  • 每个文件都会占用一个 inode ,文件内容由 inode 的记录来指向;
  • 想要读取该文件,必须要经过目录记录的文件名来指向到正确的 inode 号码才能读取。
  • 其实文件名只与目录有关,但是文件内容则与 inode 有关
  • hard link:有多个文件名对应到同一个 inode 号码
  • hard link 只是在某个目录下新增一笔文件名链接到某 inode 号码的关连记录
  • 一般来说,使用 hard link 设置链接文件时,磁盘的空间与 inode 的数目都不会改变!

hard link 限制

  • 不能跨 Filesystem
  • 不能 link 目录
1
ln [-sf] 来源文件 目标文件

选项与参数:

  • -s :如果不加任何参数就进行链接,那就是hard link,至于 -s 就是symbolic link
  • -f :如果 目标文件 存在时,就主动的将目标文件直接移除后再创建!

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

在系统里面新增一颗磁盘时,应该有哪些动作需要 做的呢:

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

7.3.1 观察磁盘分区状态

lsblk 列出系统上的所有磁盘列表

  • lsblk 可以看成“ list block device ”的缩写,就是列出所有储存设备的意思!
1
lsblk [-dfimpt] [device]

选项与参数:

  • -d :仅列出磁盘本身,并不会列出该磁盘的分区数据
  • -f :同时列出该磁盘内的文件系统名称
  • -i :使用 ASCII 的线段输出,不要使用复杂的编码 (再某些环境下很有用)
  • -m :同时输出该设备在 /dev 下面的权限数据 (rwx 的数据)
  • -p :列出该设备的完整文件名!而不是仅列出最后的名字而已。
  • -t :列出该磁盘设备的详细数据,包括磁盘伫列机制、预读写的数据量大小等

blkid 列出设备的 UUID 等参数

1
blkid

parted 列出磁盘的分区表类型与分区信息

1
parted device_name print

范例一:列出 /dev/vda 磁盘的相关数据

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
parted /dev/vda print
Model: Virtio Block Device (virtblk) # 磁盘的模块名称(厂商)
Disk /dev/vda: 42.9GB # 磁盘的总容量
Sector size (logical/physical): 512B/512B # 磁盘的每个逻辑/物理扇区容量
Partition Table: gpt # 分区表的格式 (MBR/GPT)
Disk Flags: pmbr_boot

Number Start End Size File system Name Flags # 下面才是分区数据
1 1049kB 3146kB 2097kB bios_grub
2      3146kB  1077MB  1074MB  xfs
3 1077MB 33.3GB 32.2GB lvm

7.3.2 磁盘分区: gdisk/fdisk

要注意的是:“MBR 分区表请使用 fdisk 分区, GPT 分区 表请使用 gdisk 分区!” 这个不要搞错~否则会分区失败的!

操作太疯狂,详见原文

7.3.3 磁盘格式化(创建文件系统)

7.3.4 文件系统检验

无论是 xfs_repair 或 fsck.ext4,这都是用来检查与修正文件系统错误的指令。注意:通常只 有身为 root 且你的文件系统有问题的时候才使用这个指令,否则在正常状况下使用此一指 令, 可能会造成对系统的危害!通常使用这个指令的场合都是在系统出现极大的问题,导致 你在 Linux 开机的时候得进入单人单机模式下进行维护的行为时,才必须使用此一指令!

7.3.5 文件系统挂载与卸载

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

要将文件系统挂载到我们的 Linux 系统上,就要使用 mount 这个指令

7.3.6 磁盘/文件系统参数修订

7.4 设置开机挂载

7.4.1 开机挂载 /etc/fstab 及 /etc/mtab

7.4.2 特殊设备 loop 挂载 (镜像文件不烧录就挂载使用)

7.5 内存交换空间(swap)之创建

7.6 文件系统的特殊观察与操作

7.6.1 磁盘空间之浪费问题

7.6.2 利用 GNU 的 parted 进行分区行为(Optional)

comments powered by Disqus