鸟哥学习笔记8:Linux磁盘与文件系统管理

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

这里写图片描述

5.内存置换分区(swap)

当物理内存不足时,系统会将内存中暂不使用的程序和数据挪到swap中,将空出来的内存空间给急需加载的程序和数据使用。当硬件资源充足的情况下,swap分区不会被系统所使用。

5.1 使用物理硬盘分区创建swap

创建步骤:
1. 分区:进行磁盘分区用以作为swap分区。由于 Linux 的 fdisk 默认会将分割槽的 ID 配置为 Linux 的文件系统,所以你可能还得要配置一下 system ID 就是了。
2. 格式化:使用mkwap命令格式化分区。
3. 使用:使用swapon命令启用swap分区。
4. 观察:使用free命令观察一下内存用量。


实践
  1. 分区
[root@www ~]# fdisk /dev/hdc
Command (m for help): n
First cylinder (2303-5005, default 2303):  <==这里按[enter]
Using default value 2303
Last cylinder or +size or +sizeM or +sizeK (2303-5005, default 5005): +256M

Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System
.....中间省略.....
/dev/hdc6            2053        2302     2008093+  83  Linux
/dev/hdc7            2303        2334      257008+  83  Linux <==新增的项目

Command (m for help): t             <==修改系统 ID
Partition number (1-7): 7           <==从上结果看到的,七号partition
Hex code (type L to list codes): 82 <==改成 swap 的 ID
Changed system type of partition 7 to 82 (Linux swap / Solaris)

Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System
.....中间省略.....
/dev/hdc6            2053        2302     2008093+  83  Linux
/dev/hdc7            2303        2334      257008+  82  Linux swap / Solaris

Command (m for help): w
# 此时就将 partition table 升级了!

[root@www ~]# partprobe
# 这个玩意儿很重要的啦!不要忘记让核心升级 partition table 喔!
  1. 格式化
[root@www ~]# mkswap /dev/hdc7
Setting up swapspace version 1, size = 263172 kB  <==非常快速!
  1. 使用与观察
[root@www ~]# free
             total       used       free     shared    buffers     cached
Mem:        742664     684592      58072          0      43820     497144
-/+ buffers/cache:     143628     599036
Swap:      1020088         96    1019992
# 我有 742664K 的物理内存,使用 684592K 剩余 58072K ,使用掉的内存有
# 43820K / 497144K 用在缓冲/缓存的用途中。
# 至于 swap 已经存在了 1020088K 啰!这样会看了吧?!

[root@www ~]# swapon /dev/hdc7
[root@www ~]# free
             total       used       free     shared    buffers     cached
Mem:        742664     684712      57952          0      43872     497180
-/+ buffers/cache:     143660     599004
Swap:      1277088         96    1276992  <==有添加啰!看到否?

[root@www ~]# swapon -s
Filename                 Type            Size    Used    Priority
/dev/hdc5                partition       1020088 96      -1
/dev/hdc7                partition       257000  0       -2
# 上面列出目前使用的 swap 装置有哪些的意思!

5.2 使用文件创建swap

创建步骤:
1. 创建大文件:使用dd创建大文件。
2. 格式化:使用mkswap命令格式化用作swap分区的大文件。
3. 使用:使用swapon启用swap。
4. 观察:使用free命令观察一下内存用量。


实践
  1. 使用 dd 这个命令来新增一个 128MB 的文件在 /tmp 底下
[root@www ~]# dd if=/dev/zero of=/tmp/swap bs=1M count=128
128+0 records in
128+0 records out
134217728 bytes (134 MB) copied, 1.7066 seconds, 78.6 MB/s

[root@www ~]# ll -h /tmp/swap
-rw-r--r-- 1 root root 128M Oct 28 15:33 /tmp/swap
  1. 使用mkswap格式化/tmp/swap为swap文件格式
[root@www ~]# mkswap /tmp/swap
Setting up swapspace version 1, size = 134213 kB
# 这个命令下达时请『特别小心』,因为下错字节控制,将可能使您的文件系统挂掉!
  1. 使用swapon启动/tmp/swap
[root@www ~]# free
             total       used       free     shared    buffers     cached
Mem:        742664     450860     291804          0      45584     261284
-/+ buffers/cache:     143992     598672
Swap:      1277088         96    1276992

[root@www ~]# swapon /tmp/swap
[root@www ~]# free
             total       used       free     shared    buffers     cached
Mem:        742664     450860     291804          0      45604     261284
-/+ buffers/cache:     143972     598692
Swap:      1408152         96    1408056

[root@www ~]# swapon -s
Filename                 Type            Size    Used    Priority
/dev/hdc5                partition       1020088 96      -1
/dev/hdc7                partition       257000  0       -2
/tmp/swap                file            131064  0       -3
  1. 使用swapoff停用swap file
[root@www ~]# swapoff /tmp/swap
[root@www ~]# swapoff /dev/hdc7
[root@www ~]# free
             total       used       free     shared    buffers     cached
Mem:        742664     450860     291804          0      45660     261284
-/+ buffers/cache:     143916     598748
Swap:      1020088         96    1019992  <==回复成最原始的样子了!

5.3 swap使用上的限制

  • 最多能创建swap的数量为32个
  • 目前 x86_64 最大内存寻址到 64GB,因此swap 总量最大仅能 64GB!

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

6.1 boot sector与superblock的关系

归纳为2点:
- superblock的大小为1024bytes;
- superblock前面需要为BootLoader保留1024bytes;


区块(block)大小为1014bytes(1K)时:
[root@www ~]# dumpe2fs /dev/hdc1
dumpe2fs 1.39 (29-May-2006)
Filesystem volume name:   /boot
....(中间省略)....
First block:              1
Block size:               1024
....(中间省略)....

Group 0: (Blocks 1-8192)
  Primary superblock at 1, Group descriptors at 2-2
  Reserved GDT blocks at 3-258
  Block bitmap at 259 (+258), Inode bitmap at 260 (+259)
  Inode table at 261-511 (+260)
  511 free blocks, 1991 free inodes, 2 directories
  Free blocks: 5619-6129
  Free inodes: 18-2008
# 看到最后一个特殊字体的地方吗? Group0 的 superblock 是由 1  号 block 开始喔!

这里写图片描述

区块(block) 大于 1024 bytes (2K, 4K) 时:
[root@www ~]# dumpe2fs /dev/hdc2
dumpe2fs 1.39 (29-May-2006)
....(中间省略)....
Filesystem volume name:   /1 
....(中间省略)....
Block size:               4096
....(中间省略)....

Group 0: (Blocks 0-32767) 
  Primary superblock at 0, Group descriptors at 1-1
  Reserved GDT blocks at 2-626
  Block bitmap at 627 (+627), Inode bitmap at 628 (+628)
  Inode table at 629-1641 (+629)
  0 free blocks, 32405 free inodes, 2 directories
  Free blocks:
  Free inodes: 12-32416

这里写图片描述


本章习题

  1. 如果由于你的主机磁盘容量不够大,你想要添加一颗新磁盘,并将该磁盘全部分割成单一分割槽,且将该分割槽挂载到 /home 目录, 你该如何处置?

详细的流程可以分为硬件组装、磁盘分区、格式化、数据搬移与挂载等。

安装硬盘:关掉 Linux 主机电源,若为 IDE 接口时,需要处理跳针 (jump) ,放入主机后插好硬盘的扁平电缆与电源线,重新启动电源;

磁盘分区:透过类似上述情境模拟二的动作,将整颗磁盘分区成单一主要分割槽,类似 /dev/sdb1 占有全部容量;

格式化:透过 mkfs -t ext3 来格式化;

数据搬移:由于原本的 /home 还会有数据存在,因此你可以 mount /dev/sdb1 /mnt ,再将 /home 的数据复制到 /mnt/ 中,例如:『 cp -a /home/* /mnt 』即可。复制完毕后卸除 /home 以及 /mnt

重新挂载:编辑 /etc/fstab ,将 /home 所在的 filesystem 装置改为 /dev/sdb1 之类的新分割槽,然后 mount -a测试看看是否正确,如果正确的话,才是顺利结束了这次的动作。

2.如果扇区 /dev/hda3 有问题,偏偏他是被挂载上的,请问我要如何修理此一扇区?

umount /dev/hda3

fsck /dev/hda3

3.我们常常说,启动的时候,『发现硬盘有问题』,请问,这个问题的产生是『filesystem 的损毁』,还是『硬盘的损毁』?
特别需要注意的是,如果您某个 filesystem 里面,由于操作不当,可能会造成

Superblock 数据的损毁, 或者是 inode 的架构损毁,或者是 block area 的记录遗失等等,这些问题当中,其实您的『硬盘』还是好好的, 不过,在硬盘上面的『文件系统』则已经无法再利用!一般来说,我们的 Linux 很少会造成 filesystem 的损毁, 所以,发生问题时,很可能整个硬盘都损毁了。但是,如果您的主机常常不正常断电,那么, 很可能硬盘是没问题的,但是,文件系统则有损毁之虞。此时,重建文件系统 (reinstall) 即可! 不需要换掉硬盘啦!

4.当我有两个文件,分别是 file1 与 file2 ,这两个文件互为 hard link 的文件,请问, 若我将 file1 删除,然后再以类似 vi 的方式重新创建一个名为 file1 的文件, 则 file2 的内容是否会被更动?

这是来自网友的疑问。当我删除 file1 之后, file2 则为一个正规文件,并不会与他人共同分享同一个 inode 与 block ,因此,当我重新创建一个档名为 file1 时,他所利用的 inode 与 block 都是由我们的 filesystem 主动去搜寻 meta data ,找到空的 inode 与 block 来创建的, 与原本的 file1 并没有任何关连性喔!所以,新建的 f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值