《Ubuntu Linux 从入门到精通》——第6章 磁盘管理 6.1磁盘管理基础-阿里云开发者社区

开发者社区> 异步社区> 正文

《Ubuntu Linux 从入门到精通》——第6章 磁盘管理 6.1磁盘管理基础

简介: 主分区最多可以有3个,而扩展分区最多只能规划为1个,其实扩展分区并不能直接使用,它还需要被划分为若干个逻辑分区(Logic),逻辑分区的个数最多可以存在12个。因此,一张硬盘可划分为15个分区,即15个挂载点。表6-1解释了不同类型挂载点的功能。
+关注继续查看

本节书摘来自异步社区《Ubuntu Linux 从入门到精通》一书中的第6章,第6.1节,作者:陶松 , 刘雍 , 韩海玲 , 周洪林著,更多章节内容可以访问云栖社区“异步社区”公众号查看

第6章 磁盘管理

Linux操作系统对磁盘的管理方式与Windows相比,有着显著的区别。Ubuntu作为Linux家族的一员,有着所有Linux系统对磁盘管理的共有特点,也有着自己的独特之处。Ubuntu对磁盘的管理方式和策略方便了计算机用户更有效、更合理、更方便地使用磁盘空间,并且从系统安全的角度出发,Ubuntu比Windows有着更加强健的安全策略。

本章第1节介绍Ubuntu磁盘管理基础知识,包括分区的基本概念,分区的规划方案,磁盘管理的方法等。

第2节介绍在Ubuntu中如何挂载和卸载分区,掌握这一方法,读者可以从本质上形成对Ubuntu及其他Linux操作系统的分区管理的概念。

6.1 磁盘管理基础

Ubuntu有着自己相对独特的磁盘管理体系,这和其他Linux类系统非常相似,与Windows操作系统有较大的区别。本节对比Ubuntu和Windows两种操作系统在管理磁盘设备时的异同,介绍在Ubuntu中规划磁盘分区的方案,讲解在进行磁盘管理的过程中常用的shell命令。

6.1.1 硬盘分区基本知识
对于熟悉Windows操作系统的用户而言,经常会遇到“分区”的概念。然而,在任何“类Linux”操作系统中,如Ubuntu,并没有如同Windows中的“分区”这个概念,它们采用“挂载点”取代“分区”的概念。

“挂载点”的意思就是:把一部分硬盘容量“分”成一个文件夹的形式,用来干一些事情,这个文件夹的名字就叫做“挂载点”。所以,Linux和Windows有着本质上的区别。在任何一个Linux发行版系统里,用户绝对不会看到C盘、D盘、E盘这样的标识符,能看到的只有“文件夹”形式存在的“挂载点”。

本书第4章在讲解文件系统管理时,已经介绍过Ubuntu主要的几个目录,如/、/boot、/home、/root等,其实每个文件夹对应的就是一个挂载点。

在Windows中,同一张硬盘可以被划分为不同的分区。一般人通常都喜欢把硬盘分割成C区和D区,若需要重新安装系统,就会把所有的数据和文件都放在D区,只要把系统C区格式化刪除,再重装系统,数据就不用备份,可以很容易地完成重装且保存数据。在Ubuntu中也是一样,不同的挂载点分别存放着不同的文件,这对于系统的安全和可维护性都有好处。

硬盘在记录所谓“分区”的情况时,会在主扇区创建一张硬盘分区表,这一点Ubuntu和Windows是相同的。分区的类型实质上有两种:一个是主分区(Primary),另一个是扩展分区(Extend)。

主分区最多可以有3个,而扩展分区最多只能规划为1个,其实扩展分区并不能直接使用,它还需要被划分为若干个逻辑分区(Logic),逻辑分区的个数最多可以存在12个。因此,一张硬盘可划分为15个分区,即15个挂载点。表6-1解释了不同类型挂载点的功能。
screenshot

通过查看配置文件/etc/fstab,可以详细了解Ubuntu中硬盘分区的情况及别名,如下所示:

root@jacky-desktop:~# cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point>  <type> <options>    <dump> <pass>
proc         /proc       proc  defaults    0    0
# /dev/sda1
UUID=da0ad461-4b12518ab1bb9  / ext3 relatime,errors=remount-ro 0  1
# /dev/sda5
UUID=6fec-d4b7-b67e-673152afe115 none     swap  sw       0    0
/dev/scd0    /media/cdrom0  udf,iso9660 user,noauto,exec,utf8 0    0
/dev/fd0    /media/floppy0 auto  rw,user,noauto,exec,utf8 0    0
/root/swapfile none  swap  sw   default  0  0

由于本书使用的Ubuntu是运行于虚拟机中的,因此看到的该文件信息与直接将Ubuntu安装在硬盘上的用户不同。但无论如何,其表示方法是类似的,都是以/dev/文件夹下的一个文件夹表示一个分区。

使用虚拟机安装的用户,根据本书第1章的方法安装后,看到的/etc/fstab文件信息如上所示。这里并没有实际的硬盘,而主分区或称为主挂载点的别名是/dev/sda1,即“/”挂载点。文件信息中的/dev/sda5表示逻辑分区,此处有两个虚拟的设备,一个是/dev/scd0,表示光驱;另一个是/dev/fd0,表示软驱。SWAP交换分区被挂载至/root/swapfile。

直接将Ubuntu安装在硬盘上的用户,可以看到硬盘分区的别名格式如下所示:

/dev/hda1
/dev/hda2
/dev/hda3
/dev/hda4
/dev/hda5
/dev/sdb1

其中,/dev/后面的部分表示一个具体的分区,hd表示IDE硬盘,sd表示SATA硬盘或者其他的外部设备,had中的第3位字母a表示这是该类型接口上的第1个设备。每一个IDE接口可以允许有两个设备,一个为主设备,另一个为从设备,可以分别用hda、hdb表示第1个IDE接口上的两个设备。

/dev/hda1~/dev/hda4都表示主分区,/dev/hda5表示该硬盘上的第1个逻辑分区。在Ubuntu中为了避免出现不必要的混乱,分区的顺序是不能随意改变的,分区的别名或标识由它们在硬盘中的位置决定。

6.1.2 磁盘分区规划方案
根据机器的不同使用领域,或要完成不同的主要任务,在规划磁盘空间的时候可以有多种方案。本小节对几种常用类型作一个推荐方案,读者可以根据自己的实际需要参考配置。

在介绍方案前,以IDE硬盘空间为80GB、内存为512MB的机器为例,读者根据自己电脑的硬件配置情况,按比例增减即可。以下介绍入门级、进阶使用、服务器常用的硬盘空间分区规划方案,这些都只是推荐方案,也就是目前用得比较多的配置方案,读者可以根据自己的需求来决定。

表6-2为入门级系统对硬盘分区规划的方案,表6-3为进阶级系统对硬盘分区规划的方案,表6-4为服务器系统对硬盘分区规划的方案。
screenshot
screenshot

6.1.3 磁盘管理方法
本小节讲解与磁盘管理相关的一系列shell命令的使用方法,其中有些命令是可以用在安装Ubuntu时进行分区控制和格式化分区的。

1.磁盘分区命令fdisk
用于硬盘分区,它采用传统的问答式界面。

语法:fdisk [参数]。

主要参数。

-b<分区大小>:指定每个分区的大小。

-l:列出指定的外围设备的分区表状况。

-s<分区编号>:将指定的分区大小输出到标准输出上,单位为区块。

-u:搭配“-l”参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址。

在安装Ubuntu时,可以用该命令对硬盘进行分区,如下所示:

root@jacky-desktop:~# fdisk /dev/hda    //对IDE硬盘进行分区
root@jacky-desktop:~# fdisk /dev/sdb    //对SCSI硬盘进行分区

在进行分区时,常用的子命令如下。

p:显示现有分区。

n:建立分区。

t:更改分区类型。

d:删除分区。

a:更改分区启动标志。

w:对分区的更改写入硬盘并退出。

q:不保存更改退出。

此外,该命令还常常用于列出磁盘分区信息,如下所示:

root@jacky-desktop:~# fdisk –l         //列出当前操作系统的磁盘分区信息

Disk /dev/sda: 8589 MB, 8589934592 bytes   //主分区大小为8589MB
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000b8bf5

  Device Boot   Start     End   Blocks  Id System
/dev/sda1  *      1     993   7976241  83 Linux
/dev/sda2       994    1044   409657+  5 Extended
/dev/sda5       994    1044   409626  82 Linux swap / Solaris

对于不同的机器,使用该命令看到的信息不一致。以笔者的机器为例,当前的主设备是/dev/sda,大小为8589MB,共有3个分区:sda1、sda2、sda5。

2.建立文件系统命令mkfs
该命令类似于Windows中的format,也就是针对某一分区,在它上面创建一个新的文件系统,或者可以看作是将该分区的文件系统格式化为指定的格式。在安装Ubuntu时,常常用在fdisk命令之后。在使用Ubuntu的过程中,如果要改变某一分区的文件系统格式,就必须先做好目标分区的文件的备份工作,再使用该命令。

语法:mkfs [参数] [-t 文件系统类型] [分区名称]。

主要参数。

fs:指定建立文件系统时的参数。

-V:显示版本信息和简要的使用方法,主要用于测试。

-v:显示版本信息和详细的使用方法。

如下所示:

root@jacky-desktop:~# mkfs –v          //显示命令使用方法
Usage: mkfs.ext2 [-c|-l filename] [-b block-size] [-f fragment-size]
     [-i bytes-per-inode] [-I inode-size] [-J journal-options]
     [-N number-of-inodes] [-m reserved-blocks-percentage] [-o creator-os]
     [-g blocks-per-group] [-L volume-label] [-M last-mounted-directory]
     [-O feature[,...]] [-r fs-revision] [-E extended-option[,...]]
     [-T fs-type] [-jnqvFSV] device [blocks-count]

root@jacky-desktop:~# mkfs –V          //显示版本信息
mkfs (util-linux-ng )

root@jacky-desktop:~# mkfs -t ext3 /dev/sda3  //将/dev/sda3的文件系统建立为ext3类型

3.设置交换分区命令mkswap
语法:mkswap [参数] [设备或分区名称] [交换分区大小]。

主要参数。

-c:在建立交换分区前,检查块设备是否有损坏,如果有,将打印出来。

-f:在SPARC机器上建立交换分区时使用。

-v0:建立旧式的交换分区。

-v1:建立新式的交换分区。

[交换分区大小]的单位是1KB字节,即1024字节。

如下所示:

root@jacky-desktop:~# mkswap -c -v1 /dev/sda5 102400    //在/dev/sda5建立大小为100MB的交换分区,建立前先检查是否有损坏的区块

4.显示磁盘信息命令df
语法:df [参数] [设备或区块]。

主要参数。

-a:包含全部的文件系统。

--block-size=<区块大小>:以指定的区块大小来显示区块数目。

-h:以可读性较高的方式来显示信息。

-H:与-h参数相同,但在计算时是以1000 Bytes为换算单位,而非1024 Bytes。

-i:显示inode的信息。

-k:指定区块大小为1024字节。

-l:仅显示本地端的文件系统。

-m:指定区块大小为1048576字节。

-P:使用POSIX的输出格式。

-t <文件系统类型>:仅显示指定文件系统类型的磁盘信息。

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

-x <文件系统类型>:不要显示指定文件系统类型的磁盘信息。

--help 显示帮助。

如下所示:

root@jacky-desktop:~# df –a      //显示所有的磁盘信息
文件系统    1K-块     已用   可用 已用% 挂载点
/dev/sda1    7913216  2519676  4994728 34% /
proc           0     0     0  - /proc
/sys           0     0     0  - /sys
varrun       257788    108   257680  1% /var/run
varlock      257788     0   257788  0% /var/lock
udev        257788    44   257744  1% /dev
devshm       257788    12   257776  1% /dev/shm
devpts          0     0     0  - /dev/pts
lrm         257788   38684  219104 16% /lib/modules/-19-generic/volatile
securityfs          0     0     0  - /sys/kernel/security
gvfs-fuse-daemon       0     0     0  - /home/jacky/.gvfs
root@jacky-desktop:~# df –l        //仅显示本地的文件系统信息
文件系统    1K-块    已用   可用 已用% 挂载点
/dev/sda1     7913216  2519676  4994728 34% /
varrun       257788    108  257680  1% /var/run
varlock       257788     0  257788  0% /var/lock
udev        257788    44  257744  1% /dev
devshm       257788    12  257776  1% /dev/shm
lrm         257788   38684  219104 16% /lib/modules/-19-generic/volatile
root@jacky-desktop:~# df –i    //显示索引结点信息
文件系统      Inode (I)已用 (I)可用 (I)已用% 挂载点
/dev/sda1     499712 113866 385846  23% /
varrun       64447    59  64388  1% /var/run
varlock       64447    1  64446  1% /var/lock
udev        64447   2819  61628  5% /dev
devshm       64447    2  64445  1% /dev/shm
lrm         64447    19  64428  1% /lib/modules/-19-generic/volatile
root@jacky-desktop:~# df -t ext3      //显示系统中ext3类型的分区信息
文件系统    1K-块     已用    可用 已用% 挂载点
/dev/sda1    7913216  2519676  4994728 34% /

5.显示目录的容量du
语法:du [参数] [目标目录]。

主要参数。

-a:显示目录中所有文件的大小。

-b:显示目录或文件大小时,以Byte为单位。

-c:除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。

-D:显示指定符号连接的源文件大小。

-h:以K、M、G为单位,提高信息的可读性。

-H:与-h参数相同,但是K、M、G是以1000为换算单位。

-k:以1024字节为单位。

-l:重复计算硬件连接的文件。

-L:显示选项中所指定符号连接的源文件大小。

-m:以1MB为单位。

-s:仅显示总计。

-S:显示个别目录的大小时,并不包含其子目录的大小。

-x:以一开始处理时的文件系统为准,若遇上其他不同的文件系统目录则略过。

-X:在<文件>指定目录或文件。

如下所示:

root@jacky-desktop:~# du -a /root      //显示/root目录下每个文件的大小,以K为单位
4.0K  /root/.recently-used.xbel
0    /root/.gconfd/saved_state
4.0K  /root/.gconfd
4.0K  /root/.gconf
8.0K  /root/.bash_history
4.0K  /root/.mozilla
4.0K  /root/a.c
4.0K  /root/.chewing/uhash.dat
8.0K  /root/.chewing
8.0K  /root/.viminfo
4.0K  /root/b.c
4.0K  /root/.synaptic/synaptic.conf
0    /root/.synaptic/lock.non-interactive
4.0K  /root/.synaptic/log/.230901.log
4.0K  /root/.synaptic/log/.030414.log
4.0K  /root/.synaptic/log/.011620.log
16K   /root/.synaptic/log
0    /root/.synaptic/lock
0    /root/.synaptic/options
24K   /root/.synaptic
4.0K  /root/.wapi
4.0K  /root/.profile
4.0K  /root/.rnd
4.0K  /root/.scim/pinyin/pinyin_phrase_index
0    /root/.scim/pinyin/pinyin_phrase_lib
204K  /root/.scim/pinyin/pinyin_table
0    /root/.scim/pinyin/phrase_lib
212K  /root/.scim/pinyin
4.0K  /root/.scim/sys-tables
220K  /root/.scim
4.0K  /root/.dbus/session-bus/a980aa904e30fe8d-0
8.0K  /root/.dbus/session-bus
12K   /root/.dbus
4.0K  /root/.bashrc
4.0K  /root/.gnome2_private
4.0K  /root/.gnome2/accels
4.0K  /root/.gnome2/yelp
4.0K  /root/.gnome2/network-admin-locations
16K   /root/.gnome2
344K  /root  

root@jacky-desktop:~# du -s /root    //仅仅显示/root目录的总大小
344   /root

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
关于《RedHat Linux用户基础》和《RedHat Enterprise Linux系统管理》
这两本书的课后习题书本并没有提供答案,好在红帽官方提供了答案的PDF文件,如果需要的可以去官方下载,地址是http://www.redhat.com.cn/training/academy/,在最下面的红帽学院官方指定教材的下面的两个链接就是。
1242 0
Linux基础命令---mail邮件管理程序
mail mail是一个邮件的管理程序,可以用来发送或者接收邮件。 此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、Fedora。 1、语法 mail [选项] addr 2、参数列表 -a file 将给定的文件发送出去 -b ...
963 0
DNN 360 Sidemenu某些Vertical Menu不显示管理菜单的解决办法
在使用http://www.dnn360.net/的Sidemenu时,有一些Vertical Menu无法显示Admin和Host下的子菜单(因为Admin和Host这两个Tab是设置为unable的。
605 0
嵌入式,linux内存管理
所有段的基地址均为0,由此可以得出,每个段的逻辑地址空间范围为0-4GB。因为每个段的基地址为0,因此,逻辑地址与线性地址保持一致 linux页式管理有四级: 1. 页全局目录 (Page Global Directory):即pgd,是多级页表的抽象最高层。
496 0
Linux Ubuntu实战安装Kafka集群管理器 Kafka Manager
Linux Ubuntu实战安装Kafka集群管理器 Kafka Manager经验分享,详细步骤。
2358 0
Linux 学习笔记-第一阶段-基础入门之Linux 安装与分区03
Overiew安装Linux,首先要有镜像文件,以CentOS为例,可以在官网或者国内某些镜像Server来获取镜像。根据自己的需要可以选择是 Everything 或者minimal iso.这里不写关于安装的细节,对于其中的一些关键步骤做些说明。
1156 0
+关注
异步社区
异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
12049
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载