5.Linux命令(磁盘维护)

Linux命令(磁盘维护)

1.badblocks

​ badblocks命令用于检查磁盘装置中损坏的区块。

执行指令时须指定所要检查的磁盘装置,及此装置的磁盘区块数。

语法

badblocks [-svw][-b <区块大小>][-o <输出文件>][磁盘装置][磁盘区块数][启始区块]

参数说明

  • -b<区块大小> 指定磁盘的区块大小,单位为字节。
  • -o<输出文件> 将检查的结果写入指定的输出文件。
  • -s 在检查时显示进度。
  • -v 执行时显示详细的信息。
  • -w 在检查时,执行写入测试。
  • [磁盘装置] 指定要检查的磁盘装置。
  • [磁盘区块数] 指定磁盘装置的区块总数。
  • [启始区块] 指定要从哪个区块开始检查。

实例

查看系统当前硬盘信息。

# fdisk -l

例如,显示信息如下:

Disk /dev/sda: 298.9 GB, 298999349248 bytes
255 heads, 63 sectors/track, 36351 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         262     2104483+  82  Linux swap / Solaris
/dev/sda2   *         263       32898   262148670   83  Linux
/dev/sda3           32899       36351    27736222+  83  Linux

Disk /dev/sdb: 42.9 GB, 42949672960 bytes
64 heads, 32 sectors/track, 40960 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

通过命令扫描硬盘。

# badblocks -s -v /dev/sdnx

其中n表示硬盘设备名,x表示硬盘对应的分区号。例如需要检查”/dev/sda2”,执行命令如下:

# badblocks -s -v /dev/sda2

Checking blocks 0 to 30681000
Checking for bad blocks (read-only test): 306809600674112/ 306810000000
30680964
30680965
30680966
30680967
30680968
30680969
30680970
30680971
30680972
30680973
...
done
Pass completed, 37 bad blocks found.其中,“37 bad blocks found”表示硬盘存在37个坏块。

2.cfdisk

​ cfdisk命令用于磁盘分区。

cfdisk是用来磁盘分区的程序,它十分类似DOS的fdisk,具有互动式操作界面而非传统fdisk的问答式界面,您可以轻易地利用方向键来操控分区操作。

语法

cfdisk [-avz][-c <柱面数目>-h <磁头数目>-s <盘区数目>][-P <r,s,t>][外围设备代号]

参数说明:

  • -a 在程序里不用反白代表选取,而以箭头表示。
  • -c<柱面数目> 忽略BIOS的数值,直接指定磁盘的柱面数目。
  • -h<磁头数目> 忽略BIOS的数值,直接指定磁盘的磁头数目。
  • -P<r,s,t> 显示分区表的内容,附加参数”r”会显示整个分区表的详细资料,附加参数”s”会依照磁区的顺序显示相关信息,附加参数”t”则会以磁头,磁区,柱面的方式来显示资料。
  • -s<磁区数目> 忽略BIOS的数值,直接指定磁盘的磁区数目。
  • -v 显示版本信息。
  • -z 不读取现有的分区,直接当作没有分区的新磁盘使用。

实例

进行磁盘分区:

# cfsik

进行磁盘分区,使用箭头进行操作,而不使用反白表示:

# cfsik -a

进行磁盘分区,使用箭头进行操作,而不使用反白表示:

# cfsik -s 3

3.dd

​ dd命令用于读取、转换并输出数据。

dd可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。

参数说明:

  • if=文件名:输入文件名,默认为标准输入。即指定源文件。

  • of=文件名:输出文件名,默认为标准输出。即指定目的文件。

  • ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。

    obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
    bs=bytes:同时设置读入/输出的块大小为bytes个字节。

  • cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。

  • skip=blocks:从输入文件开头跳过blocks个块后再开始复制。

  • seek=blocks:从输出文件开头跳过blocks个块后再开始复制。

  • count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。

  • conv=<关键字>,关键字可以有以下11种:

    • conversion:用指定的参数转换文件。
    • ascii:转换ebcdic为ascii
    • ebcdic:转换ascii为ebcdic
    • ibm:转换ascii为alternate ebcdic
    • block:把每一行转换为长度为cbs,不足部分用空格填充
    • unblock:使每一行的长度都为cbs,不足部分用空格填充
    • lcase:把大写字符转换为小写字符
    • ucase:把小写字符转换为大写字符
    • swab:交换输入的每对字节
    • noerror:出错时不停止
    • notrunc:不截短输出文件
    • sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
  • –help:显示帮助信息

  • –version:显示版本信息

实例

在Linux 下制作启动盘,可使用如下命令:

dd if=boot.img of=/dev/fd0 bs=1440k 

将testfile文件中的所有英文字母转换为大写,然后转成为testfile_1文件,在命令提示符中使用如下命令:

dd if=testfile_2 of=testfile_1 conv=ucase 

其中testfile_2 的内容为:

$ cat testfile_2 #testfile_2的内容  
HELLO LINUX!  
Linux is a free unix-type opterating system.  
This is a linux testfile!  
Linux test 

转换完成后,testfile_1 的内容如下:

$ dd if=testfile_2 of=testfile_1 conv=ucase #使用dd 命令,大小写转换记录了0+1 的读入  
记录了0+1 的写出  
95字节(95 B)已复制,0.000131446 秒,723 KB/s  
cmd@hdd-desktop:~$ cat testfile_1 #查看转换后的testfile_1文件内容  
HELLO LINUX!  
LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.  
THIS IS A LINUX TESTFILE!  
LINUX TEST #testfile_2中的所有字符都变成了大写字母 

由标准输入设备读入字符串,并将字符串转换成大写后,再输出到标准输出设备,使用的命令为:

dd conv=ucase 

输入以上命令后按回车键,输入字符串,再按回车键,按组合键Ctrl+D 退出,出现以下结果:

$ dd conv=ucase 
Hello Linux! #输入字符串后按回车键  
HELLO LINUX! #按组合键Ctrl+D退出,转换成大写结果  
记录了0+1 的读入  
记录了0+1 的写出  
13字节(13 B)已复制,12.1558 秒,0.0 KB/s 

4.e2fsck

e2fsck命令用于检查使用 Linux ext2 档案系统的 partition 是否正常工作。

语法

e2fsck [-pacnydfvFV] [-b superblock] [-B blocksize] [-l|-L bad_blocks_file] [-C fd] device

参数说明

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

实例

检查 /dev/hda5 是否正常,如果有异常便自动修复,并且设定若有问答,均回答[是] :

e2fsck -a -y /dev/hda5

注意 :

大部份使用 e2fsck 来检查硬盘 partition 的情况时,通常都是情形特殊,因此最好先将该 partition umount,然后再执行 e2fsck 来做检查,若是要非要检查 / 时,则请进入 singal user mode 再执行。

5.ext2ed

​ ext2ed命令是ext2文件系统编辑程序。

ext2ed可直接处理硬盘分区上的数据,这指令只有Red Hat Linux才提供。

语法

ext2ed

一般指令:

  • setdevice[设备名称] 指定要处理的设备。
  • disablewrite 将ext2ed设为只读的状态。
  • enablewrite 将ext2ed设为可读写的状态。
  • help[指令] 显示个别指令的帮助。
  • next 移至下一个单位,单位会依目前所在的模式而异。
  • prev 移至前一个单位,单位会依目前所在的模式而异。
  • pgup 移至下一页。
  • pgdn 移至上一页。
  • set 修改目前的数据,参数会依目前所在的模式而异。
  • writedata 在执行此指令之后,才会实际修改分区中的数据。
  • ext2进入3种模式的指令
  • super 进入main superblock,即Superblock模式。
  • group<编号> 进入指定的group,即Group模式。
  • cd<目录或文件> 在inode模式下,进入指定的目录或文件,即Inode模式。
  • Superblock模式
  • gocopy<备份编号> 进入指定的superblock备份。
  • setactivecopy 将目前所在的superblock,复制到main superblock。
  • Group模式
  • blockbitmap 显示目前groupo的区块图。
  • inode 进入目前group的第一个inode。
  • inodebitmap 显示目前group的inode二进制码。
  • Inode模式
  • dir 进入目录模式。
  • file 进入文件模式。

6.fsck

​ fsck命令用于 检查与修复 Linux 档案系统,可以同时检查一个或多个 Linux 档案系统。

语法

fsck [-sACVRP] [-t fstype] [--] [fsck-options] filesys [...]

参数

  • filesys : device 名称(eg./dev/sda1),mount 点 (eg. / 或 /usr)
  • -t : 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数
  • -s : 依序一个一个地执行 fsck 的指令来检查
  • -A : 对/etc/fstab 中所有列出来的 partition 做检查
  • -C : 显示完整的检查进度
  • -d : 列印 e2fsck 的 debug 结果
  • -p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行
  • -R : 同时有 -A 条件时,省略 / 不检查
  • -V : 详细显示模式
  • -a : 如果检查有错则自动修复
  • -r : 如果检查有错则由使用者回答是否修复

实例

检查 msdos 档案系统的 /dev/hda5 是否正常,如果有异常便自动修复 :

fsck -t msdos -a /dev/hda5

注意 此指令可与 /etc/fstab 相互参考操作来加以了解。

7.fsck.minix

fsck.minix命令用于检查文件系统并尝试修复错误。

当minix文件系统发生错误时,可用fsck.minix指令尝试加以参考。

语法

fsck.minix [-aflmrsv][外围设备代号]

参数

  • -a 自动修复文件系统,不询问任何问题。
  • -f 强制对该文件系统进行完整检查,纵然该文件系统在慨略检查下没有问题。
  • -l 列出所有文件名称。
  • -m 使用类似MINIX操作系统的警告信息。
  • -r 采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式。
  • -s 显示该分区第一个磁区的相关信息。
  • -v 显示指令执行过程。

8.fsconf

fsconf命令用于设置文件系统相关功能。

fsconf是Red Hat Linux发行版专门用来调整Linux各项设置的程序。

语法

fsconf [--check]

参数

  • –chedk 检查特定文件的权限。

9.fdformat

     fdformat命令用于对指定的软碟机装置进行低阶格式化。

使用这个指令对软碟格式化的时候,最好指定像是下面的装置:

  • /dev/fd0d360 磁碟机 A: ,磁片为 360KB 磁碟
  • /dev/fd0h1440 磁碟机 A: ,磁片为 1.4MB 磁碟
  • /dev/fd1h1200 磁碟机 B: ,磁片为 1.2MB 磁碟

如果使用像是 /dev/fd0 之类的装置,如果里面的磁碟不是标准容量,格式化可能会失败。在这种情况之下,使用者可以用 setfdprm 指令先行指定必要参数。

语法

fdformat [-n] device

参数

  • -n 关闭确认功能。这个选项会关闭格式化之后的确认步骤。

实例

fdformat -n /dev/fd0h1440

将磁碟机 A 的磁片格式化成 1.4MB 的磁片。并且省略确认的步骤。

10.hdparm

​ hdparm命令用于显示与设定硬盘的参数。

hdparm可检测,显示与设定IDE或SCSI硬盘的参数。

语法

hdparm [-CfghiIqtTvyYZ][-a <快取分区>][-A <0或1>][-c <I/O模式>][-d <0或1>][-k <0或1>][-K <0或1>][-m <分区数>][-n <0或1>][-p <PIO模式>][-P <分区数>][-r <0或1>][-S <时间>][-u <0或1>][-W <0或1>][-X <传输模式>][设备]

参数说明

  • -a<快取分区> 设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定。
  • -A<0或1> 启动或关闭读取文件时的快取功能。
  • -c<I/O模式> 设定IDE32位I/O模式。
  • -C 检测IDE硬盘的电源管理模式。
  • -d<0或1> 设定磁盘的DMA模式。
  • -f 将内存缓冲区的数据写入硬盘,并清楚缓冲区。
  • -g 显示硬盘的磁轨,磁头,磁区等参数。
  • -h 显示帮助。
  • -i 显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供。
  • -I 直接读取硬盘所提供的硬件规格信息。
  • -k<0或1> 重设硬盘时,保留-dmu参数的设定。
  • -K<0或1> 重设硬盘时,保留-APSWXZ参数的设定。
  • -m<磁区数> 设定硬盘多重分区存取的分区数。
  • -n<0或1> 忽略硬盘写入时所发生的错误。
  • -p<PIO模式> 设定硬盘的PIO模式。
  • -P<磁区数> 设定硬盘内部快取的分区数。
  • -q 在执行后续的参数时,不在屏幕上显示任何信息。
  • -r<0或1> 设定硬盘的读写模式。
  • -S<时间> 设定硬盘进入省电模式前的等待时间。
  • -t 评估硬盘的读取效率。
  • -T 评估硬盘快取的读取效率。
  • -u<0或1> 在硬盘存取时,允许其他中断要求同时执行。
  • -v 显示硬盘的相关设定。
  • -W<0或1> 设定硬盘的写入快取。
  • -X<传输模式> 设定硬盘的传输模式。
  • -y 使IDE硬盘进入省电模式。
  • -Y 使IDE硬盘进入睡眠模式。
  • -Z 关闭某些Seagate硬盘的自动省电功能。

实例

显示硬盘的相关设置:

# hdparm /dev/sda
 /dev/sda:
 IO_support = 0 (default 16-bit)
 readonly = 0 (off)
 readahead = 256 (on)
 geometry = 19929[柱面数]/255[磁头数]/63[扇区数], sectors = 320173056[总扇区数], start = 0[起始扇区数]

显示硬盘的柱面、磁头、扇区数

# hdparm -g /dev/sda
 /dev/sda:
 geometry = 19929[柱面数]/255[磁头数]/63[扇区数], sectors = 320173056[总扇区数], start = 0[起始扇区数]

评估硬盘的读取效率

 hdparm -t /dev/sda
 /dev/sda:
 Timing buffered disk reads: 166 MB in 3.03 seconds = 54.85 MB/sec
 [root@linuxso.com ~]# hdparm -t /dev/sda
 /dev/sda:
 Timing buffered disk reads: 160 MB in 3.01 seconds = 53.11 MB/sec
 [root@linuxso.com ~]# hdparm -t /dev/sda
 /dev/sda:
 Timing buffered disk reads: 166 MB in 3.00 seconds = 55.31 MB/sec

11.mformat

​ mformat命令用于对MS-DOS文件系统的磁盘进行格式化。

在已经做过低阶格式化的磁片上建立 DOS 档案系统。如果在编程 mtools 的时候把 USE_2M 的参数打开,部分与 2M 格式相关的参数就会发生作用。否则这些参数(像是 S,2,1,M)不会发生作用。

语法

mformat [-t cylinders] [-h heads] [-s sectors] [-l volume_label] [-F] [-I fsVer-sion] [-S sizecode] [-2 sectors_on_track_0] [-M software_sector_size] [-a] [-X] [-C] [-H hidden_sectors] [-r root_sectors] [-B boot_sector] [-0 rate_on_track_0] [-A rate_on_other_tracks] [-1] [-k] drive:

参数

  • -t 磁柱(synlider)数
  • -h 磁头(head)数
  • -s 每一磁轨的磁区数
  • -l 标签
  • -F 将磁碟格式化为 FAT32 格式,不过这个参数还在实验中。
  • -I 设定 FAT32 中的版本号。这当然也还在实验中。
  • -S 磁区大小代码,计算方式为 sector = 2^(大小代码+7)
  • -c 磁丛(cluster)的磁区数。如果所给定的数字会导致磁丛数超过 FAT 表的限制,mformat 会自动放大磁区数。
  • -s
  • -M 软件磁区大小。这个数字就是系统回报的磁区大小。通常是和实际的大小相同。
  • -a 如果加上这个参数,mformat 会产生一组 Atari 系统的序号给这块软碟。
  • -X 将软碟格式化成 XDF 格式。使用前必须先用 xdfcopy 指令对软碟作低阶格式化的动作。
  • -C 产生一个可以安装 MS-DOS 档案系统的磁碟影像档(disk image)。当然对一个实体磁碟机下这个参数是没有意义的。
  • -H 隐藏磁区的数目。这通常适用在格式化硬盘的分割区时,因为通常一个分割区的前面还有分割表。这个参数未经测试,能不用就不用。
  • -n 磁碟序号
  • -r 根目录的大小,单位是磁区数。这个参数只对 FAT12 和 FAT16 有效。
  • -B 使用所指定的档案或是设备的开机磁区做为这片磁片或分割区的开机磁区。当然当中的硬件参数会随之更动。
  • -k 尽量保持原有的开机磁区。
  • -0 第 0 轨的资料传输率
  • -A 第 0 轨以外的资料传输率
  • -2 使用 2m 格式
  • -1 不使用 2m 格式

实例

用预设值把 a: (就是 /dev/fd0)里的磁碟片格式化。

mformat a:

12.mkbootdisk

​ mkbootdisk命令用于建立目前系统的启动盘。

mkbootdisk可建立目前系统的启动盘。

语法

mkbootdisk [--noprompt][--verbose][--version][--device <设备>][--mkinitrdargs <参数>][kernel 版本]

参数

  • –device<设备> 指定设备。
  • –mkinitrdargs<参数> 设置mkinitrd的参数。
  • –noprompt 不会提示用户插入磁盘。
  • –verbose 执行时显示详细的信息。
  • –version 显示版本信息。

13.mkdosfs

​ mkdosfs命令用于建立DOS文件系统。

device 指你想要建立 DOS 档案系统的装置代号。像是 /dev/hda1 等等。 block_count 则是你希望配置的区块数。如果 block_count 没有指定则系统会自动替你计算符合该装置大小的区块数。

mkdosfs [ -c | -l filename ]
   [ -f number_of_FATs ]
   [ -F FAT_size ]
   [ -i volume_id ]
   [ -m message_file ]
   [ -n volume_name ]
   [ -r root_dir_entry ]
   [ -s sector_per_cluster ]
   [ -v ]
   device
   [ block_count ]

参数

  • -c 建立档案系统之前先检查是否有坏轨。
  • -l 从得定的档案中读取坏轨记录。
  • -f 指定档案配置表(FAT , File Allocation Table)的数量。预设值为 2 。目前 Linux 的 FAT 档案系统不支援超过 2 个 FAT 表。通常这个不需要改。
  • -F 指定 FAT 表的大小,通常是 12 或是 16 个位元组。12 位元组通常用于磁碟片,16 位元组用于一般硬盘的分割区,也就是所谓的 FAT16 格式。这个值通常系统会自己选定适当的值。在磁碟片上用 FAT16 通常不会发生作用,反之在硬盘上用 FAT12 亦然。
  • -i 指定 Volume ID。一般是一个 4 个位元组的数字,像是 2e203a47 。如果不给系统会自己产生。
  • -m 当使用者试图用这片磁片或是分割区开机,而上面没有操作系统时,系统会给使用者一段警告讯息。这个参数就是用来变更这个讯息的。你可以先用档案编辑好,然后用这个参数指定,或是用
  • -m -
  • 这样系统会要求你直接输入这段文字。要特别注意的是,档案里的字串长度不要超过 418 个字,包括展开的跳栏符号(TAB)和换行符号(换行符号在 DOS 底下算两个字元!)
  • -n 指定 Volume Name,就是磁碟标签。如同在 DOS 底下的 format 指令一样,给不给都可以。没有预设值。
  • -r 指定根目录底下的最大档案数。这里所谓的档案数包括目录。预设值是在软碟上是 112 或是 224 ,在硬盘上是 512。没事不要改这个数字。
  • -s 每一个磁丛(cluster)的磁区数。必须是 2 的次方数。不过除非你知道你在作什么,这个值不要乱给。
  • -v 提供额外的讯息

实例

将 A 槽里的磁碟片格式化为 DOS 格式,并将标签设为 Tester

mkdosfs -n Tester /dev/fd0

14. mke2fs

​ mke2fs命令用于建立ext2文件系统。

语法

mke2fs [-cFMqrSvV][-b <区块大小>][-f <不连续区段大小>][-i <字节>][-N <inode数>][-l <文件>][-L <标签>][-m <百分比值>][-R=<区块数>][ 设备名称][区块数]

参数

  • -b<区块大小> 指定区块大小,单位为字节。
  • -c 检查是否有损坏的区块。
  • -f<不连续区段大小> 指定不连续区段的大小,单位为字节。
  • -F 不管指定的设备为何,强制执行mke2fs。
  • -i<字节> 指定”字节/inode”的比例。
  • -N<inode数> 指定要建立的inode数目。
  • -l<文件> 从指定的文件中,读取文件西中损坏区块的信息。
  • -L<标签> 设置文件系统的标签名称。
  • -m<百分比值> 指定给管理员保留区块的比例,预设为5%。
  • -M 记录最后一次挂入的目录。
  • -q 执行时不显示任何信息。
  • -r 指定要建立的ext2文件系统版本。
  • -R=<区块数> 设置磁盘阵列参数。
  • -S 仅写入superblock与group descriptors,而不更改inode able inode bitmap以及block bitmap。
  • -v 执行时显示详细信息。
  • -V 显示版本信息。

15.mkfs.ext2

功能说明:与 mke2fs命令 相同

16.mkfs.msdos

功能说明:与 mkdosfs 命令 相同。

17. mkinitrd

     mkinitrd命令用于建立要载入ramdisk的映像文件。

mkinitrd可建立映像文件,以供Linux开机时载入ramdisk。

语法

mkinitrd [-fv][--omit-scsi-modules][--version][--preload=<模块名称>][--with=<模块名称>][映像文件][Kernel 版本]

参数

  • -f 若指定的映像问家名称与现有文件重复,则覆盖现有的文件。
  • -v执行时显示详细的信息。
  • –omit-scsi-modules 不要载入SCSI模块。
  • –preload=<模块名称> 指定要载入的模块。
  • –with=<模块名称> 指定要载入的模块。
  • –version 显示版本信息。

18.mkisofs

​ mkisofs命令用于建立ISO 9660映像文件。

mkisofs可将指定的目录与文件做成ISO 9660格式的映像文件,以供刻录光盘。

语法

mkisofs [-adDfhJlLNrRTvz][-print-size][-quiet][-A <应用程序ID>][-abstract <摘要文件>][-b <开机映像文件>][-biblio <ISBN文件>][-c <开机文件名称>][-C <盘区编号,磁区编号>][-copyright <版权信息文件>][-hide <目录或文件名>][-hide-joliet <文件或目录名>][-log-file <记录文件>][-m <目录或文件名>][-M <开机映像文件>][-o <映像文件>][-p <数据处理人>][-P <光盘发行人>][-sysid <系统ID >][-V <光盘ID >][-volset <卷册集ID>][-volset-size <光盘总数>][-volset-seqno <卷册序号>][-x <目录>][目录或文件]

参数

  • -a或–all mkisofs通常不处理备份文件。使用此参数可以把备份文件加到映像文件中。
  • -A<应用程序ID>或-appid<应用程序ID> 指定光盘的应用程序ID。
  • -abstract<摘要文件> 指定摘要文件的文件名。
  • -b<开机映像文件>或-eltorito-boot<开机映像文件> 指定在制作可开机光盘时所需的开机映像文件。
  • -biblio<ISBN文件> 指定ISBN文件的文件名,ISBN文件位于光盘根目录下,记录光盘的ISBN。
  • -c<开机文件名称> 制作可开机光盘时,mkisofs会将开机映像文件中的全-eltorito-catalog<开机文件名称>全部内容作成一个文件。
  • -C<盘区编号,盘区编号> 将许多节区合成一个映像文件时,必须使用此参数。
  • -copyright<版权信息文件> 指定版权信息文件的文件名。
  • -d或-omit-period 省略文件后的句号。
  • -D或-disable-deep-relocation ISO 9660最多只能处理8层的目录,超过8层的部分,RRIP会自动将它们设置成ISO 9660兼容的格式。使用-D参数可关闭此功能。
  • -f或-follow-links 忽略符号连接。
  • -h 显示帮助。
  • -hide<目录或文件名> 使指定的目录或文件在ISO 9660或Rock RidgeExtensions的系统中隐藏。
  • -hide-joliet<目录或文件名> 使指定的目录或文件在Joliet系统中隐藏。
  • -J或-joliet 使用Joliet格式的目录与文件名称。
  • -l或-full-iso9660-filenames 使用ISO 9660 32字符长度的文件名。
  • -L或-allow-leading-dots 允许文件名的第一个字符为句号。
  • -log-file<记录文件> 在执行过程中若有错误信息,预设会显示在屏幕上。
  • -m<目录或文件名>或-exclude<目录或文件名> 指定的目录或文件名将不会房入映像文件中。
  • -M<映像文件>或-prev-session<映像文件> 与指定的映像文件合并。
  • -N或-omit-version-number 省略ISO 9660文件中的版本信息。
  • -o<映像文件>或-output<映像文件> 指定映像文件的名称。
  • -p<数据处理人>或-preparer<数据处理人> 记录光盘的数据处理人。
  • -print-size 显示预估的文件系统大小。
  • -quiet 执行时不显示任何信息。
  • -r或-rational-rock 使用Rock Ridge Extensions,并开放全部文件的读取权限。
  • -R或-rock 使用Rock Ridge Extensions。
  • -sysid<系统ID> 指定光盘的系统ID。
  • -T或-translation-table 建立文件名的转换表,适用于不支持Rock Ridge Extensions的系统上。
  • -v或-verbose 执行时显示详细的信息。
  • -V<光盘ID>或-volid<光盘ID> 指定光盘的卷册集ID。
  • -volset-size<光盘总数> 指定卷册集所包含的光盘张数。
  • -volset-seqno<卷册序号> 指定光盘片在卷册集中的编号。
  • -x<目录> 指定的目录将不会放入映像文件中。
  • -z 建立通透性压缩文件的SUSP记录,此记录目前只在Alpha机器上的Linux有效。

19. mkswap

​ mkswap命令用于设置交换区(swap area)。

mkswap可将磁盘分区或文件设为Linux的交换区。

语法

mkswap [-cf][-v0][-v1][设备名称或文件][交换区大小]

参数

  • -c 建立交换区前,先检查是否有损坏的区块。
  • -f 在SPARC电脑上建立交换区时,要加上此参数。
  • -v0 建立旧式交换区,此为预设值。
  • -v1 建立新式交换区。
  • [交换区大小] 指定交换区的大小,单位为1024字节。

20. mpartition

mpartition命令用于建立或删除MS-DOS的分区。

mpartition为mtools工具指令,可建立或删除磁盘分区。

语法

mpartition [-acdfIprv][-b <磁区数>][-h <磁头数>][l <磁区数>][-s <磁区数>][-t <柱面数>][驱动器代号]

参数

  • -a 将分区设置为可开机分区。
  • -b<磁区数> 建立分区时,指定要从第几个磁区开始建立分区。
  • -c 建立分区。
  • -d 将分区设置为无法开机的分区。
  • -f 强制地修改分区而不管检查时发生的错误信息。
  • -h<磁头数> 建立分区时,指定分区的磁头数。
  • -I 删除全部的分区。
  • -l<磁区数> 建立分区时,指定分区的容量大小,单位为磁区数。
  • -p 当要重新建立分区时,显示命令列。
  • -r 删除分区。
  • -s<磁区数> 建立分区时,指定每个磁轨的磁区数。
  • -t<柱面数> 建立分区时,指定分区的柱面数。
  • -v 与-p参数一并使用,若没有同时下达修改分区的命令,则显示目前分区的状态。

21.swapon

​ swapon命令用于激活Linux系统中交换空间,Linux系统的内存管理必须使用交换区来建立虚拟内存。

语法

/sbin/swapon -a [-v]
/sbin/swapon [-v] [-p priority] specialfile ...
/sbin/swapon [-s]

参数说明:

  • -h 请帮帮我
  • -V 显示版本讯息
  • -s 显示简短的装置讯息
  • -a 自动启动所有SWAP装置
  • -p 设定优先权,你可以在0到32767中间选一个数字给他。或是在 /etc/fstab 里面加上 pri=[value] ([value]就是0~32767中间一个数字),然后你就可以很方便的直接使用 swapon -a 来启动他们,而且有优先权设定。

swapon 是开启swap.

相对的,便有一个关闭swap的指令,swapoff.

​ symlinks命令用于维护符号连接的工具程序。

symlinks可检查目录中的符号连接,并显示符号连接类型。以下为symlinks可判断的符号连接类型:

  • absolute:符号连接使用了绝对路径。
  • dangling:原始文件已经不存在。
  • lengthy:符号连接的路径中包含了多余的”../“。
  • messy:符号连接的路径中包含了多余的”/“。
  • other_fs:原始文件位于其他文件系统中。
  • relative:符号连接使用了相对路径。

语法

symlinks [-cdrstv][目录]

参数

  • -c 将使用绝对路径的符号连接转换为相对路径。
  • -d 移除dangling类型的符号连接。
  • -r 检查目录下所有子目录中的符号连接。
  • -s 检查lengthy类型的符号连接。
  • -t 与-c一并使用时,会显示如何将绝对路径的符号连接转换为相对路径,但不会实际转换。
  • -v 显示所有类型的符号连接。

23.sync

​ sync命令用于数据同步,sync命令是在关闭Linux系统时使用的。

Linux 系统中欲写入硬盘的资料有的时候会了效率起见,会写到 filesystem buffer 中,这个 buffer 是一块记忆体空间,如果欲写入硬盘的资料存于此 buffer 中,而系统又突然断电的话,那么资料就会流失了,sync 指令会将存于 buffer 中的资料强制写入硬盘中。

语法

sync

24. mbadblocks

​ mbadblocks命令用于检查MS-DOS文件系统的磁盘是否有损坏的磁区。

mbadblocks为mtools工具指令,可用来扫描MS-DOS文件系统的磁盘驱动器,并标示出损坏的磁区。

语法

mbadblocks [驱动器代号]

25.mkfs.minix

​ mkfs.minix命令用于建立Minix文件系统。

mkfs.minix可建立Minix文件系统。

语法

mkfs.minix [-cv][-i <inode数目>][-l <文件>][-n <文件名长度>][设备名称][区块数]

参数

  • -c 检查是否有损坏的区块。
  • -i<inode数目> 指定文件系统的inode总数。
  • -l<文件> 从指定的文件中,读取文件系统中损坏区块的信息。
  • -n<文件名长度> 指定文件名称长度的上限。
  • -v 建立第2版的Minix文件系统。

26.fsck.ext2

​ fsck.ext2命令用于检查文件系统并尝试修复错误。

当ext2文件系统发生错误时,可用fsck.ext2指令尝试加以修复。

语法

fsck.ext2 [-acdfFnprsStvVy][-b <分区第一个磁区地址>][-B <区块大小>][-C <反叙述器>][-I <inode缓冲区块数>][-l/L <损坏区块文件>][-P <处理inode大小>][外围设备代号]

参数

  • -a 自动修复文件系统,不询问任何问题。
  • -b<分区第一个磁区地址> 指定分区的第一个磁区的起始地址,也就是Super Block。
  • -B<区块大小> 设置该分区每个区块的大小。
  • -c 检查指定的文件系统内,是否存在有损坏的区块。
  • -C<反叙述器> 指定反叙述器,fsck.ext2指令会把全部的执行过程,都交由其逆向叙述,便于排错或监控程序执行的情形。
  • -d 详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -f 强制对该文件系统进行完整检查,纵然该文件系统在慨略检查下没有问题。
  • -F 检查文件系统之前,先清理该保存设备块区内的数据。
  • -I<inode缓冲区块数> 设置欲检查的文件系统,其inode缓冲区的区块数目。
  • -l<损坏区块文件> 把文件中所列出的区块,视为损坏区块并将其标示出来,避免应用程序使用该区块。
  • -L<损坏区块文件> 此参数的效果和指定”-l”参数类似,但在参考损坏区块文件标示损坏区块之前,会先将原来标示成损坏区块者统统清楚,即全部重新设置,而非仅是加入新的损坏区块标示。
  • -n 把欲检查的文件系统设成只读,并关闭互动模式,否决所有询问的问题。
  • -p 此参数的效果和指定”-a”参数相同。
  • -P<处理inode大小> 设置fsck.ext2指令所能处理的inode大小为多少。
  • -r 此参数将忽略不予处理,仅负责解决兼容性的问题。
  • -s 检查文件系统时,交换每对字节的内容。
  • -S 此参数的效果和指定”-s”参数类似,但不论该文件系统是否已是标准位顺序,一律交换每对字节的内容。
  • -t 显示fsck.ext2指令的时序信息。
  • -v 详细显示指令执行过程。
  • -V 显示版本信息。
  • -y 关闭互动模式,且同意所有询问的问题。

27.fdisk

​ fdisk是一个创建和维护分区表的程序,它兼容DOS类型的分区表,BSD或者SUN类型的磁盘列表。

语法

fdisk [必要参数] [选择参数]

必要参数:

  • -l列出素所有分区表
  • -u与“-l”搭配使用,显示分区数目

选择参数:

  • -s <分区编号>指定分区
  • -v版本信息

菜单操作说明

  • m:显示菜单和帮助信息
  • a:活动分区标记/引导分区
  • d:删除分区
  • l:显示分区类型
  • n:新建分区
  • p:显示分区信息
  • q:退出不保存
  • t:设置分区号
  • v:进行分区检查
  • w:保存修改
  • x:扩展应用,高级功能

实例

显示当前分区情况:

#fdisk -l

磁盘/ dev / sda:10.7 GB,10737418240字节
255个头,63个扇区/轨道,1305个柱面
单位= 16065 * 512 = 8225280字节的柱面

  设备启动开始结束块ID系统
/ dev / sda1 * 1 13 104391 83 Linux
/ dev / sda2 14 1305 10377990 8e Linux LVM

磁盘/ dev / sdb:5368 MB,5368709120字节
255个头,63个扇区/轨道,652个柱面
单位= 16065 * 512 = 8225280字节的柱面

磁盘/ dev / sdb不包含有效的分区表

显示SCSI硬盘的每个分区情况

#fdisk -lu  

磁盘/ dev / sda:10.7 GB,10737418240字节
255个头,63个扇区/轨道,1305个气缸,总共20971520个扇区
单位= 1 * 512 = 512字节的扇区

  设备启动开始结束块ID系统
/ dev / sda1 * 63 208844 104391 83 Linux
/ dev / sda2 208845 20964824 10377990 8e Linux LVM

磁盘/ dev / sdb:5368 MB,5368709120字节
255个头,63个扇区/轨道,652个气缸,总共10485760个扇区
单位= 1 * 512 = 512字节的扇区

磁盘/ dev / sdb不包含有效的分区表

28.losetup

​ losetup命令用于设置循环设备。

循环设备可把文件虚拟成区块设备,籍以模拟整个文件系统,让用户得以将其视为硬盘驱动器,光驱或软驱等设备,并挂入当作目录来使用。

语法

losetup [-d][-e <加密方式>][-o <平移数目>][循环设备代号][文件]

参数

  • -d 卸除设备。
  • -e<加密方式> 启动加密编码。
  • -o<平移数目> 设置数据平移的数目。

实例

(1)创建空的磁盘镜像文件,这里创建一个1.44M的软盘

$ dd if=/dev/zero of=floppy.img bs=512 count=2880

(2)使用 losetup将磁盘镜像文件虚拟成快设备

$ losetup /dev/loop1 floppy.img

(3)挂载块设备

$ mount /dev/loop0 /tmp

经过上面的三步之后,我们就可以通过/tmp目录,像访问真实快设备一样来访问磁盘镜像文件floppy.img。

(4) 卸载loop设备

$ umount /tmp
$ losetup -d /dev/loop1

一个完整测试实例

\1. 首先创建一个 1G 大小的空文件:

# dd if=/dev/zero of=loopfile.img bs=1G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 69.3471 s, 15.5 MB/s

\2. 对该文件格式化为 ext4 格式:

# mkfs.ext4 loopfile.img
。。。。

\3. 用 file 命令查看下格式化后的文件类型:

# file loopfile.img
loopfile.img: Linux rev 1.0 ext4 filesystem data, UUID=a9dfb4a0-6653-4407-ae05-7044d92c1159 (extents) (large files) (huge files)

\4. 准备将上面的文件挂载起来:

# mkdir /mnt/loopback
# mount -o loop loopfile.img /mnt/loopback

mount 命令的 -o loop 选项可以将任意一个 loopback 文件系统挂载。

上面的 mount 命令实际等价于下面两条命令:

# losetup /dev/loop0 loopfile.img
# mount /dev/loop0 /mnt/loopback

因此实际上,mount -o loop 在内部已经默认的将文件和 /dev/loop0 挂载起来了。

然而对于第一种方法(mount -o loop)并不能适用于所有的场景。比如,我们想创建一个硬盘文件,然后对该文件进行分区,接着挂载其中一个子分区,这时就不能用 -o loop 这种方法了。因此必须如下做:

# losetup /dev/loop1 loopfile.img
# fdisk /dev/loop1

\6. 卸载挂载点:

# umount /mnt/loopback

29.mkfs

使用方式 : mkfs [-V] [-t fstype] [fs-options] filesys [blocks]

mkfs命令用于在特定的分区上建立 linux 文件系统

参数

  • device : 预备检查的硬盘分区,例如:/dev/sda1
  • -V : 详细显示模式
  • -t : 给定档案系统的型式,Linux 的预设值为 ext2
  • -c : 在制做档案系统前,检查该partition 是否有坏轨
  • -l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面
  • block : 给定 block 的大小

实例

在 /dev/hda5 上建一个 msdos 的档案系统,同时检查是否有坏轨存在,并且将过程详细列出来 :

mkfs -V -t msdos -c /dev/hda5

将sda6分区格式化为ext3格式

mfks -t ext3 /dev/sda6  

注意:这里的文件系统是要指定的,比如 ext3 ;reiserfs ;ext2 ;fat32 ;msdos 等。

30.sfdisk

​ sfdisk命令是硬盘分区工具程序。

了sfdisk为硬盘分区工具程序,可显示分区的设置信息,并检查分区是否正常。

语法

sfdisk [ - ?Tvx] [ -  d <硬盘>] [ -  g <硬盘>] [ -  l <硬盘>] [ -  s <分区>] [ -  V <硬盘>]

参数

  • - ?或–help显示帮助。
  • -d <硬盘>显示硬盘分区的设置。
  • -g <硬盘>或–show-geometry <硬盘>显示硬盘的CHS参数。
  • -l <硬盘>显示后硬盘分区的相关设置。
  • -s <分区>显示分区的大小,单位为区块。
  • -T或–list-types显示所有sfdisk能辨识的文件系统ID。
  • -v或–version显示版本信息。
  • -V <硬盘>或–verify <硬盘>检查硬盘分区是否正常。
  • -x或–show-extend显示扩展分区中的逻辑分区。

实例

显示分区信息:

#sfdisk -l

磁盘/ dev / sda:1305个柱面,255个磁头,63个扇区/磁道
单位= 8225280字节的柱面,1024字节的块,从0开始计数

设备启动开始结束#cyls #blocks Id系统
/ dev / sda1 * 0+ 12 13- 104391 83 Linux
/ dev / sda2 13 1304 1292 10377990 8e Linux LVM
/ dev / sda3 0  -  0 0 0空
/ dev / sda4 0  -  0 0 0空

磁盘/ dev / sdb:652个柱面,255个磁头,63个扇区/磁道

sfdisk:错误:扇区0没有msdos签名
/ dev / sdb:无法识别的分区
找不到分区

31.swapoff

     swapoff命令用于关闭系统交换区(swap area)。

使用swapoff实际上为swapon命令的符号连接,可用来关闭系统的交换区。

语法

swapoff [设备]

参数:

  • -a将/ etc / fstab文件中所有设置为swap的设备关闭
  • -h帮助信息
  • -V版本信息

实例

显示分区信息:

#sfdisk -l //显示分区信息

磁盘/ dev / sda:1305个柱面,255个磁头,63个扇区/磁道
单位= 8225280字节的柱面,1024字节的块,从0开始计数

  设备启动开始结束#cyls #blocks Id系统
/ dev / sda1 * 0+ 12 13- 104391 83 Linux
/ dev / sda2 13 1304 1292 10377990 8e Linux LVM
/ dev / sda3 0  -  0 0 0空
/ dev / sda4 0  -  0 0 0空

磁盘/ dev / sdb:652个柱面,255个磁头,63个扇区/磁道

sfdisk:错误:扇区0没有msdos签名
/ dev / sdb:无法识别的分区
找不到分区

关闭交换分区。

#subtoff / dev / sda2 //关闭交换分区

参考文章:

如有侵权,联系 2025685938@qq.com 删除


  转载请注明: yoyo 5.Linux命令(磁盘维护)

 上一篇
6.Linux命令(网络通讯) 6.Linux命令(网络通讯)
Linux命令(网络通讯)1.apachect apachectl命令可用来控制Apache HTTP服务器的程序。apachectl是slackware内附Apache HTTP服务器的script文件,可供管理员控制服务器,但在
2019-08-17
下一篇 
Linux常用命令全拼 Linux常用命令全拼
Linux常用命令全拼 pwd:打印工作目录打印当前目录显示出当前工作目录的绝对路径 ps:进程状态(进程状态,类似于windows的任务管理器) 常用参数:-auxf ps -auxf显示进程状态 df:disk free其功
2019-08-17
  目录