当Ubuntu系统磁盘空间不够用时,需要为它增加新的磁盘,但是新插入的磁盘并没有分区,因此在系统中无法使用。所以我们需要为该磁盘进行分区、格式化及挂载。在Linux中所有的分区都是挂载在某个目录下的,如 /home、/opt 等。
1.查看系统中读取到的硬盘的使用情况
执行 sudo fdisk -l
root@root:~# sudo fdisk -l
sudo: unable to resolve host root
Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00014e5b
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 104855551 52426752 83 Linux
Disk /dev/sdb: 107.4 GB, 107374182400 bytes
43 heads, 44 sectors/track, 110843 cylinders, total 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xce49f3ae
Device Boot Start End Blocks Id System
/dev/sdb1 2048 209715199 104856576 83 Linux
Disk /dev/sdc: 53.7 GB, 53687091200 bytes
22 heads, 22 sectors/track, 216647 cylinders, total 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x25face5e
Device Boot Start End Blocks Id System
/dev/sdc1 2048 104857599 52427776 83 Linux
Disk /dev/sdd: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdd doesn't contain a valid partition table
root@root:~#
Disk /dev/sdd doesn’t contain a valid partition table.
由此可见,/dev/sda、/dev/sdb、/dev/sdc 的分区各有一个,分别为 /dev/sda1、/dev/sdb1、/dev/sdc1,但是 /dev/sdd 并没有分区,所以我们需要为该磁盘进行分区、格式化及挂载。
或者
执行 lsblk
root@root:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
└─sda1 8:1 0 50G 0 part /
sdb 8:16 0 100G 0 disk
└─sdb1 8:17 0 100G 0 part
sdc 8:32 0 50G 0 disk
└─sdc1 8:33 0 50G 0 part /opt
sdd 8:48 0 30G 0 disk
sr0 11:0 1 1024M 0 rom
root@root:~#
同样可以看出,/dev/sda、/dev/sdb、/dev/sdc 的分区各有一个,分别为 /dev/sda1、/dev/sdb1、/dev/sdc1,但是 /dev/sdd 并没有分区。
2.对新添加的磁盘进行分区
Linux磁盘分区分为“主分区”、“扩展分区”和“逻辑分区”三种类型,一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多1个。且主分区+扩展分区总共不能超过4个。
执行 fdisk /dev/sdd
root@root:~# fdisk /dev/sdd
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x54f33377.
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)
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): n #输入n回车来创建一个新的分区:
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p #其中p代表主分区、e代表扩展分区,我们输入p创建一个主分区
Partition number (1-4, default 1): 1 #需要输入1-4的分区号,形成的分区盘符的名字为/dev/sdd1-/dev/sdd4,选择默认的1
First sector (2048-62914559, default 2048): #确定该分区的起始扇区,直接回车选择默认就好
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-62914559, default 62914559): 30000000 #确定该分区的终止扇区,如果只想为该磁盘分配一个分区,则直接回车选择默认就可。若想分配多个分区,则输入默认以内数字为终止扇区,这里我们填写30000000
Command (m for help): w #此时输入w回车,就可以保存我们创建的分区信息
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
root@root:~#
我们可以按照以上步骤,在 /dev/sdd 磁盘上再创建一个 /dev/sdd2 分区。
创建完成后,执行 sudo fdisk -l
命令查看。
root@root:~# sudo fdisk -l
...
Disk /dev/sdd: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x54f33377
Device Boot Start End Blocks Id System
/dev/sdd1 2048 30000000 14998976+ 83 Linux
/dev/sdd2 30000001 62914559 16457279+ 83 Linux
root@root:~#
由上所示,我们已经为 /dev/sdd 磁盘创建了一个名为 /dev/sdd1 的分区和 /dev/sdd2 的分区。
3.对创建的分区格式化
创建完分区以后还需要将其格式化为具体的文件系统类型,此处我们将其格式化为ext4类型。
ext4文件系统格式化
1.功能:磁盘分区完毕后,要进行文件系统的格式化。格式化其实就是创建文件系统。
2.命令格式
mkfs.ext4 硬盘名称
或
mkfs –t ext4 硬盘名称
系统都帮我们做好了ext4的默认值,只需要知道硬盘的分区名称即可
3.举例说明
mkfs.ext4 /dev/sdd1
或
mkfs -t ext4 /dev/sdd2
root@root:~# mkfs.ext4 /dev/sdd1
mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
938400 inodes, 3749744 blocks
187487 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=3841982464
115 block groups
32768 blocks per group, 32768 fragments per group
8160 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
root@root:~# mkfs -t ext4 /dev/sdd2
mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1030176 inodes, 4114319 blocks
205715 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4215275520
126 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
root@root:~#
4.硬盘挂载
将分区挂载到文件系统目录上
1.先创建一个目录:
mkdir /home/test1
mkdir /home/test2
2.然后把格式化的硬盘挂载上去:
mount /dev/sdd1 /home/test1
mount /dev/sdd2 /home/test2
既然是挂载还可以卸载:umount /home/test1
3.执行df -h
命令查看:
root@root:~# mkdir /home/test1
root@root:~# mkdir /home/test2
root@root:~# mount /dev/sdd1 /home/test1
root@root:~# mount /dev/sdd2 /home/test2
root@root:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 7.9G 4.0K 7.9G 1% /dev
tmpfs 1.6G 1.2M 1.6G 1% /run
/dev/sda1 50G 6.8G 40G 15% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 5.0M 0 5.0M 0% /run/lock
none 7.9G 144K 7.9G 1% /run/shm
none 100M 24K 100M 1% /run/user
/dev/sdc1 50G 41G 6.5G 87% /opt
/dev/sdd1 14G 36M 14G 1% /home/test1
/dev/sdd2 16G 44M 15G 1% /home/test2
root@root:~#
上述使用mount完成的磁盘挂载,重启后,挂载失效。如果想要永久挂载,要编辑 /etc 目录下的fstab文件:
1.打开fstab文件
vim /etc/fstab
2.在最后添加两句:
/dev/sdd1 /home/test1 ext4 defaults 0 0
/dev/sdd2 /home/test2 ext4 defaults 0 0
3.wq
保存退出。
4.reboot
命令重启后,df -h
命令查看,可见挂载未失效,挂载信息已经自动完成。
/dev/sdd1 /home/test1 ext4 defaults 0 0 其中:
第1列是设备名或者卷标;
第2列是挂载点(也就是挂载目录);
第3列是所要挂载设备的文件系统或者文件系统类型;
第4列是挂载选项,通常使用defaults就可以;
第5列设置是否使用dump备份,置0为不备份,置1,2为备份,但2的备份重要性比1小;
第6列设置是否开机的时候使用fsck检验所挂载的磁盘,置0为不检验,置1,2为检验,但置2盘比置1的盘晚检验。