原文地址:http://vbird.dic.ksu.edu.tw/linux_basic/0230filesystem.php#filesys

创建大文件以制作 loop 装置文件!(练习非常有用)

想一想,既然能够挂载 DVD 的映象档,那么我能不能制作出一个大文件,然后将这个文件格式化后挂载呢? 好问题!这是个有趣的动作!

而且还能够帮助我们解决很多系统的分割不良的情况呢!举例来说,如果当初在分割时, 你只有分割出一个根目录,假设你已经没有多余的容量可以进行额外的分割的!

偏偏根目录的容量还很大! 此时你就能够制作出一个大文件,然后将这个文件挂载!如此一来感觉上你就多了一个分割槽啰! 用途非常的广泛啦!





底下我们在 /home 下创建一个 512MB 左右的大文件,然后将这个大文件格式化并且实际挂载来玩一玩! 





创建大型文件





[root@www ~]# dd if=/dev/zero of=/home/loopdev bs=1M count=512

512+0 records in   <==读入 512 笔数据

512+0 records out  <==输出 512 笔数据

536870912 bytes (537 MB) copied, 12.3484 seconds, 43.5 MB/s

# 这个命令的简单意义如下:

# if 是 input file ,输入文件。那个 /dev/zero 是会一直输出 0 的装置!

# of 是 output file ,将一堆零写入到后面接的文件中。

# bs 是每个 block 大小,就像文件系统那样的 block 意义;

# count 则是总共几个 bs 的意思。





[root@www ~]# ll -h /home/loopdev

-rw-r--r-- 1 root root 512M Oct 28 02:29 /home/loopdev





dd 就好像在迭砖块一样,将 512 块,每块 1MB 的砖块堆栈成为一个大文件 (/home/loopdev) ! 最终就会出现一个 512MB 的文件!粉简单吧!





格式化





很简单就创建起一个 512MB 的文件了吶!接下来当然是格式化啰!

[root@www ~]# mkfs -t ext3 /home/loopdev





挂载

[root@www ~]# mount -o loop /home/loopdev /media/cdrom/





挂载成功以后,我们就可以在 /media/cdrom/ 目录下创建文件、目录了。

他类似于一个容器,将一些文件包括在其中









内存置换空间(swap)之建置

swap 的功能就是在应付物理内存不足的情况下所造成的内存延伸记录的功能。

一般来说,如果硬件的配备足够的话,那么 swap 应该不会被我们的系统所使用到, swap 会被利用到的时刻通常就是物理内存不足的情况了

那当内存不足的时候,为了让后续的程序可以顺利的运行,因此在内存中暂不使用的程序与数据就会被挪到 swap 中了。 

此时内存就会空出来给需要运行的程序加载。由于 swap 是用硬盘来暂时放置内存中的信息, 所以用到 swap 时,你的主机硬盘灯就会开始闪个不停啊!









使用实体分割槽建置swap

创建 swap 分割槽的方式也是非常的简单的!透过底下几个步骤就搞定啰:





分割:先使用 fdisk 在你的磁盘中分割出一个分割槽给系统作为 swap 。由于 Linux 的 fdisk 默认会将分割槽的 ID 配置为 Linux 的文件系统,

所以你可能还得要配置一下 system ID 就是了。

格式化:利用创建 swap 格式的『mkswap 装置文件名』就能够格式化该分割槽成为 swap 格式啰

使用:最后将该 swap 装置启动,方法为:『swapon 装置文件名』。

观察:最终透过 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 喔!













2. 开始建置 swap 格式

[root@www ~]# mkswap /dev/hdc7

Setting up swapspace version 1, size = 263172 kB  <==非常快速!









3. 开始观察与加载看看吧!

[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 装置有哪些的意思!









使用文件建置swap

如果是在实体分割槽无法支持的环境下,此时前一小节提到的 loop 装置建置方法就派的上用场啦! 与实体分割槽不一样的只是利用 dd 去建置一个大文件而已。

多说无益,我们就再透过文件建置的方法创建一个 128 MB 的内存置换空间吧!









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













2. 使用 mkswap 将 /tmp/swap 这个文件格式化为 swap 的文件格式:

[root@www ~]# mkswap /tmp/swap

Setting up swapspace version 1, size = 134213 kB

# 这个命令下达时请『特别小心』,因为下错字节控制,将可能使您的文件系统挂掉!









3. 使用 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









4. 使用 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  <==回复成最原始的样子了!









磁盘空间之浪费问题





[root@www ~]# ll -s

total 104

第一行都会出现一个『total』的字样,是该目录下的所有数据所耗用的实际 block 数量 * block 大小的值。 我们可以透过 ll -s 来观察





如果想要查询某个目录所耗用的所有容量时,那就使用 du 

例:

[root@www ~]# du -sb /etc

108360494       /etc   <==单位是 bytes 喔!





[root@www ~]# du -sm /etc

118     /etc           <==单位是 Mbytes 喔!









--------------------

利用 GNU 的 parted 进行分割行为





 fdisk 却无法支持到高于 2TB 以上的分割槽,此时就得需要 parted 来处理了

 

[root@www ~]# parted [装置] [命令 [参数]]

选项与参数:

命令功能:

新增分割:mkpart [primary|logical|extended] [ext3|vfat] 开始 结束

分割表  :print

删除分割:rm [partition]





范例一:以 parted 列出目前本机的分割表数据

[root@www ~]# parted /dev/hdc print

Model: IC35L040AVER07-0 (ide)              <==硬盘接口与型号

Disk /dev/hdc: 41.2GB                      <==磁盘文件名与容量

Sector size (logical/physical): 512B/512B  <==每个扇区的大小

Partition Table: msdos                     <==分割表形式





Number  Start   End     Size    Type      File system  Flags

 1      32.3kB  107MB   107MB   primary   ext3         boot

 

 上面是最简单的 parted 命令功能简介,你可以使用『 man parted 』,或者是『 parted /dev/hdc help mkpart 』去查询更详细的数据。

 比较有趣的地方在于分割表的输出。我们将上述的分割表示意拆成六部分来说明:





Number:这个就是分割槽的号码啦!举例来说,1号代表的是 /dev/hdc1 的意思;

Start:起始的磁柱位置在这颗磁盘的多少 MB 处?有趣吧!他以容量作为单位喔!

End:结束的磁柱位置在这颗磁盘的多少 MB 处?

Size:由上述两者的分析,得到这个分割槽有多少容量;

Type:就是分割槽的类型,有primary, extended, logical等类型;

File system:就如同 fdisk 的 System ID 之意。









范例二:创建一个约为 512MB 容量的逻辑分割槽

[root@www ~]# parted /dev/hdc mkpart logical ext3 19.2GB 19.7GB

# 请参考前一表格的命令介绍,因为我们的 /dev/hdc7 在 19.2GB  位置结束,

# 所以我们当然要由 19.2GB 位置处继续下一个分割,这样懂了吧?

[root@www ~]# parted /dev/hdc print

.....前面省略.....

 7      18.9GB  19.2GB  263MB   logical   linux-swap

 8      19.2GB  19.7GB  502MB   logical  <==就是刚刚创建的啦!

 

 

范例三:将刚刚创建的第八号磁盘分区槽删除掉吧!

[root@www ~]# parted /dev/hdc rm 8

# 这样就删除了!实在很厉害!所以这个命令的下达要特别注意!

# 因为...命令一下去就立即生效了~如果写错的话,会哭死~

linux 学习之九、Linux 磁盘与文件系统管理(3)的更多相关文章

  1. Linux学习之九-Linux系统定时任务

    Linux系统定时任务 在一些实际工作中需要机器在某个时间自动执行某个任务,不需要人为在此时刻参与,可以建立一个定时任务. crond 服务是linux下用来周期性的执行某种任务或等待处理某些事件的一 ...

  2. Linux学习笔记—Linux磁盘与文件系统管理(转载)

    认识EXT2文件系统 文件的系统特性 Linux的正规文件系统为Ext2 文件数据除了文件实际内容外,还包括其他属性(文件权限.文件属性). 文件系统将这两部分数据分别存放在不同的块,权限和属性放在i ...

  3. Linux学习笔记之Linux磁盘及文件系统管理笔记

    Linux磁盘及文件系统管理 CPU,memory(RAM),I/O i/o: disks,ehtercard disks:持久存储数据 接口类型: IDE(ata): 并口,133MB/s;并行总线 ...

  4. linux(3)磁盘与文件系统管理/查看硬盘、内存空间/文件系统的操作/ 文件的压缩和打包

    一.磁盘与文件系统管理 1.分区与文件系统分区:记录每一个分区的开始柱面和结束柱面主引导区(master boot recorder):记录分区的数据,记录硬盘里所有的分区信息分区划分好后,要将分区格 ...

  5. Linux之磁盘与文件系统管理

    磁盘及文件系统管理详解 [参考文献:马哥视频] 原文:http://blog.csdn.net/u013008795/article/details/51150075 目前市场上主流的磁盘是机械式硬盘 ...

  6. Linux磁盘与文件系统管理笔记

    ### Linux磁盘与文件系统管理 linux 最传统的文件系统格式是EXT2,centos7 默认文件系统是xfs(日志式文件系统) 磁盘的组成: 盘片 机械手臂 主轴马达 (机械硬盘) 磁盘格式 ...

  7. Linux磁盘与文件系统管理概要

    Linux磁盘与文件系统管理 硬盘组成与分区 硬盘组成 圆形的盘片(主要记录数据) 机械手臂与磁头(可读取盘片上的数据) 主轴马达,转动盘片,让机械手臂的磁头在盘片上读取数据 扇区(Sector)为最 ...

  8. Linux学习之二-Linux系统的目录结构

    Linux学习之二-Linux系统的目录结构 在Linux的根目录下,有很多的目录,但是需要记住,对于Linux而言,一切皆文件.因此此处的目录也是文件.用ls / 命令就能看到根目录下的各类不同的目 ...

  9. Linux学习心得之 Linux下ant安装与使用

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下ant安装与使用 1. 前言2. ant安装3. 简单的a ...

  10. Linux学习心得之 Linux下命令行Android开发环境的搭建

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下命令行Android开发环境的搭建 1. 前言2. Jav ...

随机推荐

  1. 提取肤色信息原理及操作——opencv

    网上也有很多的资料,讲述怎么提取肤色的,大致有5种方法.这几种方法转载http://blog.csdn.net/augusdi/article/details/8865275 第一种:RGB colo ...

  2. JAVA笔记1-00

    package chapter1; public class Demo1 { public static void main(String[] args) { System.out.println(& ...

  3. gl.TexSubImage2D 使用遇到图片翻转的问题

    这2天在用gl.TexSubImage2D把几张小图转拼接成大图,如果在渲染物体之前拼接好就没有问题,但在开始渲染物体后拼接就会有问题.后来我做了2件事情来找原因, 1. 用拼好的图来画一个正方形,大 ...

  4. [置顶] Oracle GoldenGate 系列:使用 Oracle ASM API DBLOGREADER 时遇 ora-01031 错误

    今天在自己新搭建的 Oracle ACFS 文件系统上测试 GoldenGate ,启动 extract 进程报如下错误: 2013-08-27 14:58:39  ERROR   OGG-00446 ...

  5. lsof查看进程打开了哪些文件目录套接字

    lsof查看进程打开了哪些文件目录套接字

  6. Vis.js图表插件

    Vis.js是一款基于JavaScript的可视化图表库,Vis.js不像其他的图表库那样仅仅支持几种常用的数据图表,比如线形图.柱状图.饼图等,Vis.js支持上百种不同类型的可视化图表类型,比如时 ...

  7. QImage 与 cv::Mat 之间的相互转换

    近期做图像处理方面的项目比較多,非常多算法自己从头写的话太浪费时间,并且自己写的也不一定完好,早就听说OpenCV在图像处理算法方面功能非常强大,一直没时间学习,这次正好项目用到了.暂时抱佛脚学习些O ...

  8. LeetCode Day2

    Power of Two /** * LeetCode: Power of Two * Given an integer, write a function to determine if it is ...

  9. Backup Exec Inventory 与Catalog的含义(转载)

    编录:即catalog,就是让磁带机读取磁带之前所备份过的内容的目录列表,可以让你知道之前做过什么备份,以及备份时间等详细信息. 列清单:inventory,跟编录是不同,inventory是查询磁带 ...

  10. 开启MSSQLServer跨服务器查询功能

    首先在MSSQL客户端中进行如下图文操作配置 其次使用脚本进行操作配置 ---开启SQLServer 跨服务器查询功能 exec sp_configure 'show advanced options ...