`

Linux学习笔记之——Linux硬盘分区知识

阅读更多
搭建Linux环境之前,有必要对Linux的硬盘分区知识有所了解。本文总结Linux的硬盘分区知识。

一、关于硬盘种类、物理几何结构及硬盘容量、分区大小计算
      首先了解一下硬盘本身的一些信息。
1、硬盘种类、物理几何结构
      硬盘的种类主要是SCSI 、IDE及目前流行的SATA等;所有一种硬盘的生产都要一定的标准;随着相应的标准的升级,硬盘生产技术也在升级;比如SCSI标准已经历了SCSI-1 、SCSI-2、SCSI-3;其中目前咱们经常在服务器网站看到的Ultral-160就是基于SCSI-3标准的;IDE
遵循的是ATA标准,而目前流行的SATA,是ATA标准的升级版本;IDE是并口设备,而SATA是串口,SATA的发展目的是替换IDE;
      硬盘的物理几何结构是由盘、磁盘表面、柱面、扇区组成,一个张硬盘内部是由几张碟片叠加在一起,这样形成一个柱体面;每个碟片都有上下表面;磁头和磁盘表面接触从而能读取数据;
2、硬盘容量及分区大小的算法
     在Linux下执行fdisk -l命令,将出现类似下面的信息:
Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1         765     6144831    7  HPFS/NTFS
/dev/hda2             766        2805    16386300    c  W95 FAT32 (LBA)
/dev/hda3            2806        9729    55617030    5  Extended
/dev/hda5            2806        3825     8193118+  83  Linux
/dev/hda6            3826        5100    10241406   83  Linux
/dev/hda7            5101        5198      787153+  82  Linux swap / Solaris
/dev/hda8            5199        6657    11719386   83  Linux
/dev/hda9            6658        7751     8787523+  83  Linux
/dev/hda10           7752        9729    15888253+  83  Linux

其中 heads 是磁盘面;sectors 是扇区;cylinders 是柱面;每个扇区大小是 512byte,也就是0.5K;

通过上面的例子,我们发现此硬盘有 255个磁盘面,有63个扇区,有9729个柱面;所以整个硬盘体积换算公式应该是:

磁面个数 x 扇区个数 x 每个扇区的大小512 x  柱面个数 = 硬盘体积 (单位bytes)

所以在本例中磁盘的大小应该计算如下:
255 x 63  x  512 x 9729 =  80023749120 bytes 
提示:由于硬盘生产商和操作系统换算不太相同,硬盘厂家以10进位的办法来换算,而操作系统是以2进位制来换算,所以在换算成M或G 时,不同的算法结果却不相同;所以我们的硬盘有时标出的是80G,在操作系统下看却少几M;
上面例子中,硬盘厂家算法 和 操作系统算数比较:
硬盘厂家: 80023749120 bytes = 80023749.120 K = 80023.749120 M  (向大单位换算,每次除以1000)
操作系统: 80023749120 bytes = 78148192.5 K = 76316.594238281 M  (向大单位换算,每次除以1024)
我们在查看分区大小的时候,能用生产厂家提供的算法来简单推算分区的大小;把小数点向前移动六位就是以G表示的大小;比如 hda1 的大小约为 6.144831G ;

二、关于硬盘分区划分标准及合理分区结构
1、硬盘分区划分标准
      硬盘的分区由主分区、扩展分区和逻辑分区组成;所以我们在对硬盘分区时要遵循这个标准;主分区(包括扩展分区)的最大个数是四个且扩展分区不能包围在主分区之间,主分区(包含扩展分区)的个数由硬盘的主引导记录MBR(Master Boot Recorder)决定的,MBR存放启动管理程式(GRUB,LILO,NTLOARDER等)和分区表记录。其中扩展分区也算一个主分区;扩展分区下能包含更多的逻辑分区;所以主分区(包括扩展分区)范围是从1-4,逻辑分区是从5开始的;比如下面的例子:
   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1         765     6144831    7  HPFS/NTFS
/dev/hda2             766        2805    16386300    c  W95 FAT32 (LBA)
/dev/hda3            2806        9729    55617030    5  Extended
/dev/hda5            2806        3825     8193118+  83  Linux
/dev/hda6            3826        5100    10241406   83  Linux
/dev/hda7            5101        5198      787153+  82  Linux swap / Solaris
/dev/hda8            5199        6657    11719386   83  Linux
/dev/hda9            6658        7751     8787523+  83  Linux
/dev/hda10           7752        9729    15888253+  83  Linux
通过这个例子,我们能看到主分区有3个,从 hda1-hda3 ,扩展分区由 hda5-hda10 ;此硬盘没有主分区4,所以也没有显示主分区hda4 ;但逻辑分区不可能从4开始,因为那是主分区的位置,明白了吧;而且可以看出hda3是扩展分区,逻辑分区就是从该分区划分出来的。

另外,可以将L i n u x 安装在一个或多个类型为"Linux Native"的硬盘分区,通常称为"L i n u x原始分区或主分区"。同时还需要一个类型为"Linux Swap "的分区,也叫做"L i n u x 交换分区",关于Swap,一会详细说明。

PS:Windows与Linux硬盘分区对比:



2、硬盘设备(包括移动存储设备)在Linux或其他类Unix系统的表示;

IDE 硬盘在Linux或其他类Unix系统的一般表示为 hd* ,比如hda、hdb ... ... ,我们能通过 fdisk-l 来查看;有时你可能只有一个硬盘,在操作系统中看到的却是 hdb ,这和硬盘的跳线有关;另外hdc大多表示是光驱设备;如果你有两块硬盘,大多是 hda和hdb。在这方面说的太多也无用,还是以fdisk -l 为准为好;SCSI 和SATA 硬盘在Linux通常也是表示为 sd* ,比如 sda 、sdb ... ...   以fdisk -l 为准;移动存储设备在linux表示为 sd* ,比如 sda 、sdb ... ...  以fdisk -l 为准

3、合理的规划分区

在对硬盘进行分区前,应该先弄清楚计算机担负的工作及硬盘的容量有多大,还要考虑到以下几个问题。
第一点也是最重要的一点,要知道当前安装Linux的开机管理程序(boot loader)是使用LILO(Linux Loader)的版本,因为LILO2.21及早期版本对硬盘大小有限制,如果安装LILO到1023磁道以外即 8G的空间以外,LILO就无法启动。但一些BIOS较老的机器,LINUX仍然无法突破1024磁道的限制,因此这些BIOS无法认出大于1024的硬盘空间。

还需要考虑的问题有:

◆ 是否限制用户可使用的磁盘空间大小?

◆ 在系统中需要安装哪些软件?

◆ 交换分区需要多大?

◆ 系统是否有多个硬盘?

下面,我们按系统工作性质的不同对分区的划分提出了一些建议。当然,根据实际情况,在满足系统工作需求的前提下,下面的分区大小也可以灵活的变动。

基本工作站的分区方案
假设系统的硬盘大小是10G。

   1. /boot 20M  
   2. Swap 128M  
   3. /root 9.85G 

建立一个20M的/boot分区是为了避免将系统内核文件放到1024磁道以外,如果将/boot做为root分区的一个子目录,内核文件就会安装在root分区的任何地方,因为硬盘的大小超过了8G,所以在启动时就有可能出现问题。建议将交换分区的大小设置为内存的两倍,在这里我们假设系统的内存为64M。最后我们将硬盘的剩余空间全部分给了root分区。

Red Hat Linux 6.2 及其早期版本上的基本服务器硬盘分区方案
这里的服务器我们假设只提供几种通用的服务,如WWW服务及FTP服务等几种服务,通过telnet登录的用户数很少。假设其硬盘大小为25G。

   1. /boot 20M  
   2. Swap 128M  
   3. / 10G  
   4. /home 13G  
   5. /var 2G 

在硬盘的最前面创建20M大小的/boot分区,原因同上。交换分区的大小也是128M,因为内存的大小为64M。

/ ,即root分区设为10G这么大是因为其中有一个/usr目录,这个目录可能会占用很多硬盘空间,特别是在安装了X Server,运行图形界面的应用程序的时候。

/home分区是硬盘中最大的分区,这似乎与我们假设系统用户数不多有些矛盾。实际上在/home目录下确实没有几个用户目录,但在Red Hat6.2及更早的版本中,Apache服务器和wu-ftpd FTP服务器被放在了/home/httpd及/home/ftp目录中。所以这个分区这么大也是有原因的。

最后,/var目录独自占用了一个分区,因为系统的所有日志都写到了/var/log目录下,这将会占用很大的硬盘空间。如果系统日志记录得非常详细,整个目录很快会被写满,导致系统工作呆滞。当然,可以通过系统日志后台守护程序syslogd来修改日志配置,避免发生这种情况。

Red Hat 7及以上版本的基本服务器分区方案
这种情况同前一个方案的情况相同,不同的是LINUX版本为Red Hat 7.0及其以上版本。

   1. /boot 20M  
   2. Swap 128M  
   3. / 10G  
   4. /var 15G 

与RedHat6不同,在RedHat7中HTTP服务和FTP服务的目录现在位于 /var/www/ 和/var/ftp/,因此/var分区有15G之大也就不难理解了。

多用户服务器分区方案
在这种服务器系统中,同时有多个用户通过telnet, ssh, rlogin或其方式在远程访问系统。系统中有三个35G的硬盘驱动器,总共有105G的磁盘空间 。系统中用到了RAID 5技术做数据冗余。这种情况下,管理员必须为每个用户分配磁盘空间。对RedHat 6.2及更早的版本,分区如下:

   1. Disk 1:  
   2. /boot 20M  
   3. / 4G  
   4. /var 3GB  
   5. /home 27.98G  
   6. Disk 2:  
   7. swap 20MB  
   8. / 4GB  
   9. /var 3GB  
  10. /home 27.98GB  
  11. Disk 3:  
  12. swap 20MB  
  13. / 4GB  
  14. /var 3GB  
  15. /home 27.98GB 

这样分区的原因:首先,Disk1上的20M /boot分区不属于任何RAID阵列,否则如果你将/boot放至RAID阵列中,以后就不能系统内核升级了。

为了方便管理,在其它两个硬盘中建立了20M的交换分区。这种服务器一般配有1G以上的内存,因此交换分区的大小不成问题。如果增大交换分区,就会减少RAID分区空间,所以20M是足够的。RAID分区的分组如下:

◆ 1-A, 2-A, and 3-A 一起组成一个8G的 RAID 5 驱动器,做为/根目录打开。

◆ 1-B, 2-B, and 3-B 组成 6GB的 RAID 5 驱动器,做为 /var目录。

◆ 1-C, 2-C, and 3-C 组成 55.96GB RAID 5 驱动器, 做为 /home.目录。

这种分配方案总共有55.96G的空间分配给所有用户及Apache和FTP服务,在/var下用6G空间用做记录日志、邮件,这么大的空间是足够的。

如果安装Red Hat7或以上版本,应给/var分区更大的空间,因为它同时还存放着WEB和FTP服务的两个目录。 希望你能学会这些Linux硬盘分区的最佳方案。

三、交换分区与交换文件

当程序需要的内存比电脑上拥有的物理内存还要大的时候,不管是 Windows 也好,Linux 也好,解决办法就是把存不下的东西转移到硬盘上的“虚拟内存”中去,尽管硬盘的速度比内存慢上很多,但是至少容量要大上很多。

另外,操作系统也可以把一些很久不活动的程序转移到虚拟内存中去,留出更多的主内存给需要的程序和磁盘缓冲。

Linux 在安装的时候,一般需要划出一个分区作为 Linux 的“交换分区”,作为虚拟内存内容的保存分区。

swapon -s 这个命令,可以查看当前系统的虚拟内存的情况,这条命令需要 root 来运行。

Filename Type Size Used Priority

/dev/sda3 partition 1004052 0 -1

可以看到常常看到当前的交换分区为 /dev/sda3,第 2 栏的 Type 中显示为 partition,说明这是个交换分区,那么,还有其他的 Type 吗?

当然,其实 Linux 也可以像 Windows 一样,用交换文件来保存虚拟内存的内容,这样即使你忘记划出交换分区也不要紧,而且灵活性上会更大一些。下面我们看看如何创建交换文件。

交换文件和交换分区一样,大小是固定的,比如你想要一个 1G 的交换文件,那么首先要创建一个 1G 的空白文件,我们用 dd 这个工具来完成这个任务:

dd if=/dev/zero of=/swapfile bs=1024 count=1048576

1048576 就是 1G 用 KB 表示的大小,如果你想要其他大小的文件,更改这个数字即可。

上面的命令,会在根目录下创建 swapfile 这个文件,然后,我们需要将它格式化为交换文件的格式:

mkswap /swapfile

然后把挂载上去,就可以立刻应用这个交换文件了:

swapon /swapfile

你可以运行 swapon -s 查看一下:

Filename Type Size Used Priority

/dev/sda3 partition 1004052 0 -1

/swapfile file 1048486 0 -2

多出来了一项,Type 为 file,确实是我们创建的交换文件,系统已经在使用了。

如果你想开机的时候自动挂载这个交换文件,那么还要在 /etc/fstab 中加上下面这一句:

/swapfile none swap sw 0 0

这样就 OK 了。

经常有人问,虚拟内存要设多大才合适,是主内存的几点几倍性能最好云云,其实作为一般用途来讲,1~2G 就到顶了,妄想从虚拟内存上提高系统性能,是不可能的,去买内存条才是王道。

PS:
交换分区的创建与使用

一.创建交换分区

系统内存无法存放更多数据的时候linux会自动使用交换分区,如果分区的时候没有创建交换分区,可以格式化一个分区为交换分区,然后在创建交换分区。

mkswap /dev/hda1 将/dev/hda1格式化为交换分区

mkswap -c /dev/hda1 将/dev/hda1格式化为交换分区,并检查交换分区有无坏块

在文件中创建交换分区:

dd if=/dev/zero of=/tmp/swapfile count=65536 创建一个32M的swapfile文件
chmod 666 /tmp/swapfile 指定/tmp/swapfile文件的权限
mkswap /tmp/swapfile 将/tmp/swapfile格式化成交换分区

二.使用交换分区

swapon /dev/hda1 开启/dev/hda1分区的交换功能

swapon -v /dev/hda1 开启/dev/hda1分区的交换功能,并输出详细信息

swapon -v /tmp/swapfile  开启/tmp/swapfile文件的交换功能,并输出详细信息

swapon -s 查看开启的全部交换分区或交换文件

swapon -v -p 1 /dev/hda1 将/dev/hda1设置成最高优先级,-p选项指定优先级

swapoff -v /tmp/swapfile 关闭交换区

参考网址:
1、http://www.sudu.cn/info/html/edu/20080425/301647.html
2、http://os.51cto.com/art/200912/171215.htm
3、http://linux.ccidnet.com/art/9513/20080108/1334995_1.html
4、http://huanxiangwu.com/277/linux%E4%BA%A4%E6%8D%A2%E5%88%86%E5%8C%BA%E7%9A%84%E5%88%9B%E5%BB%BA%E5%92%8C%E4%BD%BF%E7%94%A8
  • 大小: 87.3 KB
分享到:
评论

相关推荐

    Linux培训教程:从实践中学习Linux-学习笔记.pdf

    - **描述**:"Linux培训教程:从实践中学习Linux-学习笔记.pdf" 重复标题信息,进一步确认了文档性质,即一份侧重实践的Linux学习指南。 #### 标签解析 - **标签**:"Linux培训教" 简略但指向性明确,表明该文档是...

    Linux学习笔记整理

    ### Linux系统安装 #### 安装概述 在文档中提到了使用VMware虚拟机来安装Linux,特别是选择了Red Hat Enterprise Linux (RHEL)的一个分支——CentOS作为安装对象。...了解这些基础知识对于深入学习Linux至关重要。

    Linux学习笔记.pdf(学习B站兄弟连教学视频)

    Linux学习笔记.pdf是学习B站兄弟连教学视频的笔记,涵盖了Linux系统简介、Linux应用领域、Linux学习方法、Linux系统安装、系统分区、系统安装、远程登陆管理工具等内容。 Linux系统简介 Linux是一种开源操作系统,...

    Linux学习笔记(关于linux系统的一点学习心得)

    ### Linux学习笔记——深入探索Linux系统管理与应用 #### 核心知识点概览: 1. **Linux系统安装与配置** 2. **理解Linux文件系统结构** 3. **关键目录及其重要性** 4. **系统安全与用户管理** 5. **服务配置与管理...

    S3C2410+Linux 学习笔记

    ### S3C2410+Linux 学习笔记知识点概览 #### 一、序言及背景介绍 - **作者目的**:作者撰写本文档的主要目的是为了记录个人暑期学习S3C2410+Linux的过程,并希望能够帮助更多开发者解决实际开发中遇到的问题。 - *...

    GRUB 学习笔记 引导LINUX和XP

    ### GRUB 学习笔记 —— 引导 Linux 和 XP #### 1. 启动管理器概述 启动管理器是一段重要的程序,通常被放置于磁盘的开始扇区,比如硬盘上的主引导记录(Master Boot Record, MBR)。当计算机完成自检后,BIOS...

    ubuntu安装笔记——part1

    对于普通用户来说,建议将硬盘分为两个`ext3`分区,一个是根分区`/`,另一个是`/home`目录。这样做的好处在于,即使未来需要重新安装系统,也不会丢失个人数据和配置。 2. **Wubi安装**:这是一种通过Windows环境下...

    Linux扫描式教程

    此外,还介绍了Linux的好处、商标故事、新手推荐使用的Ubuntu系统,以及硬盘分区标记方式等基础知识,帮助用户快速入门。 ### Linux思维转变 教程鼓励用户转变思维方式,摆脱传统的Windows使用习惯,以充分利用...

    从Windows转向Linux教程E3000基础学习.pdf

    #### 写Linux学习笔记 建议读者在学习过程中记录重要的知识点和实践经验,这有助于巩固所学内容并便于日后查阅。 #### Linux文件系统目录结构简介 这部分内容介绍了Linux文件系统的组织结构,解释了如`/bin`, `/...

    linux管理员指南

    ”)但是当IBM公司开始把它的DB2数据库系统移植到Linux上、SGI公司宣布把Linux作为它基本的桌面操作系统、甚至Dell公司都把Red Hat Linux作为它服务器计算机的一个预安装选项的时候——真正的“警报”才响了起来。...

    Linux 操作系统技术合集.pdf

    ### Linux 操作系统技术合集知识点汇总 #### 一、Linux 桌面系统的优化技巧 **1. 选择轻量级的窗口管理器或桌面环境** ...通过学习和实践这些知识点,可以帮助Linux初学者快速入门并逐步掌握这一强大的操作系统。

    自己动手写操作系统(含源代码).part2

    设计与实现》来学习操作系统的读者,本书尤其适合作为你的引路书籍,因为它翔实地介绍了初学者入门时所必需的知识积累,而这些知识在《操作系统:设计与实现》一书中是没有涉及的,笔者本人是把这本书作为写操作系统...

    自己动手写操作系统(含源代码).part1

    设计与实现》来学习操作系统的读者,本书尤其适合作为你的引路书籍,因为它翔实地介绍了初学者入门时所必需的知识积累,而这些知识在《操作系统:设计与实现》一书中是没有涉及的,笔者本人是把这本书作为写操作系统...

    TQ2440 RedHat9 install step by step.pdf

    ### TQ2440 RedHat9 安装步骤详解 ...这对于希望学习Linux系统管理或进行开发测试环境搭建的用户来说是非常有价值的资源。通过遵循这些步骤,不仅可以成功安装Red Hat 9,还能深入了解虚拟化技术的基本原理和应用实践。

Global site tag (gtag.js) - Google Analytics