VirtualBox 安装Linux 虚拟机添加磁盘

本文详细介绍如何使用fdisk进行磁盘分区,包括查看分区信息、新建与删除分区等操作。同时,深入讲解mke2fs与mkfs命令用于格式化分区为不同文件系统的方法,如ext2、ext3等。最后,演示mount与umount命令实现文件系统的挂载与卸载过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
建立分区
fdisk 是一款强大的磁盘操作工具,来自util-linux软件包,使我们在文件系统管理过程中使用的极为频繁的一个指令,我们可以用它查看磁盘分区表以及分区结构,同时能够利用它进行磁盘分区。使用起来很简单,一般只有一个参数-l

fdisk [–l] 设备名称
=>fdisk最常用的一个参数,输出整个系统内的设备分区。若有多个设备,则可以输出指定设备的分区信息
[root@server ~]# fdisk –l
Disk /dev/sda: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
/dev/sda1 * 1 25 200781 83 Linux

在上面显示的数据中:
第一行sd表示系统使用的是SCSI硬盘,a则表示系统的第一块硬盘,如果还有第二块则是sdb,以此类推。,接下来就表示硬盘的容量了。
第二行 表示硬盘有255个磁头,63个扇区,2610个柱面,利用我们上面所学的磁盘容量计算公式,大家能不能自己算算这个硬盘的容量呢?
磁盘容量=2556338913 *512(Bytes).大家自己试试看。
第三行则显示每个柱面的大小。
下面各列的含义为:
Device:设备名称
Boot:表示否为开机引导模块。
Start:分区起始柱面。
End:分区结束柱面。
Blocks:以1K为单位的容量。
ID,System:表示这个分区内的文件系统式什么?不过这里通常只是一个提示而已,不见得一定代表此分区类型。
除了列出硬盘的分区信息,fdisk还可以用于系统分区。

fdisk /dev/sda =>fdisk直接接设备名,小心别接数字,不针对分区。

The number of cylinders for this disk is set to 38913.
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)

Command (m for help): =>在此处输入操作指令,输入?显示能够输入的指令
Command (m for help): ?
?: unknown command
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 =>改变分区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

Disk /dev/sda: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 25 200781 83 Linux
/dev/sda2 26 15323 122881185 83 Linux
/dev/sda3 15324 20422 40957717+ 83 Linux
/dev/sda4 20423 38913 148528957+ 5 Extended
/dev/sda5 20423 20932 4096543+ 82 Linux swap / Solaris
注意/dev/sda4,这是扩展分区,它其实相当于一个容器,在它下面包含了所有的逻辑分区,从前面的内容中我们了解到一个系统中最多只能有4个主分区。但是如果一个系统分了4个主分区的话,那么系统就固定下来了,不能再添加任何分区,所以一般系统都是3个主分区,一个扩展分区,也就是所谓的(3P+E)模式。下面我们来新建分区看看。

[root@server ~]# fdisk /dev/sda
The number of cylinders for this disk is set to 38913.
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)
    Command (m for help): n =>执行n添加新分区
    First cylinder (20933-38913, default 20933):
    Using default value 20933
    Last cylinder or +size or +sizeM or +sizeK (20933-38913, default 38913): +1000M
    =>这里自己随意,可以填柱面数,也可以直接填你想要的分区大小,一般都是直接指定大小,因为柱面数不怎么直观。如果不填直接回车的话就会把所有剩余的容量做成一个分区。
    Command (m for help): p =>再次查看分区信息,发现已经产生了一个新分区。
    Disk /dev/sda: 320.0 GB, 320072933376 bytes
    255 heads, 63 sectors/track, 38913 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Device Boot Start End Blocks Id System
    /dev/sda1 * 1 25 200781 83 Linux
    /dev/sda2 26 15323 122881185 83 Linux
    /dev/sda3 15324 20422 40957717+ 83 Linux
    /dev/sda4 20423 38913 148528957+ 5 Extended
    /dev/sda5 20423 20932 4096543+ 82 Linux swap / Solaris
    /dev/sda6 20933 21055 987966 83 Linux
    这时并没有写进内存中,如果你不想保存的话,直接按q退出即可。如果你想保存的话,输入w将改变保存。然后再退出程序。退出之后,在命令行执行partprobe指令,可以在不重启系统的情况下,将改变写进分区表,这个指令很重要,没执行的话分区不能算真正创建。这个指令没有参数,直接执行就行了。大家多练习练习,新建分区,删除分区。

Command (m for help): d =>输入d就会提示你要删除哪个分区,在下一行输分区号
Partition number (1-6): 6 =>刚刚新建的主分区
Command (m for help): p =>再次查看
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sda: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 25 200781 83 Linux
/dev/sda2 26 15323 122881185 83 Linux
/dev/sda3 15324 20422 40957717+ 83 Linux
/dev/sda4 20423 38913 148528957+ 5 Extended
/dev/sda5 20423 20932 4096543+ 82 Linux swap / Solaris分区6已经被删除了。

Command (m for help): q =>输入q不保存退出,因为后面我们要用到新建的分区6

	格式化分区

上面详细讲解了怎么新建一个分区,但这只是完成了创建文件系统的第一步,新建了分区之后,我们需要将分区格式化为需要的文件系统。主要用到mke2fs或mkfs指令。mke2fs用于创建ext2,ext3文件系统,默认情况下创建ext2文件系统,而mkfs可创建任何一种Linux支持的文件系统,大家在命令行输入mkfs然后按下两次[Tab],就可以看到。
mkfs [tab][tab]
 mkfs mkfs.ext2 mkfs.ext4 mkfs.msdos mkfs.vfat
 mkfs.cramfs mkfs.ext3 mkfs.ext4dev mkfs.ntfs mkfs.xfs
 这可以看到使用mkfs可以创建的文件系统,不同的系统支持的文件系统可能不同,大家不要奇怪怎么和书上的不一样啊!
下面说下具体的应用:
mke2fs [options] /dev/sda* ==>后面接需要格式化的分区
常用参数:
-b blocks-size,指定文件系统块大小,在1024,2048,4096中选择
-i 指定文件系统inode大小,也就是多少容量给予一个inode
-L 后面可以接卷标(label)名称,在后面说e2label是会再次介绍
-j mke2fs默认是创建ext2文件系统,加上-j参数后,会主动加入journal成为ext3.
现在给定需求:
 格式化刚刚新建的/dev/sda4分区,要求设定文件系统的卷标为shuangxing
 将block块大小指定为2K
 Inode大小指定为4K
 格式化成ext3文件系统
[root@server~]# mke2fs -L shuangxing -b 2048 -i 4096 -j /dev/sda6
mke2fs 1.39 (29-May-2006)
Could not stat /dev/sda6 — 没有那个文件或目录

The device apparently does not exist; did you specify it correctly?

发现报错了,系统没找到要格式化的设备,大家想想是怎么回事?明明已经分区了啊!
大家不知道有没有想到前面说得partprobe指令!
[root@server ~]# ls /dev/sda =>发现添加的分区并没有写进内存
sda sda1 sda2 sda3 sda4 sda5
[root@server ~]# partprobe =>执行一下partprobe
[root@server ~]# ls /dev/sda =>发现添加的分区出现了
sda sda1 sda2 sda3 sda4 sda5 sda6

发现了partprobe的神奇了吧!可以在不重启系统的情况下将改变写进分区表。

下面我们再来做格式的操作。
[root@server ~]# mke2fs -L shuangxing -b 2048 -i 4096 -j /dev/sda6
mke2fs 1.39 (29-May-2006)
Filesystem label=shuangxing =>指定文件系统标签
OS type: Linux
Block size=2048 (log=1) =>制定块大小
Fragment size=2048 (log=1)
247008 inodes, 493982 blocks
24699 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=506462208
31 block groups
16384 blocks per group, 16384 fragments per group
7968 inodes per group
Superblock backups stored on blocks:
16384, 49152, 81920, 114688, 147456, 409600, 442368

Writing inode tables: done
Creating journal (8192 blocks): done =>成功创建日志
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

使用mke2fs的时候要特别注意-j这个参数,没加的话就不会格式化为ext3文件系统。在一般情况下,这个指令用的很少,笔者不建议使用,建议使用下面说的mkfs。

[root@server ~]# mkfs [-t 文件系统格式] 设备文件名
mkfs可用的参数很少,一般都是只加-t参数,指定要格式化的分区的文件系统格式,有ext2,ext3,ext4,vfat等等。也可以不加任何参数直接使用mkfs.ext2,mkfs.ext3这样操作。例如我想将上面格式化过的/dev/sda4用mkfs在格式化一遍,成为ext3文件系统。
[root@localhost ~]# mkfs -t ext3 /dev/sda6 =>输出信息很长,这里就不累赘了,大家自己试试。
[root@localhost ~]# mkfs.ext3 /dev/sda4 =>与上一条指令效果一致
默认情况下的块大小为4K,
mkfs使用起来非常方便,建议大家尽量使用mkfs而不是mke2fs。
dumpe2fs
用途:显示 ext2/ext3文件系统信息
用法:dumpe2fs [ -bfhixV ] [ -ob superblock ] [ -oB blocksize ] device

[root@server ~]# dumpe2fs /dev/sda1|less
dumpe2fs 1.39 (29-May-2006)
Filesystem volume name: /1 注:卷标为/1
Last mounted on:
Filesystem UUID: 9c2a6086-3305-4709-a442-c27be9cb57d2
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_file
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 5124480
Block count: 5120718
Reserved block count: 256035
Free blocks: 2684471
Free inodes: 4946305
First block: 0
Block size: 4096 注:块大小为4096字节
Fragment size: 4096
Reserved GDT blocks: 1022
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 32640
Inode blocks per group: 1020
Filesystem created: Tue Aug 4 23:59:44 2009
Last mount time: Mon Sep 28 16:35:32 2009
Last write time: Mon Sep 28 16:35:32 2009
Mount count: 12
Maximum mount count: -1
Last checked: Tue Aug 4 23:59:44 2009
Check interval: 0 ()
……略……

挂载/卸载文件系统
现在只剩下最后一步了,将文件系统装载起来就可以使用了。这里我们用到mount指令。
Mount命令: 挂载文件系统
基本用法: mount 设备名 挂载点 [options]
常用参数:
-t: 指定文件系统
-o: 后面可接的参数有很多,下面列出常用的
Mount –o remount,ro /dev/sda6 /shuangxing =>以只读的方式重新挂载文件系统
Mount –o remount,rw /dev/sda6 /shuangxing =>以读写的方式重新挂载文件系统。
-o后还可以接如下参数:
ro, rw: 挂载文件系统成为只读(ro) 或可擦写(rw)
async, sync: 此文件系统是否使用同步写入 (sync) 或异步 (async) 的内存机制。
预设为 async。
auto, noauto: 允许此 partition 被以 mount -a 自动挂载(auto)
dev, nodev: 是否允许此 partition 上,可建立设备文件? dev 为可允许
suid, nosuid: 是否允许此 partition 含有 suid/sgid 的文件格式?
exec, noexec: 是否允许此 partition 上拥有可执行 binary 文件?
user, nouser: 是否允许此 partition 让任何使用者执行 mount ?一般来说,
上面的这些参数一般不用自己添加的,采用系统默认的最好。下面我们看下Mount的具体应用。
前面新建的/dev/sda6分区,已经格式化并且检验了,现在我想将其挂载使用。
[root@server ~]# mkdir /shuangxing =>先建立一个挂载点,也可用系统已有的
[root@server ~]# mount /dev/sda6 /shuangxing =>直接挂载,很简单吧!
[root@server ~]# mount =>直接输入mount就可以查看整个系统挂载所有情况
/dev/sda2 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda3 on /home type ext3 (rw)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
none on /proc/fs/vmblock/mountPoint type vmblock (rw)
/home/lth/software/iso/rhel5u5.iso on /var/ftp/iso type iso9660 (rw,loop=/dev/loop0)
/dev/sda6 on /shuangxing type ext3 (rw) =>/dev/sda6已经以读写的方式挂载上了

还可以使用mount –a 将/etc/fstab中所有未挂载的分区挂载起来。
但是现在有人说我想将文件系统变为只读的,该怎么办呢?是不是要先将文件系统卸载,然后在挂载?不需要的,我们可以在不卸载文件系统的情况下将文件系统重新挂载并指定参数。使用上面提到的Mount –o remount,ro /dev/sda6 /shuangxing指令就能达到效果,大家自己动手试试。
到此为止一个完整的文件系统就创建完成了,大家都多动动手练习一下。下面再介绍一些相关的知识,刚刚我们使用mount挂载了一个分区,然后用mount指令就可以查看到整个系统的所有挂载情况,那么这些信息就是存储在/etc/mtab里面的,每mount一个分区,里面就会增加一条记录。

[root@server ~]# cat /etc/mtab =>查看一下文件
/dev/sda2 / ext3 rw 0 0
proc /proc proc rw 0 0
……中间省略
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
none /proc/fs/vmblock/mountPoint vmblock rw 0 0
/home/lth/software/iso/rhel5u5.iso /var/ftp/iso iso9660 rw,loop=/dev/loop0 0 0
/dev/sda6 /shuangxing ext3 rw 0 0
文件系统能够挂载上,自然也能卸载,这里介绍umount指令,umount指令使用很简单。
Umount命令:卸载文件系统
基本用法: umount 挂载点
常用参数: -a 卸载系统所有的文件系统,基本上没人会去用这个参数
我们看看具体情况。
[root@server ~]# umount /shuangxing/ =>卸载文件系统
[root@server ~]# mount
/dev/sda2 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda3 on /home type ext3 (rw)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
none on /proc/fs/vmblock/mountPoint type vmblock (rw)
/home/lth/software/iso/rhel5u5.iso on /var/ftp/iso type iso9660 (rw,loop=/dev/loop0)
文件系统已经被卸载了
或许有的同学就会问了,我现在是将文件系统挂载起来了,但是我下次开机它还在么?大家关机的时候仔细看下应该都会看到umounting…之类的。如果这样的话,那我每次开机都要重新Mount不是很麻烦?这里我们介绍一下另外一个文件/etc/fstab。
如果你想要新创建的文件系统能够做到开机自动,就可以将其加入到/etc/fstab文件
[root@server ~]# cat /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/home /home ext3 defaults 1 2
LABEL=/boot1 /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-sda5 swap swap defaults 0 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值