liunx 磁盘管理命令记录
Linux磁盘管理好坏管理直接关系到整个系统的性能问题。
Linux磁盘管理常用三个命令为df、du和fdisk。
- df:列出文件系统的整体磁盘使用量
- du:检查磁盘空间使用量
- fdisk:用于磁盘分区
----------fdisk分区工具----------
在我的另一篇文章里已经说过了在Linux系统中硬盘分区的概念了(http://blog.chinaunix.net/u3/112561/showart_2230401.html),所以在这里我就不多说了,有不懂的可以看看那篇
一、.下面来介绍fdisk分区工具的命令格式:
fdisk是传统的Linux硬盘分区工具,也是Linux系统中最常用的一种硬盘分区工具之一,它的命令格式如下:
-b sectorsize: 定义磁盘扇区的大小,有效值包括512、1024和2048,这个选项只对老版本的Linux操作系统有效。
-C cyls: 定义磁盘的柱面数,一般情况不需要对它进行定义,使用默认的就好。
-H heads: 定义分区表所使用的磁盘的碰头数,一般为255或16。
-S sects: 定义每条磁道的扇区数,一般为63。
-l :这是最常用到的一个命令选项,它是显示指定磁盘设备的分区表信息,例如查看/dev/sdb1这个磁盘设备的分区表信息就是:fdisk -l /dev/sdb1
-u :在显示分区表时,以扇区代替柱面作为显示的单位
-s partition: 在标准输出中以block为单位显示分区的大小。
-v :显示fdisk的版本信息。
device:就是磁盘的设备名称,IDE类型的磁盘设备名为[dev/hd[a-h]];而SCSI或SATA类型的磁盘设备名为[dev/sd[a-p]]。
假如我要查看我电脑上的第一块磁盘的分区表信息(呵呵,我就一块硬盘)可以使用如下命令:fdisk -l /dev/sda(我的硬盘是SATA类型的)显示信息如图:
二、fdisk交互模式:
当我们使用了命令“fdisk+设备名”后,就可以进入fdisk程序的交互模式了,在交互模式中可以通过输入fdisk程序所提供的指令来完成相应的操作,其结果如图:
a :设置可引导标记
b :修改bsd的磁盘标签
c :设置DOS操作系统兼容标记
d :删除一个分区
l :显示已知的分区类型,其中82为Linux swap分区,83为Linux分区
m :显示帮助信息
n :增加一个新的分区
o :创建一个新的空白的DOS分区表
p :显示磁盘当前的分区表
q :退出fdisk程序,不保存任何修改
s :创建一个新的空白的Sun磁盘标签
t :改变一个分区的系统号码(比如把Linux Swap分区改为Linux分区)
u :改变显示记录单位
v :对磁盘分区表进行验证
w :保存修改结果并退出fdisk程序
x :特殊功能,不建议初学者使用
知道了上面这些命令的意义,可以说就会对一块硬盘进行分区了。下面我来举个例子来说明一下:
首先我拿虚拟机添加一块硬盘,大小为170G,然后对其进行分区:
1.首先输入“fdisk -l“命令来查看一下添加上硬盘没有,然后输入命令“fdisk /dev/sdb"来进入fdisk程序交互模式,如下图:
2.输入指令“n"来新建一个分区,这个时候系统会让你输入是新建主分区还是扩展分区,我选择主分区(p),然后输入分区号(因为我这是新的硬盘,还没有分过区,所以输入1代表第一个主分区),然后又是起始柱面,直接选择默认即可。最后输入你这块分区的大小,我这里是分的差不多50G吧!这样一个分区就分好了,然后你可以输入p指令来查看一下,如下图:
3.这次我再建立一个扩展分区,首先输入指令n来新建一个分区,然后输入e来选择扩展分区,再输入分区号(2),然后下面的都选择默认就OK了!建立好后使用指令 p来查看一下,如图:
4.下面我再在扩展分区里面建立两个逻辑分区,首先输入指令n,然后选择分区类型为l(逻辑分区)起始柱面选择默认,然后输入此逻辑分区的大小,我就分40G了。最后输入指令p来查看一下是否建立成功,如图:
5.同样的步骤建立另一个逻辑分区,这里就不多说了。下面来看一下如何修改一个分区的类型。
6.输入指令t来修改分区的类型(只需要输入分区类型对应的ID号即可),然后输入要修改的分区号,我这里是修改的sdb5(也就是说输入5就OK了)。最后输入分区的类型的ID号,如果不知道分区的类型对应的ID号,你可以输入“l"指令来查看分区类型所对应的ID号。如图:
8.上面这些就是整个使用fdisk分区工具对硬盘进行分区的过程,哦,别忘记最后一步了,你得输入指令w来对你所做的操作进行保存,保存后你可以使用fdisk -l /dev/sdb来查看是否分区成功。如图:
11.格式化完文件系统后,你需要对磁盘进行挂载后才能够正常使用,挂载命令为mount,使用格式如下:
mount [-t 文件系统类型 ] 存储设备 挂载点(通常文件系统类型通常可以省略,系统会自动识别)
12.在挂载之前你需要新建一个挂载点,就是你想要把这块磁盘挂载到哪,然后你就把挂载点建立在哪就OK了。例如,上面例子中,我要对/dev/sdb1分区挂载,那么我先给它新建一个挂载点:mkdir /media/sdb1,然后执行:mount /dev/sdb1 /media/sdb1挂载点的名字可以随便起,挂载后你就可以往磁盘里写东西了,如图:
13.为了方便起见,我们还可以修改相关的配置文件,使得系统对某一个分区进行自动挂载,具体就是修改/etc/fstab配置文件来实现,我以上面例子把/dev/sdb1分区配置成每次系统启动时自动挂载到/media/sdb1下面,可以如下修改配置文件,如图:
14.按照上面所做当系统每次启动时,就会自动把/dev/sdb1分区挂载到/media/sdb1里,而不用我们每次进行手动挂载。
15.如果我们不想使用某一分区时,需要对它进行卸载,可以使用“umount + 设备挂载点”命令来进行卸载。如上例:umount /media/sdb1命令来进行卸载。
注意:有时候会遇到无法卸载的情况,遇到这种情况的原因是因为有其他用户或进程正在访问该文件系统导致的,在Linux系统中,是不允许对正在被访问的文件系统进行卸载操作的,只有当该文件系统上所有访问的用户或进程完成操作并退出后,这个文件系统才能被正常卸载。我们有两种方法来处理这种情况,一是用命令“lsof +挂载点”来查看到底是哪些进程正在访问该文件系统,查找出来后,使用kill命令将进程杀死来进行卸载。二是使用命令“fuser -k +挂载点”。加-k选项是使用命令fuser找出正在访问该文件系统的进程,加上-k选项就是找出来并杀死。通过以上两种方法就可以对一些无法卸载的文件系统进行卸载了。
----------parted分区工具----------
parted是RHEL5下自带的另外一种分区软件,相对于fdisk,它的使用更加方便,同时它还提供了动态调整分区大小的功能。下面我来如何通过parted创建、删除磁盘分区、查看分区表、更改分区大小、创建文件系统以及如何使用parted交互模式。
一、parted简介:
parted是另一款在linux下常用的分区软件,它支持的分区类型范围非常广,包括ext2、ext3、linux-swap、FAT、FAT32、reiserfs、HFS、jsf、ntfs、ufs和xfs等。它的命令格式如下:
parted [options] [device [command [options...]...]]
其中的命令选项说明如下:
-h :显示帮助信息。
-i :交互模式。
-s :脚本模式。
-v :显示parted的版本信息。
device :磁盘设备名称,如/dev/sda.
command :parted指令,如果没有设置指令,则parted将会进入交互模式。
二、parted交互模式:
与fdisk类似,parted可以使用命令“parted+设备名”进入交互模式。进入交互模式后,可以通过parted的各种指令来对磁盘分区进行管理,跟fdisk非常相似。我还以我电脑上的那块硬盘为例,如图是进入parted交互模式后又输入“help“命令帮助的界面:
parted的各种操作指令和详细说明如下:
check NUMBER 检查文件系统
cp [FROM-DEVICE]FROM-NUMBER TO-NUMBER 复制文件系统到另外一个分区
help[COMMAND] 显示全部帮助信息或者指定命令的帮助信息
mklabel,mktable LABEL-TYPE 在分区表中创建一个新的磁盘标签
mkfs NUMBER FS-TYPE 在分区上创建一个指定类型的文件系统
mkpart PART-TYPE[FS-TYPE]START END 创建一个分区
mkparts PART-TYPE[FS-TYPE]START END 创建一个分区,并在分区上创建指定的文件系统
move NUMBER START END 移动分区
name NUMBER NAME 以指定的名字命名分区号
print [free|NUMBER|all] 显示分区表、指定的分区或者所有设备
quit 退出parted程序
rescue START END 修复丢失的分区
resize NUMBER START END 更改分区的大小
rm NUMBER 删除分区
select DEVICE 选择需要更改的设备
set NUMBER FLAG STATE 更改分区的标记
toggle [NUMBER[FLAG]] 设置或取消分区的标记
unit UNIT 设置默认单位
version 显示parted的版本信息
三、分区管理
1.查看分区
在parted交互模式下输入print指令来查看分区(相当于fdisk的p指令),如图:
在parted交互模式下输入mkpart指令来创建磁盘分区,假如要创建一个开始位置为50G、结束位置为100G、文件系统类型为ext3的逻辑分区,可以使用如下指令来创建:
mkpart logical ext3 50G 100G 如图:
当然也可以只输入mkpart指令而不带任何参数,parted会一步步提示用户输入相关信息并最终完成分区创建,如图:
创建分区后,可以使用mkfs指令在分区上创建文件系统(也就是格式化),parted目前只支持ext2文件系统,还不支持ext3,如图:
4.更改分区大小
使用resize指令可以更改指定分区的大小。需要更改大小的分区上面必须是已经创建了文件系统,否则会提示:Error:Could not detect file system.下面我以dev/sdb6为例来缩小22G,因为我现在磁盘已经用完了,所以不能加了!就减少吧!如图:
5.删除分区
使用rm指令可以删除指定的磁盘分区,在进行删除操作前必须先把分区卸载,例如我要删除/dev/sdb6就是在parted交互模式下输入“rm“指令,然后输入要删除的分区号。如图:
7.2.1 硬盘分区
过去,PC机硬盘一直使用32位PC-BIOS分区表和主引导记录(MBR),因此分区大小最大不能超过2TB,并且每个硬盘最多只能包含4个主分区。使用扩展分区可以打破4个主分区的限制。为解决2TB的限制,目前正逐步采用GPT(GUID Partition Tables,GUID分区表)替代PC-BIOS分区表。
fdisk曾是操作磁盘分区的标准命令。不过由于fdisk无法操作GPT分区,所以已慢慢弃之不用了。取而代之的是parted命令,更加强大,支持也更积极。
注意 如果偏爱使用图形界面工具划分硬盘分区、调整分区大小及其他硬盘操作,不妨试试gparted或qtparted分区工具。这两个工具的命令与软件包同名。
1. 用fdisk修改磁盘分区
fdisk命令可以列出和修改磁盘分区。记住,修改或删除分区可能会一并移除重要数据,写入磁盘前对自己所做的修改一定要心知肚明。以root权限键入下面的命令可以列出硬盘分区的相关信息:
- # fdisk -l 列出各个磁盘分区
- Disk /dev/sda: 82.3 GB, 82348277760 bytes
- 255 heads, 63 sectors/track, 10011 cylinders
- Units = cylinders of 16065 * 512 = 8225280 bytes
- Device Boot Start End Blocks Id System
- /dev/sda1 * 1 13 104391 83 Linux
- /dev/sda2 14 9881 79264710 83 Linux
- /dev/sda3 9882 10011 1044225 82 Linux swap
从命令输出可知,这个80GB的硬盘共划分为3个分区。第一个(/dev/sda1)为较小的/boot分区,配置成Linuxext3文件系统(Id 83)。注意,其中的星号(*)表明这个分区为可引导分区。第二个分区为根文件系统分区,同样采用ext3文件系统。最后一个分区为交换分区(Linux swap)。
注意 在Fedora 7及后继版本中,IDE和SCSI磁盘都采用/dev/sd?设备名,其中?代表一个字母(a、b或c等)。在RHEL5和较早版本的Fedora中,只有SCSI磁盘和U盘才使用/dev/sd?,IDE硬盘则使用/dev/hd?。
如有多个磁盘,fdisk -l会列出全部磁盘,除非明确指定要查看的磁盘:
- # fdisk -l /dev/sdb 列出某个磁盘的分区
使用fdisk命令时,直接指定某个磁盘且不带其他选项,即可操作指定磁盘:
- # fdisk /dev/sda 启动交互式fdisk会话,操作第一个磁盘
- Command (m for help): m 键入m列出下面的帮助信息
- Command action
- a toggle a bootable flag
- b edit bsd disklabel
- c toggle the dos compatibility flag
- 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
- p print the partition table
- q quit without saving changes
- s create a new empty Sun disklabel
- 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)
- Command (m for help):
显示提示符之后,即可使用上面列出的命令操作硬盘。具体来说,你可以使用p(显示结果与fdisk -l相同)、n(创建新分区)、d(删除现有分区)、l(列出已知文件系统类型)或t(更改分区文件系统类型)。下面举例说明几个fdisk命令:
- Command (m for help): d 准备删除一个分区
- Partition number (1-4): 4 键入要删除的分区号
- Command (m for help): n 创建新的磁盘分区
- First cylinder (1-4983, default 1): 1 设定起始柱面号(或直接回车)
- Last cylinder ... (default 4983): 4983 设定结束柱面号(或直接回车)
- Command (m for help): a 设置可引导分区
- Partition number (1-3): 1 键入可引导分区号
- Command (m for help): t 选择文件系统类型
- Partition number (1-3): 3 选择要修改的分区
- Hex code (type L to list codes): 82 将分区指定为交换分区
除非明确指定,否则新分区默认使用Linux ext3文件系统(83)。L命令与l命令等效,都能显示文件系统类型和十六进制代码。如上所示,键入82将分区指定为swap。其他比较常见的Linux分区包括Linux扩展(85)、Linux LVM(8e)、Linux软件raid(fd)和EFI/GTP(ee)。
Windows分区可以指定为HPFS/NTFS(7)、Windows 95 FAT32(b)、FAT16(6)或Windows 95 FAT32 LBA(c)。其他Unix类文件系统包括Minix(be或bf)、BSD/OS(e4)、FreeBSD(ee)、OpenBSD(ef)、NeXTSTEP(f0)、Darwin UFS(f1)和NetBSD(f4)。这些文件系统都有可能派上用场,比如需要恢复采用上述文件系统的备份存储介质时。
至此,分区表实际上并未做任何改动。如果十分确定之前的设置正确无误,只需键入w将上述改动写入分区表。准备放弃所有改动(或写入分区表之后退出)的话,可以直接键入q退出fdisk会话。
2. 用sfdisk复制分区表
使用sfdisk可以备份或复制磁盘分区表:
- # sfdisk -d /dev/sda > sda-table 将分区表备份至文件
- # sfdisk /dev/sda < sda-table 从文件恢复分区表
- # sfdisk -d /dev/sda | sfdisk /dev/sdb 在两个磁盘之间复制分区表
3. 用parted修改磁盘分区
和fdisk一样,parted也能列出或修改磁盘分区。此外,parted还具备其他一些实用功能。下面的示例使用parted列出分区:
- # parted -l
- Model: ATA FUJITSU MPG3409A (scsi)
- Disk /dev/sda: 41.0GB
- Sector size (logical/physical): 512B/512B
- Partition Table: msdos
- Number Start End Size Type File system Flags
- 1 32.3kB 206MB 206MB primary ext3 boot
- 2 206MB 39.5GB 39.3GB primary ext3
- 3 39.5GB 41.0GB 1536MB primary linux-swap
从命令输出可以看出磁盘采用的传统msdos磁盘标签(分区表)还是gpt标签。这里是msdos分区表。
键入parted,后面跟上要操作的存储设备名(如/dev/sda),便会以交互方式运行parted。只有一个存储设备的话,可以直接键入parted:
- # parted
- GNU Parted 1.8.6
- Using /dev/sda
- Welcome to GNU Parted! Type 'help' to view a list of commands.
- (parted)
交互方式使用parted时,可以键入整个命令,也可以只键入开头部分字符,并用Tab键补全整个命令(和bash shell里的做法相同)。这些命令一旦烂熟于心,只需键入一定数量的字母,能让parted猜到输入哪个命令即可。与CiscoiOS的用法一样:p代表print,mkl代表mklabel,不一而足。
警告 与fdisk不同,使用parted对分区所做的改动会立即生效,不用另行写入磁盘。总之,不要误以为直接退出parted就能撤销所有改动。
对于parted会话里的各个命令,既可以选择在输入命令时一起键入所有参数(例如mkpart logical ext3 10.7GB 17.0GB),也可以只输入命令本身(mkpart),parted会以交互方式指导随后的操作:
- (parted) mkpart 创建新分区
- Partition type? [logical]? primary
- File system type? [ext2]? ext3
- Start? 17GB
- End? 24GB
尽量不要使用mkpartfs,该命令无法正确创建ext3分区。可以用mkpart替代,创建一个ext3分区(如上所示),退出parted后用mkfs.ext3命令格式化分区。为创建新分区腾空间时,往往需要调整常见Linux分区的大小,示例如下:
- (parted) resize 2 调整分区大小
- Start? [1.2GB] 1.2GB
- End? [24GB] 10GB
警告 如果用的不是LVM,上述命令会破坏整个文件系统。
使用ntfsresize命令可以调整NTFS分区大小。在Fedora中,该命令隶属于ntfsprogs软件包。这个软件包还包含创建(mkfs.ntfs)、修复(ntfsfix)和获取NTFS分区相关信息(ntfsinfo)等命令
liunx 磁盘管理命令记录的更多相关文章
- linux常用命令之--磁盘管理命令
linux的磁盘管理命令 1.查看磁盘空间 df:用于显示磁盘空间的使用情况 其命令格式如下: df [-option] 常用参数: -i:使用inodes显示结果 -k:使用KBytes显示结果 - ...
- Linux下磁盘管理命令df与du
Linux下磁盘管理命令df与du 对磁盘进行查看和控制的两个linux命令,df和du. 一.du命令 首先看一下du的help说明: [root@misdwh opt]# du --help ...
- Linux中关机和磁盘管理命令
常用的关机命令 shutdown -h 关机 -r 重启 halt poweroff reboot 重启 logout 退出登录命令 磁盘管理命令 df -h 以1024进制计算最合适的单位显示磁盘容 ...
- linux基本命令之磁盘管理命令(ls,cd,pwd,mkdir,rmdir,clear, touch)
linux磁盘管理命令 1.ls(list)命令:列出目录内容. 格式:ls [参数][文件或目录] ls -a或-all表示列出所有文件和目录,以点开始的是影藏文件,例如,.bash_history ...
- Linux系统下常用的磁盘管理命令——du / df / fdisk / mount / xxd
之前使用虚拟机体验Linux操作系统的使用,一般使用默认的磁盘分区设置,也很少涉及磁盘管理操作,且总有删除重装作为后盾.在安装Ubuntu双系统后,在使用过程中遇到了磁盘分区不合理导致的/boot分区 ...
- 4.Liunx磁盘管理
1.磁盘管理:df .du 2.磁盘加载:mount. umount 3.磁盘分区:fdisk 1.df -h 查看硬件
- Linux磁盘管理命令
1.磁盘分割: fdisk [root@linux ~]# fdisk [-l] 装置名称 参数: -l :输出后面接的装置所有的partition内容.若仅有fdisk -l时, 则系统将会把整个系 ...
- LINUX之根目录介绍、普通目录创建、删除、复制、移动、权限管理命令记录
(一)Linux 系统目录结构 登录系统后,在当前命令窗口下输入命令:ls / /bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令. /boot:这里存放的是启动Linux时使用的 ...
- Linux命令(二十五) 磁盘管理命令(三) fdisk
一.fdisk命令介绍 fdisk 为Linux系统下的分区管理工具,类型windows下的 分区助手等工具软件.分过区装过操作系统的人都知道硬盘分区是必要和重要的.fdisk 的帮助如下所示: [r ...
随机推荐
- CLR 这些年有啥变化吗?
引言 首先想给初学者推荐下<CLR via C#>这本好书,做.Net开发的开发者应该都读一下.为避免广告之嫌,所以这里只提供豆瓣书评的链接. CLR 作为.Net 程序跨平台运行的载体, ...
- EC笔记:第4部分:22、所有成员都应该是private的
EC笔记:第4部分:22.所有成员都应该是private的 更简单的访问 用户不用记得什么时候该带上括号,什么时候不用带上括号(因为很确定的就要带上括号) 访问限制 对于public的成员变量,我们可 ...
- php 基础代码大全(不断完善中)
下面是基础的PHP的代码,不断完善中~ //语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. /* [命名规则] */ 常量名 类常量建议全大写,单词间用下划线 ...
- 软件工程(C编码实践篇)学习心得
孟繁琛 + 原创作品转载请注明出处 + <软件工程(C编码实践篇)>MOOC课程 http://mooc.study.163.com/course/USTC-1000002006 软件工程 ...
- TFS 生成配置
生成
- ASP.NET Core Loves JavaScript
前言 在 ASP.NET 团队的 Github 的主页上,有这样一个开源项目叫:"JavaScriptsServices",那么 什么是 JavaScriptsServices 呢 ...
- 《高性能javascript》一书要点和延伸(下)
第六章 快速响应的用户界面 本章开篇介绍了浏览器UI线程的概念,我也突然想到一个小例子,这是写css3动画的朋友都经常会碰到的一个问题: <head> <meta charset=& ...
- Vue.js——基于$.ajax实现数据的跨域增删查改
概述 之前我们学习了Vue.js的一些基础知识,以及如何开发一个组件,然而那些示例的数据都是local的.在实际的应用中,几乎90%的数据是来源于服务端的,前端和服务端之间的数据交互一般是通过ajax ...
- 图形数据库Neo4J简介
最近我在用图形数据库来完成对一个初创项目的支持.在使用过程中觉得这种图形数据库实际上挺有意思的.因此在这里给大家做一个简单的介绍. NoSQL数据库相信大家都听说过.它们常常可以用来处理传统的关系型数 ...
- C#中,switch case语句中多个值匹配一个代码块的写法
switch (num) { case 1: Response.Write("1"); break; case 2: case 3: Response.Write("2| ...