磁盘空间管理模拟实验之Linux磁盘空间管理

合集下载

Linux命令行中的磁盘使用和空间管理技巧

Linux命令行中的磁盘使用和空间管理技巧

Linux命令行中的磁盘使用和空间管理技巧Part I 磁盘使用概述在Linux系统中,磁盘使用和空间管理是一项重要任务,不仅涉及到文件的存储、查找和删除,还直接影响系统的性能和稳定性。

本文将介绍一些常用的Linux命令行技巧,以便更有效地管理磁盘空间。

Part II 磁盘分区和文件系统1. 查看磁盘分区使用命令“fdisk -l”可以查看系统中的磁盘分区情况,包括磁盘编号、分区类型和分区大小等信息。

2. 创建磁盘分区使用命令“fdisk /dev/sdx”(其中sdx为磁盘设备名)可以进入磁盘分区编辑界面,通过一系列交互式操作来创建新的磁盘分区。

3. 格式化磁盘分区使用命令“mkfs.ext4 /dev/sdx”(其中sdx为磁盘分区设备名)可以将磁盘分区格式化为ext4文件系统,并为之分配一个文件系统标签。

Part III 磁盘空间的监控和管理1. 查看磁盘使用情况使用命令“df -h”可以查看系统中各个磁盘分区的使用情况,包括分区的总容量、已用空间、可用空间和挂载点等信息。

2. 查找占用空间较大的文件和目录使用命令“du -sh *”可以列出当前目录下所有文件和目录的大小,并按照大小排序。

这样可以快速找到占用空间较大的文件或目录。

3. 清理不再需要的文件和目录使用命令“rm -rf <文件/目录路径>”可以递归地删除指定的文件或目录。

在删除前,建议先备份重要数据,并确保要删除的文件或目录是无用的。

4. 压缩和解压缩文件使用命令“gzip <文件名>”可以将指定的文件压缩为gz格式,使用命令“gunzip <文件名.gz>”可以将gz格式的文件解压缩。

类似地,还有其他压缩和解压缩命令可供选择。

Part IV 硬盘空间的优化与清理1. 清理临时文件使用命令“sudo apt-get clean”可以清理系统临时文件,释放磁盘空间。

此外,还可以手动删除其他不再需要的临时文件。

linux磁盘空间清理方式

linux磁盘空间清理方式

linux磁盘空间清理方式
Linux操作系统是一款常用的开源操作系统,但是它的磁盘空间常常会被占满。

这时我们需要清理磁盘空间,以便获得更多的可用空间。

以下是一些Linux磁盘空间清理的方式:
1. 删除不需要的文件:使用命令`rm`可以删除不需要的文件,例如:`rm filename`。

2. 清空回收站:使用命令`rm -rf ~/.local/share/Trash/*`
可以清空Linux的回收站。

3. 清空日志文件:使用命令`sudo journalctl
--vacuum-size=50M`可以清空系统日志文件,释放磁盘空间。

4. 清空缓存:使用命令`sync && echo 3 | sudo tee
/proc/sys/vm/drop_caches`可以清空缓存,释放磁盘空间。

5. 删除旧的内核:使用命令`sudo apt-get autoremove`可以删除旧的内核文件,释放磁盘空间。

6. 清理临时文件:使用命令`sudo apt-get autoclean`可以清除临时文件,释放磁盘空间。

7. 扫描大文件:使用命令`sudo find / -type f -size +100M`可以扫描大于100M的文件,然后手动删除或移动到其他位置。

以上是几种常用的清理Linux磁盘空间的方式。

需要注意的是,在执行清理操作之前,请确保备份好重要的数据。

- 1 -。

linux实验报告--磁盘管理

linux实验报告--磁盘管理
广东科学技术职业学院计算机工程技术学院软件学院专业计算机网络技术班级成绩评定学号姓名合作者号教师签名实验题目磁盘的管理掌握并熟悉如何利用fdisk在新硬盘上建立分区
广东科学技术职业学院
计算机工程技术学院(软件学院)
实验报告
专业计算机网络技术班级成绩评定______
学号姓名(合作者____号____)教师签名赖小卿
2.实验结果(学生填写)
3.心得体会(学生填写)
实验题目磁盘的管理
第周星期一第节
一、实验目的与要求
1、掌握并熟悉在虚拟机的环境下如何添加一个硬盘;
2、掌握并熟悉如何利用fdisk在新硬盘上建立分区;
3、掌握并熟悉如何按要求格式化分区,并根据需要进行挂载;
4、复习YUM源的使用。
二、实验步骤
1、在虚拟机的环境下添加一个硬盘,硬盘容量为5G;
2、利用fdisk在新硬盘上创建一个1G的主分区,创建一个4G的扩展分区,并在此基础上创建两个逻辑分区,大小分别为3G和1G。
3、格式化相关的分区,文件系统类型均为ext3。
4、在根下。
5、将光盘的Server目录下的所有文件拷贝到新分区中去,并创建一个YUM源。
6、利用YUM源进行gcc软件的安装。
1.思考题(由老师在上机前出好题目,学生通过实验后再回答)

磁盘管理空间实验报告

磁盘管理空间实验报告

一、实验目的本次实验旨在让学生了解磁盘管理的基本概念和操作,掌握磁盘分区、格式化、挂载等基本技能,熟悉磁盘空间分配策略和优化方法,提高学生对磁盘管理的实际操作能力。

二、实验环境操作系统:Linux Ubuntu 20.04硬件环境:虚拟机,CPU:2.5GHz,内存:4GB,硬盘:100GB三、实验内容1. 磁盘分区(1)查看磁盘分区信息使用`fdisk -l`命令查看当前磁盘的分区信息。

(2)创建新分区使用`fdisk /dev/sdb`命令进入磁盘分区编辑模式,创建新分区。

(3)格式化分区使用`mkfs.ext4 /dev/sdb1`命令将新分区格式化为ext4文件系统。

2. 磁盘挂载(1)创建挂载点使用`mkdir /mnt/sdb1`命令创建挂载点。

(2)挂载分区使用`mount /dev/sdb1 /mnt/sdb1`命令将分区挂载到挂载点。

3. 磁盘空间分配策略(1)查看磁盘空间使用情况使用`df -h`命令查看磁盘空间使用情况。

(2)优化磁盘空间分配使用`du -sh `命令查看目录大小,删除不必要的文件。

4. 磁盘碎片整理(1)查看磁盘碎片情况使用`e2fsck -f /dev/sdb1`命令检查磁盘碎片情况。

(2)整理磁盘碎片使用`e2fsck -f /dev/sdb1`命令整理磁盘碎片。

四、实验步骤1. 查看磁盘分区信息执行`fdisk -l`命令,查看当前磁盘的分区信息。

2. 创建新分区执行`fdisk /dev/sdb`命令,进入磁盘分区编辑模式。

(1)输入`n`创建新分区。

(2)选择分区类型(主分区或扩展分区)。

(3)选择分区编号。

(4)设置分区起始扇区。

(5)设置分区结束扇区。

3. 格式化分区执行`mkfs.ext4 /dev/sdb1`命令,将新分区格式化为ext4文件系统。

4. 创建挂载点执行`mkdir /mnt/sdb1`命令,创建挂载点。

5. 挂载分区执行`mount /dev/sdb1 /mnt/sdb1`命令,将分区挂载到挂载点。

磁盘管理分区实验报告

磁盘管理分区实验报告

一、实验目的本次实验旨在掌握Linux系统中磁盘管理的相关操作,包括磁盘分区的创建、格式化、挂载以及分区信息的查看等。

通过实验,加深对磁盘分区概念的理解,并能够熟练运用相关命令进行磁盘管理。

二、实验环境操作系统:Ubuntu 20.04 LTS硬件设备:虚拟机(至少1GB内存,10GB硬盘空间)软件工具:Linux命令行终端三、实验内容1. 磁盘分区(1)查看现有磁盘信息使用`lsblk`命令查看系统中现有的磁盘和分区信息。

```bashlsblk```(2)创建分区使用`fdisk`命令创建新的分区。

以下示例中,我们将对/dev/sdb磁盘进行分区。

```bashsudo fdisk /dev/sdb```在`fdisk`命令的交互式界面中,按照以下步骤操作:- 输入`n`创建新的分区。

- 输入`p`创建主分区。

- 按提示输入分区号(例如1)。

- 按提示输入起始扇区,默认回车即可。

- 按提示输入结束扇区,默认回车即可。

- 输入`w`保存并退出`fdisk`。

(3)查看分区信息再次使用`lsblk`命令查看分区信息,确认新创建的分区。

2. 格式化分区(1)使用`mkfs`命令格式化分区。

以下示例中,我们将格式化新创建的分区/dev/sdb1。

```bashsudo mkfs.ext4 /dev/sdb1```(2)确认格式化结果使用`lsblk`命令查看分区信息,确认分区已格式化。

3. 挂载分区(1)创建挂载点在`/mnt`目录下创建一个挂载点,用于挂载新创建的分区。

```bashsudo mkdir /mnt/new_disk```(2)挂载分区使用`mount`命令将新创建的分区挂载到挂载点。

```bashsudo mount /dev/sdb1 /mnt/new_disk```(3)查看挂载信息使用`df -h`命令查看挂载信息,确认分区已挂载。

4. 卸载分区使用`umount`命令卸载已挂载的分区。

Linux命令高级技巧使用fdisk进行磁盘分区管理

Linux命令高级技巧使用fdisk进行磁盘分区管理

Linux命令高级技巧使用fdisk进行磁盘分区管理磁盘分区是在计算机硬盘上划分出一定大小的逻辑分区,以便存储和管理文件。

在Linux系统中,fdisk是一个常用的命令行工具,用于对硬盘进行分区管理。

本文将介绍如何使用fdisk进行磁盘分区管理的高级技巧。

一、进入fdisk工具要使用fdisk工具进行磁盘分区管理,首先需要进入fdisk工具。

在终端中输入以下命令:```sudo fdisk /dev/sdX```其中,sdX表示要进行分区管理的磁盘名称。

需要根据实际情况替换为正确的磁盘名称,如sda、sdb等。

二、基本操作命令在进入fdisk工具后,可以使用一系列命令来对磁盘进行分区管理。

下面是一些常用的基本操作命令:1. p:打印出当前磁盘的分区表信息;2. n:创建一个新分区;3. d:删除一个分区;4. t:修改分区的类型;5. w:将分区表写入磁盘并退出fdisk。

三、创建新分区创建新分区是在磁盘上划分出一块未被使用的空间,并将其用于存储文件。

使用n命令可以创建新分区。

具体操作步骤如下:1. 输入n命令后,选择要创建分区的类型,可以选择主分区(Primary)或扩展分区(Extended);2. 确定分区的起始位置和结束位置;3. 确定分区的大小。

四、删除分区删除分区是指将磁盘上的某个分区删除,并释放相应的空间。

使用d命令可以删除分区。

具体操作步骤如下:1. 输入d命令后,选择要删除的分区的编号;2. 确认删除操作。

五、修改分区类型修改分区类型是用于更改某个分区的类型。

使用t命令可以修改分区类型。

具体操作步骤如下:1. 输入t命令后,选择要修改的分区的编号;2. 选择要修改的分区类型。

六、写入分区表在对磁盘进行分区管理操作后,需要使用w命令将分区表写入磁盘并退出fdisk工具。

具体操作步骤如下:1. 输入w命令,确认将分区表写入磁盘。

需要注意的是,写入分区表后将无法撤销分区操作,请确保在执行w命令之前已经保存了必要的数据。

实验四Linux系统的磁盘管理..

实验四Linux系统的磁盘管理..
-o 常用的选项有codepage,iocharset(对于中文来说codepage=936,
iocharset=gb2312) - o loop 挂载ISO文件时用
例:mount -o iocharset=cp936 /dev/sda1 /mnt/usb (以保证 正常显示中文字符)
1.文件系统加载
2.磁盘管理基本命令
1. dd命令
功能:
从标准输入、文件或设备读取数据,依照指定的格式来转换数据, 再输出 至文件、设备或标准输出。
命令的格式:
dd [OPTION]...
实用例子:
把一张软盘的内容拷贝到另一张软盘上,利用/tmp/tmpfile作为临时存储文 件 1.把源盘插入驱动器中: $ dd if=/dev/fd0 of=/tmp/tmpfile 2.将源盘从驱动器中取出,把目标盘插入: $ dd if=/tmp/tmpfile of=/dev/fd0 3.软盘拷贝完成后,应该将临时文件删除: $ rm /tmp/tmpfile
-s -a
对每个FILE参数只给出占用的数据块总数。 递归地显示指定目录中各文件及子孙目录中各文件占用的数据块数。 若既不指定-s,也不指定-a,则只显示FILE中的每一个目录及其中 的各子目录所占的磁盘块数。 以字节为单位列出磁盘空间使用情况(系统缺省以k字节为单位)。 以1024字节为单位列出磁盘空间使用情况。 最后再加上一个总计(系统缺省设置)。 计算所有的文件大小,对硬链接文件,则计算多次。 跳过在不同文件系统上的目录不予统计。
1.文件系统加载
mount命令的格式
在一般情况下,本节的命令需要您有root身份才能执行。
mount命令可以加载文件系统到指定的挂接点。
mount [-t vfstype] [-o optoins] device dir

linux系统磁盘管理(磁盘阵列)

linux系统磁盘管理(磁盘阵列)

linux系统磁盘管理(磁盘阵列)1、磁盘阵列简介RAID(Redundant Array of Independent Disks)即独⽴硬盘冗余阵列,简称磁盘阵列。

磁盘阵列是由很多价格较便宜的磁盘,以硬件(RAID卡)或软件(MDADM)形式组合成⼀个容量巨⼤的磁盘组,利⽤多个磁盘组合在⼀起,提升整个磁盘系统效能。

利⽤这项技术,将数据切割成许多区段,分别存放在各个硬盘上。

其中RAID卡有⾃⼰的cpu,由它统⼀管理和控制;数据也由它来进⾏分配和维护,处理速度快。

服务器启动时,就会有显⽰进⼊配置Riad的提⽰。

RAID⽐单硬盘有以下⼀个或多个⽅⾯的好处:增强数据集成度,增强容错功能,增加处理量或容量,磁盘阵列对于电脑来说,看起来就像⼀个单独的硬盘或逻辑存储单元。

2、RAID 分类RAID有很多种类型本章只举4例供⼤家了解RAID技术!RAID类型说明最低磁盘个数空间利⽤率各⾃的优缺点RAID0条带卷2+100%读写速度快,不容错RAID1镜像卷250%读写速度⼀般,容错RAID5带奇偶校验的条带卷3+(n-1)/n读写速度快,容错,允许坏⼀块盘RAID10RAID1的镜像+RAID0的条带450%读写速度快,容错RAID 中主要有三个关键概念和技术:镜像( Mirroring )、数据条带( Data Stripping )和数据校验( Data parity )①RAID0RAID0是最早出现的RAID模式;应⽤条数据条带( Data Stripping )技术,将数据分⽚保存2+个磁盘(最好磁盘的⼤⼩相同)上,多个数据分⽚共同组成⼀个完整数据副本,数据条带具有更⾼的并发粒度,当访问数据时,可以同时对位于不同磁盘上数据进⾏读写操作,从⽽获得⾮常可观的 I/O 性能提升;是组建磁盘阵列中最简单的⼀种形式,只需要2块以上的硬盘即可;成本低,可以提⾼整个磁盘的性能;磁盘利⽤率为100%,但是,RAID 0没有提供冗余或错误修复能⼒,任何⼀个磁盘的损坏将损坏全部数据。

linux磁盘管理 教案

linux磁盘管理 教案

linux磁盘管理教案一、教案描述本教案旨在教授学生如何在Linux操作系统中进行磁盘管理。

学生将学习如何查看和理解磁盘使用情况,如何创建、格式化、挂载和卸载分区,以及如何使用逻辑卷管理更灵活地分配磁盘空间。

二、教学目标1. 学生能够使用命令行工具查看和理解磁盘使用情况。

2. 学生能够使用命令行工具创建、格式化、挂载和卸载分区。

3. 学生能够使用逻辑卷管理工具进行灵活管理磁盘空间。

三、教学内容1. 磁盘使用情况查看和理解a. 使用命令`df`查看整个系统的磁盘使用情况。

b. 使用命令`du`查看当前目录的磁盘使用情况。

c. 理解磁盘使用率、可用空间等概念。

2. 分区管理a. 使用`fdisk`命令进行分区管理。

b. 创建新分区。

c. 格式化分区。

d. 挂载和卸载分区。

e. 理解挂载点的概念。

3. 逻辑卷管理a. 使用`lvm`命令进行逻辑卷管理。

b. 创建物理卷、卷组和逻辑卷。

c. 扩展和缩小逻辑卷。

d. 迁移逻辑卷。

e. 删除逻辑卷。

四、教学过程1. 磁盘使用情况查看和理解a. 通过示例演示如何使用`df`命令查看整个系统的磁盘使用情况,并解释各列的含义。

b. 通过示例演示如何使用`du`命令查看当前目录的磁盘使用情况,并解释输出的含义。

2. 分区管理a. 通过示例演示如何使用`fdisk`命令进行分区管理,包括创建新分区、格式化分区、挂载和卸载分区,并解释每个步骤的含义。

b. 强调挂载点的重要性,解释挂载点的概念和用途。

3. 逻辑卷管理a. 通过示例演示如何使用`lvm`命令进行逻辑卷管理,包括创建物理卷、卷组和逻辑卷,并解释每个步骤的含义。

b. 演示如何扩展和缩小逻辑卷,以及迁移逻辑卷。

c. 强调在删除逻辑卷之前备份重要数据的重要性。

五、教学评估1. 给学生提供一个场景,要求他们根据已学的知识来创建、格式化、挂载和卸载一个新的分区,并查看磁盘使用情况。

2. 给学生提供一个场景,要求他们根据已学的知识来创建逻辑卷、扩展逻辑卷,并迁移逻辑卷上的数据。

磁盘管理实训报告

磁盘管理实训报告

磁盘管理实训报告一、实训目的本次实训旨在通过实际操作,使学生掌握Linux系统下磁盘管理的相关知识,包括磁盘分区、格式化、挂载等基本操作,提高学生在实际工作中处理磁盘问题的能力。

二、实训环境1. 操作系统:Linux(CentOS 7)2. 磁盘:一块2G的虚拟硬盘3. 工具:fdisk、parted、mkfs.ext4、mount等三、实训内容1. 磁盘分区(1)使用fdisk命令创建分区首先,使用fdisk命令对虚拟硬盘进行分区操作。

在Linux终端输入以下命令:```fdisk /dev/sdb```其中,/dev/sdb表示虚拟硬盘的设备名称。

(2)选择分区类型进入fdisk交互模式后,按p键查看当前磁盘的分区情况。

按n键创建新分区,然后根据提示选择分区类型(主分区或扩展分区)。

这里以创建主分区为例。

(3)设置分区大小和起始位置根据提示输入新分区的大小和起始位置。

这里以创建一个2G的主分区为例。

(4)保存分区表创建完分区后,按w键保存分区表。

2. 格式化分区使用mkfs.ext4命令对新建的分区进行格式化。

格式如下:```mkfs.ext4 /dev/sdb1```其中,/dev/sdb1表示新建的主分区。

3. 挂载分区(1)创建挂载点在Linux系统中,需要创建一个挂载点来存放分区中的文件。

使用mkdir命令创建挂载点:```mkdir /mnt/sdb1```(2)挂载分区使用mount命令将分区挂载到挂载点:```mount /dev/sdb1 /mnt/sdb1```4. 查看磁盘空间使用情况使用df命令查看磁盘空间使用情况:```df -h```5. 卸载分区使用umount命令卸载分区:```umount /mnt/sdb1```四、实训总结通过本次实训,我掌握了以下磁盘管理操作:1. 使用fdisk命令创建、删除和修改分区。

2. 使用mkfs.ext4命令对分区进行格式化。

linux 磁盘整理命令

linux 磁盘整理命令

linux 磁盘整理命令Linux磁盘整理命令作为一种开源的操作系统,Linux拥有强大的磁盘管理功能,可以通过一些命令来对磁盘进行整理和管理。

本文将介绍一些常用的Linux磁盘整理命令,帮助用户更好地管理磁盘空间。

1. df命令df命令用于显示文件系统的磁盘使用情况,可以查看磁盘分区的总容量、已使用容量、可用容量以及挂载点等信息。

使用方法:df [选项] [文件名]常用选项:- h:以人类可读的方式显示磁盘使用情况,以更直观的形式展示磁盘空间大小。

- T:显示文件系统的类型。

- i:显示inode的使用情况。

示例:df -h2. du命令du命令用于查看指定目录或文件的磁盘使用情况,可以显示目录下每个文件和子目录的大小,帮助用户找出占用磁盘空间较大的文件或目录。

使用方法:du [选项] [文件名]常用选项:- h:以人类可读的方式显示磁盘使用情况。

- s:只显示总的磁盘使用情况,不显示详细的文件和目录大小。

- a:显示所有文件和目录的大小,而不仅仅是目录的总大小。

示例:du -h /home3. fdisk命令fdisk命令用于对磁盘进行分区操作,可以创建、删除、调整磁盘分区,是管理磁盘分区的重要工具。

使用方法:fdisk [选项] [设备文件]常用选项:- l:列出所有的磁盘分区信息。

- n:创建一个新的分区。

- d:删除一个分区。

- p:显示分区表。

示例:fdisk -l /dev/sda4. mkfs命令mkfs命令用于创建文件系统,可以将分区格式化为指定的文件系统类型,如ext4、xfs等。

使用方法:mkfs [选项] [设备文件]常用选项:- t:指定文件系统的类型。

- L:设置文件系统的卷标。

- m:指定文件系统的最大inode数目。

示例:mkfs -t ext4 /dev/sda15. mount命令mount命令用于挂载文件系统,将文件系统连接到指定的挂载点,使其可被访问。

使用方法:mount [选项] [设备文件] [挂载点]常用选项:- t:指定文件系统的类型。

磁盘管理_实验报告

磁盘管理_实验报告

一、实验目的1. 理解磁盘的基本结构和工作原理。

2. 掌握Linux操作系统中磁盘管理的常用命令。

3. 学会使用磁盘分区、格式化、挂载等基本操作。

4. 了解磁盘故障的检测与修复方法。

二、实验环境1. 操作系统:Linux2. 硬件设备:计算机、硬盘(包括固态硬盘和机械硬盘)3. 软件工具:磁盘分区工具、格式化工具、磁盘检测工具等三、实验内容1. 磁盘结构和工作原理磁盘是计算机中常用的存储设备,主要由以下几个部分组成:磁头:用于读写磁盘上的数据。

磁盘片:由多个磁性盘片组成,用于存储数据。

控制单元:负责控制磁头的移动和数据读写。

磁盘的工作原理如下:1. 当读取数据时,磁头定位到指定位置,读取磁盘片上的数据。

2. 当写入数据时,磁头将数据写入磁盘片上的指定位置。

2. 磁盘管理命令Linux操作系统中,常用的磁盘管理命令如下:fdisk:用于磁盘分区。

mkfs:用于格式化磁盘分区。

mount:用于挂载磁盘分区。

df:用于查看磁盘使用情况。

du:用于查看文件/文件夹大小。

3. 磁盘分区磁盘分区是指将硬盘划分为多个逻辑分区,每个分区可以独立存储数据。

实验步骤:1. 使用fdisk命令创建新的磁盘分区。

2. 使用mkfs命令格式化磁盘分区。

3. 使用mount命令将磁盘分区挂载到文件系统。

4. 磁盘格式化磁盘格式化是指将磁盘分区上的数据全部清空,并建立文件系统。

实验步骤:1. 使用mkfs命令格式化磁盘分区。

2. 使用df命令查看磁盘使用情况。

5. 磁盘挂载磁盘挂载是指将磁盘分区与文件系统关联起来,以便用户访问。

实验步骤:1. 使用mount命令将磁盘分区挂载到文件系统。

2. 使用df命令查看磁盘挂载情况。

6. 磁盘故障检测与修复磁盘故障可能导致数据丢失或系统崩溃。

以下是一些常用的磁盘故障检测与修复方法:使用磁盘检测工具检测磁盘健康状态。

使用磁盘修复工具修复磁盘错误。

备份数据以防止数据丢失。

四、实验结果与分析通过本次实验,我们成功掌握了以下内容:1. 磁盘的基本结构和工作原理。

实验二--文件系统及磁盘管理

实验二--文件系统及磁盘管理

实验二文件系统及磁盘管理1.文件系统管理一、实验目的●掌握Linux下文件系统的创建、挂载与卸载。

●掌握文件系统的自动挂载。

二、项目背景某企业的Linux服务器中新增了一块硬盘/dev/sdb,请使用fdisk命令新建/dev/sdb1主分区和/dev/sdb2扩展分区,并在扩展分区中新建逻辑分区/dev/sdb5,并使用mkfs命令分别创建vfat和ext3文件系统。

然后用fsck命令检查这两个文件系统;最后,把这两个文件系统挂载到系统上。

三、实验内容练习Linux系统下文件系统的创建、挂载与卸载及自动挂载的实现。

四、实验步骤子项目1.创建/dev/sdb1和/dev/sdb5●使用fdisk命令创建/dev/sdb1主分区。

●使用fdisk命令创建/dev/sdb2扩展分区。

●使用fdisk命令创建/dev/sdb5逻辑分区。

●输入子命令w,把设置写入硬盘分区表,退出fdisk并重新启动系统。

●用mkfs命令在上述刚刚创建的分区上创建ext3文件系统和vfat文件系统。

●用fsck命令检查上面创建的文件系统。

子项目2.挂载/dev/sdb1和/dev/sdb5●利用mkdir命令,在/mnt目录下建立挂载点,mountpoint1和mountpoint2。

●把上述新创建的ext3分区挂载到/mnt/mountpoint1上。

●把上述新创建的vfat分区挂载到/mnt/mountpoint2上。

●利用mount命令列出挂载到系统上的分区,查看挂载是否成功。

●利用umount命令卸载上面的两个分区。

子项目3.实现/dev/sdb1和/dev/sdb5的自动挂载●编辑系统文件/etc/fstab文件,把上面两个分区加入此文件中。

●重新启动系统,显示已经挂载到系统上的分区,检查设置是否成功。

子项目4.挂载光盘和U盘●取一张光盘放入光驱中,将光盘挂载到/media/cdrom目录下。

查看光盘中的文件。

linux 配置与管理磁盘配额方法

linux 配置与管理磁盘配额方法

linux配置与管理磁盘配额方法在Linux系统中,我们经常需要对磁盘进行管理和配置,其中一个重要的方面就是磁盘配额的设置。

通过设置磁盘配额,我们可以限制用户或用户组对磁盘的使用空间,从而有效地管理磁盘资源。

本文将介绍如何在Linux系统中配置和管理磁盘配额。

1.磁盘配额的概念磁盘配额是一种机制,可以限制用户或用户组对磁盘的使用空间。

通过设置磁盘配额,可以避免某个用户或用户组占用过多的磁盘空间,从而保证其他用户的正常使用。

2.安装quota工具在开始配置磁盘配额之前,我们首先需要安装quota相关的工具。

在大多数Linux发行版中,quota工具都包含在系统中,可以通过以下命令进行安装:sudo apt-get install quota3.挂载磁盘分区并开启磁盘配额在设置磁盘配额之前,我们需要先将需要进行配额管理的磁盘分区挂载到Linux系统中。

然后,通过以下步骤开启磁盘配额:3.1编辑/etc/fstab文件,找到需要进行配额管理的磁盘分区对应的行,将其修改为类似如下形式:/dev/sda1/ext4defaults,usrquota,grpquota01其中,`usrquota`表示启用用户配额,`grpquota`表示启用用户组配额。

3.2重新挂载磁盘分区,使配置生效:sudo mount-o remount/4.创建磁盘配额数据库在开启磁盘配额之后,我们需要创建磁盘配额数据库来存储配额信息。

通过以下命令来创建数据库:sudo quotacheck-cum/其中,`-c`表示创建新的数据库,`-u`表示对用户启用配额,`-m`表示对用户组启用配额。

5.设置用户配额通过以下命令可以设置用户配额:sudo edquota-u username其中,`username`为需要设置配额的用户的用户名。

编辑配额文件后,我们可以设置用户的硬限制和软限制,硬限制指定了用户的最大磁盘使用空间,而软限制则是用户接近硬限制时会收到警告。

操作系统磁盘空间管理实验报告

操作系统磁盘空间管理实验报告

操作系统磁盘管理一、实验目的怎样有效地管理磁盘存储空间是操作系统应解决的一个重要问题,通过本实习使学生掌握磁盘存储空间的分配和回收算法。

二、实验内容模拟磁盘空闲空间的表示方法,以及模拟实现磁盘空间的分配和回收。

本实习模拟用位示图管理磁盘存储空间的管理方法。

设计申请一块磁盘空间和归还一块磁盘空间的程序。

要求能显示或打印程序运行前和运行后的位示图;分配时把分配到的磁盘空间的物理地址显示或打印出来,归还时把归还块对应于位示图的字节号和位数显示或打印出来。

假定已有如表1的磁盘空间被占用了,现在要申请五块磁盘空间,运行分配程序,显示或打印运行的结果。

然后再归还如表2的空间,运行回收程序,显示或打印运行结果。

三、实验步骤本实验在Visual C++ 6.0编程平台下进行编程实现,详见实验内容。

1.算法设计流程,及源代码;算法思想,及算法流程:磁盘存储空间的分配有两种方式,一种是分配连续的存储空间,另一种是可以分配不连续的存储空间。

为了表示哪些磁盘空间已被占用,哪些磁盘空间是空闲的,可用位示图来指出。

位示图由若干字节构成,每一位与磁盘上的一块对应,“1”状态表示相应块已占用,“0”状态表示该块为空闲。

当申请一块磁盘空间时,由分配程序查位示图,找出一个为“0”的位,计算出这一位对应块的磁盘物理地址,且把该位置成占用状态“1”。

假设现在有一个盘组共80个柱面,每个柱面有两个磁道,每个磁道分成4个物理记录。

那么,当在位示图中找到某一字节的某一位为“0”时,这个空闲块对应的磁盘物理地址为:柱面号=字节号磁道号=[位数/4] 物理记录号={位数/4} 当归还一块磁盘空间时,由回收程序根据归还的磁盘物理地址计算出归还块在位示图中的对应位,把该位置成“0”。

归还块在位示图中的位置计算如下:字节号=柱面号位数=磁道号 4+物理记录号源程序:#include<iostream.h>#include<stdlib.h>#include<iomanip.h>#define A 10#define B 2#define C 4int koko[A][B][C];int M,N;int i,j,k;char ch;void i_koko(){for(i=0;i<A;i++){for(j=0;j<B;j++){for(k=0;k<C;k++){koko[i][j][k]=1;}}}}void Dispense(){do{cout<<"请输入字节号:"<<'\t';cin>>M;cout<<"请输入位数:"<<'\t';cin>>N;i=M;j=N/4;k=N%4;koko[i][j][k]=0;cout<<"是否继续输入(Y/N):"<<'\t';cin>>ch;}while(ch=='Y'||ch=='y');}void Recycle(){do{cout<<"请输入柱面号"<<'\t';cin>>i;cout<<"请输入磁盘号"<<'\t';cin>>j;cout<<"请输入逻辑记录号"<<'\t';cin>>k;koko[i][j][k]=1;cout<<"是否继续输入(Y/N):"<<'\t';cin>>ch;}while(ch=='Y'||ch=='y');}void Display(){int i,j,k;int flag=0;cout<<"**位示图**"<<endl;cout<<"字\位"<<setw(3);for(i=0;i<B*C;i++){cout<<i<<setw(3);}cout<<endl;for(i=0;i<A;i++){cout<<setw(3)<<i<<setw(6);for(j=0;j<B;j++){for(k=0;k<C;k++){cout<<koko[i][j][k]<<setw(3);flag++;if(flag%8==0)cout<<endl;}}}cout<<endl;cout<<"**磁盘分配图**"<<endl;cout<<"柱面号"<<'\t'<<"磁道号"<<'\t'<<"物理记录号"<<endl;for(i=0;i<A;i++){for(j=0;j<B;j++){for(k=0;k<C;k++){if(koko[i][j][k]==0)cout<<i<<'\t'<<j<<'\t'<<k<<endl;}}}cout<<endl<<endl;}void KOKO(){cout<<"**********************************"<<endl;cout<<"* 1.分配"<<"2.回收"<<"3.显示"<<"4.退出*"<<endl;cout<<"**********************************"<<endl;cout<<"选择所要执行的功能:"<<'\t';int x;cin>>x;cout<<endl;switch(x){case 1:Dispense(); break;case 2:Recycle();break;case 3:Display();break;case 4:exit(1);break;default:cout<<"Error! 该功能不存在请重新输入"<<endl<<endl;}}void main(){i_koko();while(1){KOKO();}}2.编译、调试程序;3.运行程序,记录结果。

linux磁盘管理的实验原理

linux磁盘管理的实验原理

Linux磁盘管理的实验原理主要包括以下几个方面:
1.分区和文件系统:在Linux中,磁盘设备被看作文件,它们可以通过分区来管理。

分区是一种将磁盘划分为不同部分的方法,每个部分都可以独立地格式化为文件系统。

通过分区,可以更灵活地管理磁盘空间,例如将不同的数据存储在不同的分区中,或者将不同的文件系统用于不同的应用程序。

2.挂载和卸载:在Linux中,文件系统需要被挂载到目录树中才能被访问。

挂载是指
将文件系统与目录树中的一个目录相关联的过程。

卸载则是取消这个关联,将文件系统从目录树中移除。

3.磁盘配额:磁盘配额是一种限制用户或组在文件系统上使用的磁盘空间量的机制。

通过磁盘配额,管理员可以确保用户不会消耗过多的磁盘空间,从而保护系统的稳定性和安全性。

4.磁盘备份和恢复:Linux提供了多种备份和恢复工具,如tar、cpio、dd等,用于
备份和恢复磁盘上的数据。

这些工具可以用于创建、管理和恢复备份映像,以防止数据丢失并保护系统的完整性。

通过以上原理,Linux磁盘管理实验可以帮助用户更好地理解Linux系统中磁盘管理的机制和操作方法,提高用户对Linux系统的管理和维护能力。

磁盘管理技术实验报告

磁盘管理技术实验报告

一、实验目的本次实验旨在使学生掌握磁盘管理的基本原理和方法,熟悉Linux操作系统中磁盘管理的常用命令和工具,了解磁盘分区、格式化、挂载等操作,提高学生在实际工作中处理磁盘问题的能力。

二、实验环境1. 操作系统:Linux Ubuntu 20.042. 硬件环境:虚拟机环境,至少一块硬盘3. 软件环境:fdisk、parted、mkfs、mount、df、du等磁盘管理工具三、实验内容1. 磁盘分区(1)使用fdisk命令创建磁盘分区首先,通过fdisk命令进入磁盘分区编辑模式,然后输入n创建新分区,选择分区类型(主分区或扩展分区),指定分区大小,最后输入t修改分区类型。

(2)使用parted命令创建磁盘分区parted命令可以用于创建、删除、修改磁盘分区。

首先,通过parted命令进入磁盘分区编辑模式,然后输入mkpart创建新分区,指定分区类型、大小和文件系统。

2. 磁盘格式化使用mkfs命令对磁盘分区进行格式化,指定分区类型(如ext4、ext3、ext2、fat32等)。

3. 磁盘挂载使用mount命令将磁盘分区挂载到文件系统,指定挂载点。

4. 磁盘使用情况查看使用df命令查看磁盘使用情况,包括总空间、已用空间、可用空间等信息。

5. 磁盘空间占用情况查看使用du命令查看文件或目录占用空间大小。

6. 磁盘配额设置使用quota命令设置磁盘配额,限制用户或用户组在磁盘上的使用量。

7. 逻辑盘配置使用lvm(逻辑卷管理)工具配置逻辑盘,包括创建物理卷、卷组、逻辑卷,以及拓展和缩小逻辑卷的大小。

四、实验步骤1. 创建磁盘分区首先,使用fdisk命令创建磁盘分区,然后使用parted命令创建磁盘分区。

2. 格式化磁盘分区使用mkfs命令对磁盘分区进行格式化,指定分区类型。

3. 挂载磁盘分区使用mount命令将磁盘分区挂载到文件系统,指定挂载点。

4. 查看磁盘使用情况使用df命令查看磁盘使用情况。

5. 查看磁盘空间占用情况使用du命令查看文件或目录占用空间大小。

linux磁盘管理的步骤

linux磁盘管理的步骤

linux磁盘管理的步骤
Linux磁盘管理的步骤包括以下几个阶段:
1.查看磁盘信息:首先,你可以使用ll /dev/sd*或lsblk 命令来查看磁盘信息。

这将显示系统中所有可用的磁盘和分区。

2.创建分区:使用fdisk命令来创建新的分区。

例如,fdisk /dev/sdb将会打开一个交互式界面,你可以在其中创建新的分区。

分区完成后,使用partprobe /dev/sdb命令刷新分区表。

3.格式化:在创建分区后,你需要创建文件系统。

对于Linux,常用的文件系统类型包括ext4、XFS等。

你可以使用mkfs.ext4 /dev/sdb1命令来格式化一个分区。

4.挂载:在格式化完成后,你需要将分区挂载到某个目录上。

首先,创建一个挂载点,如mkdir /mnt/disk1,然后使用mount -t ext4 /dev/sdb1 /mnt/disk1命令来挂载分区。

5.查看挂载信息:最后,你可以使用df -hT命令来查看挂载信息,以确保分区已经成功挂载。

以上就是Linux磁盘管理的基本步骤。

请注意,在进行磁盘管理操作时,需要具有相应的权限,最好以root用户身份进行操作。

linux磁盘管理实验报告

linux磁盘管理实验报告

linux磁盘管理实验报告今天我要给大家讲一讲我做的Linux磁盘管理实验。

在这个实验之前呀,我就像要去探索一个神秘的宝藏世界。

Linux就像一个大大的城堡,磁盘管理呢,就像是城堡里管理宝藏存放的魔法。

我一开始打开Linux系统,就看到那些各种各样的图标和菜单,心里又好奇又有点小紧张。

我的任务是要学会怎么在这个系统里管理磁盘。

磁盘就像是一个超级大的盒子,可以用来装好多好多东西,就像我们的书包能装书本和文具一样。

我先找到磁盘管理的工具,那感觉就像在城堡里找到了一把神秘的钥匙。

当我看到磁盘的空间显示时,就像看到了宝藏的大小。

有好多数字和图形在告诉我,这个磁盘哪些地方是空的,哪些地方已经被东西装满了。

我试着给磁盘划分不同的区域,就像把大盒子分成几个小格子。

比如说,我把一个磁盘空间分成了放学习资料的格子、放游戏(当然是健康的小游戏啦)的格子和放我自己写的小故事的格子。

这个过程特别有趣,就像我在给我的宝藏分类存放一样。

在这个过程中,我还遇到了一个小问题呢。

我不小心把一个格子分得太小了,就像我给我的故事本准备的小盒子,结果装不下我所有的故事了。

我当时可着急了,就像我心爱的玩具找不到家了一样。

但是我没有放弃呀,我重新调整了这个格子的大小,就像重新给我的故事本找了一个更大的家。

做完这些之后,我又学会了如何查看磁盘的使用情况。

就像我每天晚上要看看我的书包里东西有没有放好一样。

我能清楚地看到每个格子里装了多少东西,还有多少空间可以用。

这个Linux磁盘管理的实验真的很有趣。

它让我学会了怎么更好地管理这个神秘的“宝藏盒子”。

就像我们要管理好自己的小天地一样,要把东西整理得井井有条。

我希望以后还能做更多这样有趣的实验,探索更多Linux城堡里的魔法。

我也想把这个有趣的经历分享给让大家也能感受到这种探索的快乐。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录摘要 (2)前言 (3)正文 (4)1. 实验目的 (4)2. 设计思想 (4)3. 实验结构图 (5)4. 各模块的伪码算法 (5)5. 测试分析 (10)6. 测试结果 (11)7. 源程序 (14)总结 (24)参考文献 (25)致谢 (26)摘要要把文件信息存放在存储介质上,必须先找出存储介质上可供使用的空闲块。

存储介质上某个文件不再需要时,又要收回它所占的存储空间作为空闲块。

用户作业在执行期间经常要求建立一个新文件或撤消一个不再需要的文件,因此,文件系统必须要为它们分配存储空间或收回它所占的存储空间。

如何实现存储空间的分配和收回,取决于对空闲块的管理方法,主要有两种对磁盘存储空间的分配和收回的方法:位示图法(用一张位示图(简称位图)来指示磁盘存储空间的使用情况),空闲块链接法(在UNIX操作系统中,把磁盘存储空间的空闲块成组链接)。

关键词:磁盘的分配和回收管理;位示图;成组链接。

前言通过该题目的设计过程,掌握磁盘存储管理的原理、软件开发方法并提高解决实际问题的能力。

学习使用位示图管理磁盘空间的分配与回收,了解程序运行前和回收磁盘的物理地址过程。

学会用模拟UNIX系统的成组链接法实现磁盘空间的管理。

了解UNIX的命令及使用格式,熟悉UNIX/LINUX的常用基本命令,练习并掌握UNIX提供的vi编辑器来编译C程序,学会利用gcc、gdb编译、调试C程序。

希望通过本次设计过程可以提高自己的分析问题的能力和实际动手的能力,将学到的知识用于实践中。

正文1. 实验目的磁盘格式化时,系统把磁盘存储空间分成许多磁道。

每个磁道又分成若干个扇区(又叫做块)。

这些空间就是用来存放用户文件的。

当用户的文件不再需要时,就应该删除。

把一个文件存放到磁盘上时,可以组织成连续文件,链接文件,索引文件等。

因此,磁盘空间的分配方法也有两种,一种是连续空间的分配;一种是不连续空间的分配(又叫动态分配)。

如何充分有效的利用磁盘空间,是操作系统应解决的重要课题之一。

通过本实验,使学生对磁盘空间的分配与回收有一个较深入的理解。

2. 设计思想位示图法:一个简单的管理方法是用一张位示图(简称位图)来指示磁盘存储空间的使用情况。

一个盘组的分块确定后,根据分配的总块数决定位图由多少个字组成,位图中的每一位与盘组分块一一对应。

位示图是一张可以反映磁盘空间是否被占有的模拟图,用一个二维数组表示磁盘的空间,数组内每一个元素表示磁盘内相应的分块,数组元素为“1”表示该块已被占,“0”表示该块为空。

数组元素位置与磁盘分块一一对应,即可描述出磁盘空间的利用情况。

成组链接法:首先定义磁盘分配数组并初始化,9个一维数组分别表示9个空闲块,程序运行时,先将专用块A〔0〕复制到内存中,然后进行功能选择,分配时,查MA,从中找出空闲块号,当一组的空闲块只剩第一块时,应把该块中指出的下一组的空闲块数和块号复制到专用块这,然后把该块分配给申请者,当一组的空闲块分配完后则把专用块内容(下一组链接情况)复制到内存,再为申请者分配。

回收时,输入待回收的块号,查找该块是否已被分配,若未分配,退出,否则,当前组不满规定块数时,将归还块登记入该组,若当前组已满,则另建一新组,这时归还块作为新一组的第一块,应把内存中登记的一组链接情况MA复制到归还块中,然后在MA这重新登记一个新组。

显示分组情况。

系统初始化时先将专用块内容读入内存,当有申请空闲块要求时,就直接在内存专用块中找到哪些块是空闲的,每分配一块后把空闲块数减1。

但要把一组中第一块分配出去之前,可以先把登记在该块中的下一组的块号保存在专用块中(此时,原专用块中的信息巳经无用了,因它指示的一组空闲块都已分配掉)。

当中文组空闲块分配完后,则将下一组内容读入内存专用块中,以便继续分配时查找。

3. 实验结构图4. 各模块的伪码算法1)对位示图法申请磁盘块查看位示图找位号等是否找到是:由字位号计算相对块号和柱面号,磁道号,物理记录号,并输出这些相应参数否:返回,磁盘已满,本次无法分配置位示图相应位为1 返回定义分配函数:void assign(){unsigned int n=0,i,s=1,j,k,q,m,sq,zhm,cid;for(i=0 ,k=0;i<5;i++){q=size[i] ;j=0;while(1){j++ ;if((q%2)==0){ if(j==1) size[i]+=1;else{for(m=1;m<j;m++)s*=2 ;size[i]+=s;}k=1;break ;/*完成后退出*/}q=q/2;}if(k==1) /*将找到的位示图位转换成物理地址*/{ if((j-1)/8==1){zhm=2*i+1;cid=(j-9)/4;sq=(j-9)%4;}else{zhm=2*i;cid=(j-1)/4;sq=(j-1)%4;}n=1;break;/*退出for循环*/}}if(n==0)printf("没有空间可分配!\n");else{printf("分配成功!\n");/*输出物理地址*/printf("柱面号为: %d\n",zhm);printf("磁道号为: %d\n",cid);printf("扇区号为: %d\n",sq);}printf("分配后的位示图为:\n");out();}定义回收函数:void callback()/*回收函数*/{ unsigned int i,j,s=1,q,m,sq,zhm,cid;printf("确定要回收块的柱面号、磁道号、扇区号:\n");printf("请输入柱面号:");scanf("%d",&zhm);printf("\n请输入磁道号:");scanf("%d",&cid);printf("\n请输入扇区号:");scanf("%d",&sq);if(zhm%2==0)/*计算对应的位示图位置*/{ i=zhm/2;j=cid*4+sq+1;}else{ i=(zhm-1)/2;j=cid*4+sq+9;}q=size[i];m=j-1;while(m){q=q/2;m--;}if(q%2==1)/*判断该块是否被分配*/{if(j==1)size[i]-=1;/*将位示图对应为置零*/else{for(m=1;m<j;m++)s*=2 ;size[i]-=s;}printf("回收成功!");printf("回收后的位示图为:\n");out();}elseprintf("该块以被分配!");}2)对成组链接法void assign(){int s,i;if(MA[0]>1) /*若该组不止一个空闲块*/ { i=MA[0];s=MA[i];MA[0]--;printf("\nnumber of the block:%d",s);}else if(MA[0]==1) /*只剩一个空闲块*/ {if(MA[1]!=0) /*还有其它空闲块组*/ { s=MA[1];for(i=0;i<=3;i++)A[0][i]=A[s][i];MA[0]--;printf("\nnumber of the block:%d",s);}else /*没有其它空闲块组*/{ printf("\nThere isn't any space");return;}}else /*当前组已分配完*/{for(i=0;i<=3;i++)MA[i]=A[0][i];assign();}display(); /*显示分组情况*/}void callback(){ int i,j,temp;printf("\ninput the No. of the block you want to callback:");scanf("%d",&j);getchar(); /*得到待回收的空闲块号*/for(temp=1;temp<=No;temp++){ if(mark[temp]==j)break;}if(temp<No+1) /*若该空闲块已在,退出*/{ printf("\nThe block is in the disk");return;}if(MA[0]<3) /*当前组不满3块*/{ i=MA[0];MA[i+1]=j;MA[0]++;}else /*已有3块*/{for(i=0;i<=3;i++)A[j][i]=MA[i];MA[0]=1;MA[1]=j;}display(); /*显示*/}5. 测试分析用位示图表示的磁盘空间可以很形象的反映出磁盘中空间的利用情况,不足之处在于每次分配与回收只可以对单一的分块进行操作,不能同时进行几个块的分配与回收,要进行多个块的分配时,只能单独分配,且块之间没有相互链接,对于大的空间分配只能在连续空间进行。

用成组链接法模拟的磁盘空间能够解决用位示图中存在的问题,它可以通过链表的形式存取信息,对于较大的空间分配,若一个磁盘空间不够,通过指针找到下一个空闲的分区,但操作过程比较复杂,没有位示图方便,简捷。

6. 测试结果1)位示图法✧编译及连接时界面:✧刚运行时界面:✧分配空间时界面:✧回收空间时界面:2)成组链接法分配空间时界面:回收空间时界面:7. 源程序位示图法:#include<stdio.h>unsigned int size[5]={1,1,1,1,1};/*保存位示图*/void out()/*输出位示图函数*/{ unsigned int i,j,m;for(j=0;j<5;j++)/*循环输出size的各个数的各个二进制位*/{m=size[j];for(i=0;i<16;i++) /**/{printf("%d ",m%2);m=m/2;if(i==7)printf("\n");}printf("\n");}}void callback()/*回收函数*/{ unsigned int i,j,s=1,q,m,sq,zhm,cid;printf("确定要回收块的柱面号、磁道号、扇区号:\n");printf("请输入柱面号:");scanf("%d",&zhm);printf("\n请输入磁道号:");scanf("%d",&cid);printf("\n请输入扇区号:");scanf("%d",&sq);if(zhm%2==0)/*计算对应的位示图位置*/{ i=zhm/2;j=cid*4+sq+1;}else{ i=(zhm-1)/2;j=cid*4+sq+9;}q=size[i];m=j-1;while(m){q=q/2;m--;}if(q%2==1)/*判断该块是否被分配*/{if(j==1)size[i]-=1;/*将位示图对应为置零*/else{for(m=1;m<j;m++)s*=2 ;size[i]-=s;}printf("回收成功!");printf("回收后的位示图为:\n");out();}elseprintf("该块以被分配!");}void assign(){unsigned int n=0,i,s=1,j,k,q,m,sq,zhm,cid;for(i=0 ,k=0;i<5;i++){q=size[i] ;j=0;while(1){j++ ;if((q%2)==0){ if(j==1) size[i]+=1;else{for(m=1;m<j;m++)s*=2 ;size[i]+=s;}k=1;break ; /*完成后退出*/}q=q/2;}if(k==1) /*将找到的位示图位转换成物理地址*/{ if((j-1)/8==1){zhm=2*i+1;cid=(j-9)/4;sq=(j-9)%4;}else{zhm=2*i;cid=(j-1)/4;sq=(j-1)%4;}n=1;break;/*退出for循环*/}}if(n==0)printf("没有空间可分配!\n");else{printf("分配成功!\n");/*输出物理地址*/printf("柱面号为: %d\n",zhm);printf("磁道号为: %d\n",cid);printf("扇区号为: %d\n",sq);}printf("分配后的位示图为:\n");out();}void menu() /*功能选择函数*/ { int choice;char judge;printf("\n请选择操作:(1--分配,2--回收):");scanf("%d",&choice);getchar();if(choice==1)assign();else if(choice==2)callback();elseprintf("\n没有此项!");printf("\n继续还是退出?(y--继续,n--退出):");scanf("%c",&judge);getchar();if(judge=='y')menu();else{ printf("\n现在的位示图:\n");out();printf("\n按任意键退出!\n");getchar();}}main(){printf("\t\t————欢迎进入磁盘空间管理模拟实验————\n");printf( " \n");printf("★★★★08级计算机一08240128 李彦博★★★★\n");printf("﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌\n");out();menu();}成组链接法:#include<stdio.h>int MA[4]; /*空闲块数组*/intA[9][4]={{3,1,2,3},{3,4,5,6},{0,0,0,0},{0,0,0,0},{3,0,7,8},{0,0,0,0},{0,0,0,0} ,{0,0,0,0},{ 0,0,0,0}}; /*磁盘空间*/int mark[9]; /*存放已分配的块*/int No=0; /*已分配的块数*/void display1(){int i,j,temp,count;No=0;if(MA[1]!=0){i=MA[0];printf("\ngroup1:");for(j=1;j<=i;j++){ printf("%d ",MA[j]);mark[++No]=MA[j];}temp=MA[1];count=2;while(A[temp][1]!=0){ printf("\ngroup%d:",count);i=A[temp][0];for(j=1;j<=i;j++){printf("%d ",A[temp][j]);mark[++No]=A[temp][j];}count++;temp=A[temp][1];}printf("\ngroup%d:",count);i=A[temp][0];for(j=2;j<=i+1;j++)if(A[temp][j]>0){printf("%d ",A[temp][j]);mark[++No]=A[temp][j];}}else{i=MA[0];if(i==1)printf("\nThe blocks are all assigned");else{printf("\ngroup1:");for(j=2;j<=i;j++){printf("%d ",MA[j]);mark[++No]=MA[j];}}}}void display() /*显示分组情况*/{ int i,j;if(MA[0]!=0)display1();else{i=MA[1];for(j=0;j<=3;j++)MA[j]=A[i][j];display1();}}void assign() /*分配空闲块*/{int s,i;if(MA[0]>1) /*若该组不止一个空闲块*/ { i=MA[0];s=MA[i];MA[0]--;printf("\nnumber of the block:%d",s);}else if(MA[0]==1) /*只剩一个空闲块*/ {if(MA[1]!=0) /*还有其它空闲块组*/ { s=MA[1];for(i=0;i<=3;i++)A[0][i]=A[s][i];MA[0]--;printf("\nnumber of the block:%d",s);}else /*没有其它空闲块组*/{ printf("\nThere isn't any space");return;}}else /*当前组已分配完*/{for(i=0;i<=3;i++)MA[i]=A[0][i];assign();}display(); /*显示分组情况*/}void callback() /*回收空闲块*/{ int i,j,temp;printf("\ninput the No. of the block you want to callback:");scanf("%d",&j);getchar(); /*得到待回收的空闲块号*/for(temp=1;temp<=No;temp++){ if(mark[temp]==j)break;}if(temp<No+1) /*若该空闲块已在,退出*/{ printf("\nThe block is in the disk");return;}if(MA[0]<3) /*当前组不满3块*/{ i=MA[0];MA[i+1]=j;MA[0]++;}else /*已有3块*/{for(i=0;i<=3;i++)A[j][i]=MA[i];MA[0]=1;MA[1]=j;}display(); /*显示*/}void menu() /*功能选择函数*/{ int choice;char judge;printf("\n做出选择:(1--分配,2--回收):");scanf("%d",&choice);getchar();if(choice==1)assign();else if(choice==2)callback();elseprintf("\n错误请求!");printf("\ncontinue or not (y--Yes,n--Not):");scanf("%c",&judge);getchar();if(judge=='y')menu();else{ printf("\nNow the graph is:");display();printf("\npress any key to quit");}}main(){ int i;for(i=0;i<=3;i++)MA[i]=A[0][i];display();menu();}总结经过本次课程设计,完成题目“磁盘空间管理模拟实验”,熟悉了UNIX/LINUX 的常用基本命令,理解并掌握了UNIX提供的vi编辑器来编译C程序,学会利用gcc、gdb编译、调试C程序。

相关文档
最新文档