Linux磁盘管理(一)

系统管理员的一项重要工作就是管理磁盘。磁盘作为存储数据的重要载体,在如今日渐庞大的软件资源面前显得格外重要。随着硬件成本的逐年下降,磁盘容量越来越大,但同时磁盘管理的难度也越来越高。良好的磁盘管理可以进一步节省存储空间、提高系统效能和节约成本。磁盘管理通常涉及磁盘的分区、格式化和空间管理等内容。
常用的磁盘管理工具
磁盘管理工具是系统管理员需要经常使用的软件,其是完成磁盘管理的重要手段。常用的磁盘管理工具包括:fdisk、Partition Magic、parted、mkfs和e2fsck。
Linux磁盘分区
由于硬盘容量动辄几十GB,为了方便管理,通常将硬盘分成若干分区。对于普通用户而言,每个分区都可以视为独立的磁盘。硬盘的分区方案记录在“磁盘分区表”中。通常磁盘分区表由4个部分组成,每个部分定义一个分区的信息。因此,原始概念中一个硬盘最多只能建立4个分区,称为“主分区”。当系统中存在多个主分区时,必须指定一个主分区为“活动分区”。活动分区上的操作系统在系统引导时将被自动引导。
由于硬盘容量越来越大,仅仅4个分区已无法满足用户的需要,引入了“扩展分区”的概念。扩展分区由扩展磁盘分区表维护,可以在扩展分区内划分若干更小的称为“逻辑分区”的分区。逻辑分区由于没有数量限制,如果删除了扩展分区,则其下面的所有逻辑分区都将被删除。扩展分区必须建立在主分区上,即扩展分区有必须属于4个主分区之一。
在安装Linux到硬盘之前,必须先建立硬盘分区。理论上,在硬盘空间足够时,可以建立任意数量的分区(挂载点),但除非在极为特殊的情况下,否则建议至少建立一下3个分区。
swap分区:swap分区的系统标识为82.swap分区实际上是虚拟内存的一部分。所谓的虚拟内存(Virtual Memory)技术是指在物理内存无法提供足够的处理空间时,多余的数据就会暂时写入硬盘指定的分区中,待物理内存可处理时再从该分区中将数据移入物理内存。虚拟内存技术突破了物理内存的限制,使程序可以使用大于实际物理内存的空间。一般情况下,swap分区应该大于或等于物理内存,不应小于32MB。建议物理内存在2GB以下时,swap分区设为物理内存的2~2.5倍。如果物理内存在2GB以上,则swap分区一般设为与物理内存大小相同即可。
boot分区:boot分区中存放着操作系统的内核。Red Hat的系统内核文件为/boot/vmlinuz-2.6.18-8.el5xen,建议使用32MB以上的空间。
根分区(/):根分区是整个操作系统的根目录,几乎所有的文件都位于此目录之下,因此他的容量越大越好,建议将硬盘中剩余的空间都提供给根分区使用。
Linux常用分区方案:
根分区、swap分区 适用于磁盘空间有限的计算机
根分区、/boot分区、swap分区 较大磁盘空间的典型配置,也是RHEL的典型配置
根分区、/boot分区、/var分区、swap分区 可以避免日志文件大小失控
根分区、/boot分区、/home分区、swap分区 用于一台为许多用户提供服务的计算机,可以帮助控制用户占用的空间量
fdisk磁盘分区工具
fdisk是一种强大的磁盘分区工具,其不仅适合于Linux系统,在windows及DOS中也有广泛使用。
其中常用的设备名包括下面几种:
/dev/hda:第一块IDE硬盘
/dev/hdb:第二块IDE硬盘
/dev/sda:第一块SCSI硬盘
/dev/sdb:第二块SCSI硬盘
设备名的命名规则如下:对于IDE设备,设备名为/dev/hd[a-h];对于SCSI设备,设备名为/dev/sd[a-h];对于ESDI设备,设备名为/dev/ed[a-d];XT设备则使用/dev/xd[ab]。其中的设备是指整个物理磁盘设备。fdisk命令常用选项
-b 定义磁盘扇区的大小,有效值包括512、1024、2048。磁盘扇区大小是系统内核已知的参数,设置该选项仅仅是对以前内核版本的支持,以及满足重载内核的需要
-C 定义磁盘柱面数
-H 定义磁盘分区的磁头数,该值专指分区中使用的磁头数目。有效值位255或16
-S 定义磁盘分区中每磁道包含的扇区数目,有效值为63
-l 列出指定的分区表并退出。如果没有指定设备,则使用/proc/partitions文件提供的信息
-u 在列出分区表时,以扇区为单位显示而不是以柱面为单位
-s 在标准输出设备中列出指定分区的大小,默认以block为单位
-v 显示版本信息
例:
使用-l命令显示当前设备的分区并退出:

[root@Zather ~]# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00070815

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      102400   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              13         274     2097152   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             274        2611    18770944   83  Linux

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

使用-s命令可以显示指定分区的大小:

[root@Zather ~]# fdisk -s /dev/sda
20971520

进入fdisk交互模式
使用命令“fdisk 设备名”,系统会进入分区管理交互模式。用户可以通过输入指令,执行相应的磁盘管理操作。
fdisk交互模式操作指令:
a 调整硬盘的启动分区
d 删除一个硬盘分区
l 列出所有支持的分区类型,其中83是Linux分区,82是swap分区
m 列出所有命令
n 创建一个新的分区
p 列出硬盘分区表
q 退出fdisk,不保存更改
t 更改分区ID
u 切换所显示的分区大小的单位
w 把设置写入硬盘分区表,然后退出
v 对当前的分区表进行验证
b 编辑bsd磁盘标签
c 设置DOS兼容标志
o 创建一个新的DOS分区表
s 创建一个空的Sun磁盘标签
例:
对/dev/sda设备使用fdisk命令:

[root@Zather ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help):

按p键:

Command (m for help): p

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00070815

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      102400   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              13         274     2097152   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             274        2611    18770944   83  Linux

可以看到,当前/dev/sda设备容量为21.5GB,包括225个磁头,每个磁道63扇区,磁盘柱面总共2610。列表以柱面为单位进行显示,其中1柱面等于8225280字节。
通过 fdisk 的 d 指令来删除一个分区;

Command (m for help): p 注:列出分区情况;

Disk /dev/sda: 1035 MB, 1035730944 bytes

256 heads, 63 sectors/track, 125 cylinders

Units = cylinders of 16128 * 512 = 8257536 bytes

Device Boot Start End Blocks Id System

/dev/sda1 1 25 201568+ c W95 FAT32 (LBA)

/dev/sda2 26 125 806400 5 Extended

/dev/sda5 26 50 201568+ 83 Linux

/dev/sda6 51 76 200781 83 Linux

Command (m for help): d 注:执行删除分区指定;

Partition number (1-6): 6 注:我想删除 sda6 ,就在这里输入 6 ;

Command (m for help): p 注:再查看一下硬盘分区情况,看是否删除了?

Disk /dev/sda: 1035 MB, 1035730944 bytes

256 heads, 63 sectors/track, 125 cylinders

Units = cylinders of 16128 * 512 = 8257536 bytes

Device Boot Start End Blocks Id System

/dev/sda1 1 25 201568+ c W95 FAT32 (LBA)

/dev/sda2 26 125 806400 5 Extended

/dev/sda5 26 50 201568+ 83 Linux

Command (m for help):

警告:删除分区时要小心,请看好分区的序号,如果您删除了扩展分区,扩展分区之下的逻

辑分区都会删除;所以操作时一定要小心;如果知道自己操作错了,请不要惊慌,用 q 不保

存退出;切记切记!!!!在分区操作错了之时,千万不要输入 w 保存退出!!!
使用n指令创建一个新分区:

[root@Zather ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended  //创建扩展分区
   p   primary partition (1-4)//创建主分区

实例:
对一个15G硬盘划分磁盘分区。其中,主分区两个:1个200M;一个10G。其余分配给扩展分区。扩展分区划分为2个逻辑分区:一个1GB;一个3GB。所有分区默认类型均为83.
1.显示当前设备分区表:

[root@Zather ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xc6423084.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/sdb: 16.1 GB, 16106127360 bytes
255 heads, 63 sectors/track, 1958 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc6423084

   Device Boot      Start         End      Blocks   Id  System

当前设备的分区表为空
2.创建200M的主分区,可以用来作为/boot分区:

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1958, default 1)://起始柱面默认
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1958, default 1958): +200M//此处可输入柱面号//也可以输入空间大小
Command (m for help): P
Disk /dev/sdb: 16.1 GB, 16106127360 bytes
255 heads, 63 sectors/track, 1958 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xaf45e226

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          26      208813+  83  Linux

3.10G空间同上:

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (14-1958, default 14):
Using default value 14
Last cylinder, +cylinders or +size{K,M,G} (1-1958, default 1958): +10000M

Command (m for help): P

Disk /dev/sdb: 16.1 GB, 16106127360 bytes
255 heads, 63 sectors/track, 1958 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xaf45e226

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          26      208813+  83  Linux
/dev/sdb2               14        622      1000000+ 83  Linux

4.创建扩展分区并创建逻辑分区:

Command (m for help): n # 对所有磁盘剩余空间创建编号为2的扩展分区
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (63-522, default 63):
Using default value 63
Last cylinder or +size or +sizeM or +sizeK (63-522, default 522):
Using default value 522
Command (m for help): n # 创建大小为400M的逻辑分区
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (63-522, default 63):
Using default value 63
Last cylinder or +size or +sizeM or +sizeK (63-522, default 522): +400M
Command (m for help): n # 创建大小为256M的逻辑分区
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (113-522, default 113):
Using default value 113
Last cylinder or +size or +sizeM or +sizeK (113-522, default 522): +256M

df命令
linux中df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
  语法:df [选项]
  说明:linux中df命令可显示所有文件系统对i节点和磁盘块的使用情况。
  该命令各个选项的含义如下:
  -a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。
  -k 以k字节为单位显示。
  -i 显示i节点信息,而不是磁盘块。
  -t 显示各指定类型的文件系统的磁盘空间使用情况。
  -x 列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。
  -T 显示文件系统类型。
  功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
  例1:列出各文件系统的磁盘空间使用情况。
   df  Filesystem1KblocksUsedAvailableUse  /dev/hda2136158712464064482397/  linuxdf12102434342使使Use  2i使 df -ia
  Filesystem Inodes IUsed IFree Iused% Mounted on
  /dev/ hda2 352256 75043 277213 21% /
  none 0 0 0 0% /proc
  localhost:(pid221) 0 0 0 0% /net
  例3:列出文件系统的类型。
  $ df -T
  Filesystem Type 1K-blocks Used Available use% Mounted on
  /dev/hda2 ext2 1361587 1246405 44824 97% /
  本例中的文件系统是ext2类型的
  [root@rac1 ~]# df
  Filesystem 1K-blocks Used Available Use% Mounted on
  /dev/sda1 3020140 2333952 532772 82% /
  none 213320 0 213320 0% /dev/shm
  /dev/sda2 4633108 1818088 2579668 42% /u01
  /dev/sde1 524272 81104 443168 16% /ocfs
  该条命令显示了服务器上所有分区的使用情况。它还包括了几个有用的参数来帮助格式化输出:
  -a显示系统所有的分区,在平常默认情况下 不显示0块的分区
  [root@rac1 ~]# df -a
  Filesystem 1K-blocks Used Available Use% Mounted on
  /dev/sda1 3020140 2333952 532772 82% /
  none 0 0 0 - /proc
  none 0 0 0 - /sys
  none 0 0 0 - /dev/pts
  none 213320 0 213320 0% /dev/shm
  /dev/sda2 4633108 1818096 2579660 42% /u01
  none 0 0 0 - /proc/sys/fs/binfmt_misc
  sunrpc 0 0 0 - /var/lib/nfs/rpc_pipefs
  configfs 0 0 0 - /config
  ocfs2_dlmfs 0 0 0 - /dlm
  /dev/sde1 524272 81104 443168 16% /ocfs
  oracleasmfs 0 0 0 - /dev/oracleasm
  -h更具目前磁盘空间和使用情况 以更易读的方式显示
  [root@rac1 ~]# df -h
  Filesystem Size Used Avail Use% Mounted on
  /dev/sda1 2.9G 2.3G 521M 82% /
  none 209M 0 209M 0% /dev/shm
  /dev/sda2 4.5G 1.8G 2.5G 42% /u01
  /dev/sde1 512M 80M 433M 16% /ocfs
  -H根上面的-h参数相同,不过在根式化的时候,采用1000而不是1024进行容量转换
  [root@rac1 ~]# df -H
  Filesystem Size Used Avail Use% Mounted on
  /dev/sda1 3.1G 2.4G 546M 82% /
  none 219M 0 219M 0% /dev/shm
  /dev/sda2 4.8G 1.9G 2.7G 42% /u01
  /dev/sde1 537M 84M 454M 16% /ocfs
  -k以单位显示磁盘的使用情况
  [root@rac1 ~]# df -k
  Filesystem 1K-blocks Used Available Use% Mounted on
  /dev/sda1 3020140 2333952 532772 82% /
  none 213320 0 213320 0% /dev/shm
  /dev/sda2 4633108 1818152 2579604 42% /u01
  /dev/sde1 524272 81104 443168 16% /ocfs
  -l显示本地的分区的磁盘空间使用率,如果服务器nfs了远程服务器的磁盘,那么在df上加上-l后系统显示的是过滤nsf驱动器后的结果
  -i显示inode的使用情况。linux采用了类似指针的方式管理磁盘空间影射.这也是一个比较关键应用
  

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值