Linux磁盘文件系统管理命令

 

  1. fdisk命令

fdisk 是用来查、创建磁盘分区的。RHEL和Fedora在安装的时候,都提供了优秀的分区管理工具,但安装后,往往需要在命令行下面修改分区或创建分区。下面,按照分区的一般步骤讲解fdisk的用法。

  1. 查看系统当前分区信息
  • fdisk -l

    //第一块信息

    Disk /dev/sda: 19.3 GB, 19327352832 bytes

    255 heads, 63 sectors/track, 2349 cylinders

    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot Start End Blocks Id System

    /dev/sda1 * 1 2218 17816053+ 83 Linux

    /dev/sda2 2219 2349 1052257+ 82 Linux swap / Solaris

    //第二块信息

    Disk /dev/sdb: 8589 MB, 8589934592 bytes

    255 heads, 63 sectors/track, 1044 cylinders

    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot Start End Blocks Id System

    /dev/sdb1 1 123 987966 b W95 FAT32

    从上面的显示可以看出,当前系统有两块,分别用设备号/dev/sda和/dev/sdb表示(如果是IDE硬盘,就是/dev/had、/dev/hdb等),/dev/sda有两个分区,/dev/sdb有一个FAT32分区。其中,/dev/sda1是引导分区。

    要继续实验分区,就必须有空余的空间或者删除原有分区。建议读者最好使用虚拟机为该系统添加一个虚拟的。对于实际的物理系统,在分区前必须做好备份,并确保有分区的必要。这里,我们首先删除/dev/sdb1分区,然后创建一个新的分区。

  1. 对某个磁盘设备进行分区
  • fdisk /dev/sdb                            ///dev/sdb分区

    The number of cylinders for this disk is set to 1044.

    There is nothing wrong with that, but this is larger than 1024,

    and could in certain setups cause problems with:

    1) software that runs at boot time (e.g., old versions of LILO)

    2) booting and partitioning software from other OSs

    (e.g., DOS FDISK, OS/2 FDISK)

    注意:fdisk后要指定的设备必须是硬盘设备,而不能是分区!

  1. 显示可用的分区命令

进入分区环境之后,先是的内容如上面(2)的现实内,输入”m”可以列出可用的命令,如下所示,粗体表示常用命令:

Command (m for help): m

Command action

a toggle a bootable flag                    //标记为引导分区

b edit bsd disklabel                        //修改bsd卷标

c toggle the dos compatibility flag            //标记dos兼容的标记

d delete a partition                        //删除分区

l list known partition types                //列出支持的分区类型

m print this menu                        //显示命令菜单

n add a new partition                        //创建分区

o create a new empty DOS partition table        //创建新的DOS分区表

p print the partition table                    //显示分区信息

q quit without saving changes                //放弃分区,退出

s create a new empty Sun disklabel            //创建SUN分区

t change a partition's system id            //修改分区类型

u change display/entry units                //显示/修改快单元

v verify the partition table                    //校验分区表

w write table to disk and exit                //保存分区并退出

x extra functionality (experts only)            //附加功能(仅供高级用户)

  1. 删除现有分区

要删除一个分区,输入d,然后选择要删除的分区序号,直接回车即可删除。

Command (m for help): d

Selected partition 1                                    //指定要删除的分区

  1. 列出当前分区表信息

输入”p”,可以查看当前的分区信息,如下所示:

Command (m for help): p

Disk /dev/sdb: 8589 MB, 8589934592 bytes

255 heads, 63 sectors/track, 1044 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

可以看出,当前已经没有分区了,下面就来创建一个新的分区。

  1. 创建新分区

Command (m for help): n                        //输入n,创建新分区

Command action

e extended

p primary partition (1-4)p                    //p表示创建主分区

Partition number (1-4): 1                        //1表示第一个分区

First cylinder (1-1044, default 1):                     //分区的柱面开始位置,默认即可

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-1044, default 1044): +1000M //分区大小

注意:分区大小可以用柱面设置,也可以用B、M、K为单位指定,如上面就表示1000MB大小。

  1. 再次显示分区表信息

创建了一个新的分区之后,最要使用”p”命令,再次查看分区是否成功,如下:

Command (m for help): p

Disk /dev/sdb: 8589 MB, 8589934592 bytes

255 heads, 63 sectors/track, 1044 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sdb1 1 123 987966 83 Linux

可以看出,已经成功创建了一个分区,分区设备为/dev/sdb1,分区类型为Linux的Ext2。分区的大小为987966块(每个块1024字节)。

  1. 修改分区类型

默认情况下,fdisk创建的分区类型是ext2,有时候就要修改,如创建交换分区类型必须是swap,创建dos分区,分区类型就是FAT。下面就是将分区修改为FAT32:

Command (m for help): t                        //修改分区命令

Selected partition 1                                //选择要修改的分区

Hex code (type L to list codes): L                    //列出支持的分区类型信息

……                                        //类型信息(忽略)

Hex code (type L to list codes): b                    //选择分区类型

Changed system type of partition 1 to b (W95 FAT32)

  1. 将分区设置为引导分区

计算机在启动的时候根据CMOS中的参数设置,按照顺序查找第一个可引导的设备,一个设备要能被引导,则这个设备中的主分区必须至少有一个分区被设置为激活状态,即所谓的可引导分区,这样,BIOS中的程序首先找到引导盘,有MBR中的引导程序(如GRUB)找到引导分区中的,并加载内核,完成启动。

Command (m for help): a                        //设置引导分区命令

Partition number (1-4): 1                        //要设置的分区

//再次查看分区信息

Command (m for help): p

Disk /dev/sdb: 8589 MB, 8589934592 bytes

255 heads, 63 sectors/track, 1044 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sdb1 * 1 123 987966 b W95 FAT32

在上面的显示中,Boot下的”*”表示/dev/sdb1是可引导分区。

注意:可引导分区只能设置在主分区上,而且多个主分区都可以设置为引导分区,至于到底启动哪个分区中可能存在的,主要是由引导程序(如GRUB)来决定。

  1. 保存分区并退出

Command (m for help): w                                //保存并退出命令

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x

partitions, please see the fdisk manual page for additional

information.

Syncing disks.

至此,整个分区就完成了,但需要读者注意,这个新创建的分区,当前依然无法存放文件,必须格式化后才可以使用。关于格式化的命令请参考后面的mkfs命令。

  1. df命令

格式df [选项] [FILE]..

说明:显示文件系统的状况,或是看所有文件系统的状况(默认值)。

参数:

  • -a:包含所有的具有0Blocks的文件系统
  • -h:使用人类可读的格式(默认值是不加这个选项的…)
  • -i:列出inode信息,不列出已使用block
  • -k:就像是–block-size=1024
  • -m:就像–block-size=1048576
  1. 显示系统中分区使用情况
  • df

    Filesystem 1K-blocks Used Available Use% Mounted on

    /dev/sda1 17257776 4878504 11488472 30% /

    tmpfs 257644 0 257644 0% /dev/shm

    .host:/ 36089988 26275956 9814032 73% /mnt/hgfs

  1. 用人性化方式查看分区使用情况
  • df -h

    Filesystem Size Used Avail Use% Mounted on

    /dev/sda1 17G 4.7G 11G 30% /

    tmpfs 252M 0 252M 0% /dev/shm

    .host:/ 35G 26G 9.4G 73% /mnt/hgfsdd

  1. dd命令

格式:dd [option]

说明:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。

参数:

  • if =输入文件(或设备名称):指定操作的输入
  • of =输出文件(或设备名称):指定操作的输出
  • ibs = bytes:依次读取bytes字节,即读入缓冲区的字节数
  • skip = blocks:跳过读入缓冲区开头的ibs*blocks
  • obs=bytes:依次写入bytes字节,即写入缓冲区的字节数
  • bs=bytes:同时设置读/写缓冲区的字节数(等于设置ibsobs
  • cbs=byte:依次转换bytes字节
  • count=blocks:只拷贝输入的blocks
  • conv=ASCII:把EBCDIC码转换为ASCIl
  • conv=ebcdic:把ASCIl码转换为EBCDIC
  • conv=ibm:把ASCIl码转换为alternateEBCDIC
  • conv=ucase:把字母由小写转换为大写
  • conv=lcase:把字母由大写转换为小写
  • conv=notrunc:不截断输出文件
  • conv=swab:交换每一对输入字节
  • conv=noerror:出错时不停止处理
  • conv=sync:把每个输入记录的大小都调到ibs的大小(用NUL填充)
  1. 把一张软盘的内容拷贝到另一张软盘上
  • dd if =/dev/fd0 of = /tmp/tmpfile
  • dd if = /tmp/tmpfile of =/dev/fd0
  • rm /tmp/tmpfile
  1. 把net.i这个文件写入软盘中,并设定读/写缓冲区的数目
  • dd if =net.i of = /dev/fd0 bs =16384
  1. 将文件sfile拷贝到文件dfile中
  • dd if=sfile of=dfile
  1. 备份MBR到当前目录的MBR.bak文件中
  • dd if=/dev/hda of=MBR.bak count=1 bs=512
  1. 恢复上面备份的MBR(慎重操作!)
  • dd if= MBR.bak of=/dev/hda count=1 bs=512
  1. e2fsck命令

格式e2fsck [options] device

说明:检查使用Linux ext2文件系统的分区是否正常工作。

参数:

  • device:预备检查的硬盘分区,例如:/dev/sda1
  • -a:若有便自动修复,等同-p的功能
  • -b:设定存放superblock的位置
  • -B:设定单位block的大小
  • -c:检查该分区是否有坏轨
  • -C file:将检查的结果存到file中以便查看
  • -d:显示e2fsckdebug结果
  • -f:强制检查
  • -F:在开始检查前,将devicebuffercache清空,避免有错误发生
  • -l bad_blocks_file:将有坏轨的block内容加到bad_blocks_file里面
  • -L bad_blocks_file:设定坏轨的block内容存到bad_blocks_file里面,若无该文件则自动产生
  • -n:将文件系统以[唯读]方式打开
  • -p:对partition做检查,若有便自动修复
  • -v:详细显示模式
  • -V:显示出目前e2fsck的版本
  • -y:预先设定所有检查时的均回答[]
  1. 检查/dev/hda5是否正常,如果有异常便自动修复
  • e2fsck -a -y /dev/hda5

    注意:大部份使用e2fsck来检查硬盘分区时,通常都是情况特殊,因此最好先将该分区卸载(umount),然后再执行e2fsck来做检查,若是一定要检查/,则请进入单用户模式再执行。

  1. fsck命令

格式fsck [options] filesys …

说明:检查与修复文件系统,可以同时检查一个或多个文件系统。

参数:

  • filesysdevice名称(eg./dev/sda1)mount(eg.//usr)
  • -t:给定文件系统的格式,若在/etc/fstab中已有定义或kernel本身已支持的则不需加上此参数
  • -s:依次执行fsck指令来检查
  • -A:对/etc/fstab中所有列出来的partition做检查
  • -C:显示完整的检查进度
  • -d:显示e2fsckdebug结果
  • -p:同时有-A条件时,同时有多个fsck检查一起执行
  • -R:同时有-A条件时,省略/不检查
  • -V:详细显示模式
  • -a:如果检查有错则自动修复
  • -r:如果检查有错则由用户回答是否修复
  1. 检查msdos文件系统的/dev/hda5是否正常,如果有异常便自动修复
  • fsck -t msdos -a /dev/hda5
  1. mkfs命令

格式mkfs [-V] [-tfstype] [fs-options] filesys [blocks]

说明:在特定的分区上建立文件系统。

参数:

  • filesys:要设置的分区,例如:/dev/sda1
  • -V:详细显示模式
  • -t:给定文件系统的格式,Linux的默认值为ext2
  • -c:在制做文件系统前,检查该分区是否有坏轨
  • -l bad_blocks_file:将有坏轨的block内容加到bad_blocks_file里面
  • block:给定块的大小
  1. 在/dev/hda5上建一个msdos的文件系统
  • mkfs -V -t msdos -c /dev/hda5
  1. 格式化/dev/hda1分区,该分区是ext2文件系统
  • mkfs -t ext2 /dev/hda1
  1. mount命令

格式mount [-hV]                                //查看挂载信息

mount -a [-fFnrsvwL][-t vfstype]            //挂载所有fstab中的设备

mount [-fnrsvw][-o options[,…]]device|dir    //挂载//fstab中某设备

mount [-fnrsvw][-t vfstype][-o options] device dir

说明:将文件系统挂在目录的某个位置之上。这个命令可以被用来挂上任何的文件系统,甚至可以用-o loop选项将某个一般的文件当成硬盘分区挂载。这对于ramdisk或是ISO9660的镜像文件之解读非常实用。

参数:

  • -V:显示程序版本
  • -h:显示辅助信息
  • -v:显示较信息,通常和-f用来除错
  • -a:将/etc/fstab中定义的所有文件系统挂上
  • -F:通常和-a一起使用,为每个mount的动作产生一个负责执行的进程。如在系统需要挂上大量NFS文件系统时,这样可以加快挂上的动作
  • -f:通常做除错用,会使mount并不执行实际挂上的动作,而是模拟整个挂上的过程,通常会和-v一起使用
  • -nmount挂载后会在/etc/mtab中写入一行记录,该参数可取消写入
  • -r:等于-o ro选项
  • -w:等于-o rw选项
  • -L:将含有特定标签的硬盘分区挂上

常用的挂载选项(-o后的参数):

  • -o async:打开非同步模式,所有的文件读写动作都会用非同步模式执行
  • -o sync:在同步模式下执行
  • -o auto:打开自动挂上模式
  • -o noauto:关闭自动挂载模式
  • -o defaults:使用预设的选项rwsuiddevexecautonouserasync
  • -o exec:允许执行可执行文件
  • -o noexec:允许执行文件被执行
  • -o suid:允许设置SUID或者GUID
  • -o nosuid:不允许设置SUIDGUID
  • -o user:允许普通用户挂载或卸载文件系统
  • -o nouser:不允普通用户挂载或卸载文件系统
  • -o remount:将一个已经挂下的文件系统重新挂上
  • -o ro:用只读方式挂载
  • -o rw:用可读写模式挂载
  • -o loop:使用loop模式用来将一个文件当成硬盘分区挂载,常用来挂载镜像文件(.iso)
  1. 将/dev/hda1挂在/mnt之下:
  • mount /dev/hda1 /mnt
  1. 将/dev/hda1用只读模式挂在/mnt之下:
  • mount -o ro /dev/hda1 /mnt
  1. 将/tmp/image.iso这个光盘镜像文件挂载到/mnt/cdrom之下,并支持中文
  • mount -o loop,codepage=936,isocharset=cp936 /tmp/image.iso /mnt/cdrom

    用途:清除屏幕用。

声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 智乐兔
转载请注明:转自《Linux磁盘文件系统管理命令
本文地址:https://www.zhiletu.com/archives-53.html
关注公众号:智乐兔

赞赏

wechat pay微信赞赏alipay pay支付宝赞赏

上一篇
下一篇

相关文章

在线留言

你必须 登录后 才能留言!

在线客服
在线客服 X

售前: 点击这里给我发消息
售后: 点击这里给我发消息

智乐兔官微