新闻中心> 文章详情

Linux磁盘存储区管理原理与技巧

2015年11月03日

  在Linux下管理磁盘贮存区算的上一个技巧,很多朋友在这上面常常问我,今天我就把这方面的东西汇总一下,从Linux特有的交换分区的原理开始介绍Linux下如何管理磁盘。南京RHCE认证培训
  
  原理篇
  
  1.交换空间是什么

  
  Linux中的交换空间(Swapspace)在物理内存(RAM)被充满时被使用。如果系统需要更多的内存资源,而物理内存已经充满,内存中不活跃的页就会被移到交换空间去。虽然交换空间可以为带有少量内存的机器提供帮助,但是这种方法不应该被当做是对内存的取代。交换空间位于硬盘驱动器上,它比进入物理内存要慢。南京RHCE认证培训
  
  交换空间可以是一个专用的交换分区(推荐的方法),交换文件,或两者的组合。交换空间的总大小应该相当于你的计算机内存的两倍和32MB这两个值中较大的一个,但是它不能超过2048MB(2GB)。
  
  2.添加交换空间
  
  有时,你会有必要在安装后添加更多的交换空间。例如,你把系统内存从64MB升级到128MB,但是你只有128MB的交换内存。如果你执行的是大量使用内存的操作或运行需要大量内存的程序,把交换区增加到256MB可能会对你有利。
  
  你有两种选择:添加一个交换分区或添加一个交换文件。推荐你添加一个交换分区,不过,若你没有多少空闲空间可用,创建交换分区可能会不大容易。
  
  要添加一个交换分区(假设/dev/hdb2是你想添加的交换分区):
  
  硬盘驱动器不能在被使用(分区不能被挂载,交换分区不能被启用)。要达到这一目的的最简单方法是在救援模式下引导你的系统。当提示挂载文件系统时,选择「跳过」。
  
  如果驱动器不包含任何被使用的分区,你还可以卸载这些分区,使用swapoff命令来关闭硬盘驱动器上的所有交换空间。
  
  技巧篇
  
  使用parted或fdisk来创建交换分区。parted比fdisk使用起来更方便,因此,只有parted在这里会被说明。要使用parted来创建交换分区:
  
  在shell提示下以根用户身份键入命令:parted/dev/hdb。这里的/dev/hdb是你的带有空闲空间的硬盘驱动器的设备名称。
  
  在(parted)提示下,键入print来查看现存的分区和空闲空间的数量。起止值以MB为单位。判定硬盘驱动器上的空闲空间数量,以及你想给新建的交换分区分配的空间数量。
  
  在(parted)提示下,键入mkpartfspart-typelinux-swapstartend,这里的part-type是primary、extended、logical中的一个,start是分区的起始点,end是分区的终止点。南京RHCE认证培训
  
  警告:改变会立即发生,在键入时请谨慎从事。
  
  键入quit来退出parted。
  
  现在,你就可以创建交换分区了,使用mkswap命令来设置交换分区。在shell提示下以根用户身份键入以下命令:
  
  mkswap/dev/hdb2
  
  要立即启用交换分区,键入以下命令:
  
  swapon/dev/hdb2
  
  要在引导时启用,编辑/etc/fstab文件来包括以下行:
  
  /dev/hdb2swapswapdefaults00
  
  在系统下次引导时,它就会启用新建的交换分区。
  
  新添了交换分区并启用它之后,请查看cat/proc/swaps或free命令的输出来确保交换分区已被启用了。
  
  要添加交换文件:
  
  判定新交换文件的大小,将大小乘以1024来判定块的大小。例如,大小的64MB的交换文件的块大小为65536。南京RHCE认证培训
  
  在shell提示下以根用户身份键入以下命令,其中的count等于想要的块大小:
  
  ddif=/dev/zeroof=/swapfilebs=1024count=65536
  
  使用以下命令来设置交换文件:
  
  mkswap/swapfile
  
  要立即启用交换文件而不是在引导时自动启用,使用以下命令:
  
  swapon/swapfile
  
  要在引导时启用,编辑/etc/fstab文件来包含以下行:
  
  /swapfileswapswapdefaults00
  
  系统下次引导时,它就会启用新建的交换文件。
  
  新添了交换分区并启用它之后,请查看cat/proc/swaps或free命令的输出来确保交换分区已被启用了。
  
  3.删除交换空间
  
  要删除交换分区:
  
  硬盘驱动器不能在被使用(分区不能被挂载,交换分区不能被启用)。要达到这一目的的最简单方法是在救援模式下引导你的系统。
  
  如果驱动器不包含任何被使用的分区,你还可以卸载这些分区,使用swapoff命令来关闭硬盘驱动器上的所有交换空间。
  
  在shell提示下以根用户身份键入以下命令来确定交换分区已被禁用(这里的/dev/hdb2是交换分区):
  
  swapoff/dev/hdb2
  
  从/etc/fstab文件中删除这个项目。
  
  使用parted或fdisk来删除分区。只有parted在这里会被说明。要使用parted来删除分区:
  
  在shell提示下以根用户身份键入命令:parted/dev/hdb。这里的/dev/hdb是你的带有交换空间的硬盘驱动器的设备名称。南京RHCE认证培训
  
  在(parted)提示下,键入print来查看现存的分区并判定你想删除的交换分区的次要号码。
  
  在(parted)提示下,键入rmMINOR,这里的MINOR是你想删除的分区的次要号码。
  
  警告:改变会立即发生,你必须键入正确的次要号码。
  
  键入quit来退出parted。
  
  要删除交换文件:
  
  在shell提示下以根用户身份执行以下命令来禁用交换文件(这里的/swapfile是交换文件):
  
  swapoff/swapfile
  
  从/etc/fstab中删除该项目。
  
  删除实际文件:
  
  rm/swapfile
  
  4.移动交换空间
  
  要把交换空间从某处移到另一处,请首先遵循删除交换空间的说明,再遵循添加交换空间的说明。
  
  在你安装了RedHatLinux系统后,你可能想查看现存的分区表,改变分区的大小,删除分区,或从空闲空间或附加的硬盘驱动器上添加分区。parted工具会允许你执行这些任务。本章讨论如何使用parted命令来执行文件系统任务。此外,你还可以使用fdisk来执行多数此类任务(除重新划分分区以外)。要获得fdisk的更多信息,请阅读其说明书页(man)或信息页(info)。
  
  你必须安装了parted软件包才能使用parted工具。要启动parted,在shell提示下以根用户身份键入命令parted/dev/hdb
  
  这里的/dev/hdb是你想配置的设备名称。你会看到一个(parted)提示。键入help来查看可用命令的列表。
  
  如果你想创建、删除分区或重新划分分区大小,分区所在设备不能正在被使用(分区不能被挂载,并且交换空间不能被启用)。达到这个目的的最简单方法是在救援模式中引导系统。南京RHCE认证培训
  
  如果驱动器不包含任何正在被使用的分区,你可以使用umount命令来卸载分区,使用swapoff命令来关闭硬盘驱动器上的交换空间。
  
  命令篇
  
  下表包含一列最常用的parted命令。
  
  print
  
  Atablesimilartothefollowingwillappear:
  
  Diskgeometryfor/dev/hda:0.000-9765.492megabytes
  
  Disklabeltype:msdos
  
  MinorStartEndTypeFilesystemFlags
  
  10.031101.975primaryext3boot
  
  2101.975611.850primarylinux-swap
  
  3611.851760.891primaryext3
  
  4760.8919758.232extendedlba
  
  5760.9229758.232logicalext3
  
  第一行显示了磁盘的大小;第二行显示了磁盘标签类型;剩余的输出显示了分区表。
  
  在分区表中,Minor(次要)标签是分区号码。例如,次要号码为1的分区和/dev/hda1相对。
  
  Start(开始)和End(结束)值以MB为单位。
  
  Type(类型)是primary、extended、logical中的一个。
  
  Filesystem(文件系统)是文件系统的类型,它可以是ext2、ext3、FAT、hfs、jfs、linux-swap、ntfs、reiserfs、hp-ufs、sun-ufs或xfs之一。
  
  Flags(标志)列列出了分区被设置的标准。可用的标志有:boot、root、swap、hidden、raid、lvm或lba。
  
  窍门
  
  要不重新启动parted来选择不同的设备,使用select命令,再紧跟设备名,如/dev/hdb。然后,你便可以查看或配置它的分区表。南京红帽认证培训
,来江苏万和计算机培训中心

上一篇下一篇
按时发顺丰

技术交流群

Java大数据交流群560819979    加入
Python技术交流群595083299    加入
Oracle技术交流群595119011    加入
Web前端技术交流群604697610    加入
Huawei技术交流群482919361    加入
Redhat技术交流群587875348    加入
UI设计技术交流群511649801    加入
Cisco技术交流群596886705    加入
IT运维技术交流群605888381    加入