距离上次博客更新已经超过3个月呢,这段时间实在是懒啊!

0. 问题

去年年末老板吩咐我买了台工作站,硬盘配置是512G+4T,但没过多久,/dev/sda3满了!

$ df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       464G  464G    0G 100% /

不是因为程序运行的日志文件太多导致的,确确实实是由于数据储存太多,把464G的/dev/sda3区给装满了。我猜供应商应该把512G的硬盘做为了sda分盘,那我的4T空间应该还在啊。

$ sudo fdisk -l | grep Disk

Disk /dev/sda: 477 GiB, 512110190592 bytes, 1000215216 sectors
Disk /dev/sdb: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors

查看没有挂载的硬盘是否能被系统检测:

$ lsblk

果不其然,3.7T的sdb分盘应该就是了吧,可是该怎么用呐?

1. 概念

在操作之前,先清楚几个概念:

1)在Linux下对SCSI的设备是以sd命名的,第一个ide设备是sda,第二个是sdb,依此类推。一般主板上有两个SCSI接口,一共可以安装四个SCSI设备。主SCSI上的两个设备分别对应sda和sdb,第二个SCSI口上的两个设备对应sdc和sdd。一般硬盘安装在主SCSI的主接口上,所以是sda或者sdb,光驱一般安装在第二个SCSI的主接口上,所以是sdc。(IDE接口设备是用hd命名的,第一个设备是hda,第二个是hdb。依此类推。)可以用如下命令查看:

$ cd /dev
$ ll sd*

2)分区是用设备名称加数字命名的。例如sda1代表sda这个硬盘设备上的第一个分区。

3)每个硬盘可以最多有四个主分区(Primary Partion),一个扩展分区(extended partition),扩展分区可以再分为多个逻辑分区。主分区可以马上被使用但不能再分区,扩展分区必须再进行分区后才能使用,也就是说它必须还要进行二次分区。那么由扩充分区再分下去的是什么呢?它就是逻辑分区(Logical Partion),况且逻辑分区没有数量上限制。 对习惯于使用Dos或Windows的朋友来说,有几个分区就有几个驱动器,并且每个分区都会获得一个字母标识符,然后就可以选用这个字母来指定在这个分区上的文件和目录,它们的文件结构都是独立的,非常好理解。

4)在linux操作系统中, 挂载是指将一个设备(通常是存储设备)挂接到一个已存在的目录上。 我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上, 然后通过访问这个目录来访问存储设备。

5)分区是使用磁盘的基础,在分区完成后还需要对分区进行格式化,并把格式化后的文件系统挂载到Linux系统之后才能存储文件。

那现在目的很清楚了,要使用sdb盘,必须先将它分区,再挂载,就可以正常使用呢。

2. 分区

分区的目的就是便于管理,比如在Windows系统我们一般会分C盘,D盘,E盘等。

$ sudo fdisk /dev/sdb

Command (m for help): n
Select (default p): 
Partition number (1-4, default 1): 
First sector (2048-104857599, default 2048): 
Last sector, +sectors or +size{K,M,G} (2048-104857599, default 104857599): 
Command (m for help): w

使用fdisk命令选中/dev/sdb1设备进行添加磁盘操作,当弹出Command (m for help):时输入n进行新建分区操作,然后输入p进行新建主分区,如果只新建一个分区可以一路回车操作,最后输入w进行保存。此时磁盘已经分区,但是还没有文件系统,磁盘依然不能用。

3. 格式化

Linux中的文件系统也就是分区类型,在Windows中有NTEF,FAT32等,linux中常见的有Ext2、Ext3、Ext4、Linux swap、proc、sysfs、tmpfs等,可以通过mount命名查看当前已挂载的文件系统。

$ sudo mkfs.ext4 /dev/sdb1

将sdb1进行格式化,并写成Ext4类型的文件系统。

4. 挂载

sudo mkdir /data
sudo mount /dev/sdb1 /data

用来挂载的目录可以不为空,挂载了文件系统之后,原目录下的东西就会暂时的消失。并不是被覆盖掉,而是暂时的、隐藏了起来,等到新分割槽被卸除之后,则原目录原本的内容就会再次出来。

查看下:

df -HT

Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs   68G     0   68G   0% /dev
tmpfs          tmpfs      14G  1.4G   13G  10% /run
/dev/sda3      ext4      498G  287G  187G  61% /
tmpfs          tmpfs      68G  1.3M   68G   1% /dev/shm
tmpfs          tmpfs     5.3M  4.1k  5.3M   1% /run/lock
tmpfs          tmpfs      68G     0   68G   0% /sys/fs/cgroup
/dev/sda1      vfat      835M   29M  807M   4% /boot/efi
tmpfs          tmpfs      14G   95k   14G   1% /run/user/1001
/dev/sdb1      ext4      2.2T  176G  1.9T   9% /data

想要让系统启动后自动挂载,还要在 /etc/fstab 添加一行:

/dev/sdb1    /data    ext4    defaults    0 0

之后通过访问/data,就可以利用 /dev/sdb1 空间呐!

Linux 一切皆文件!

5. 卸载和删除分区

卸载和删除分区分别对应挂载和创建分区的逆过程。

$ sudo umount /dev/sdb1 # 卸载
# 或者
$ sudo umount /data # 卸载

$df -h

这儿卸载之后,数据并没有删除。

$ sudo fdisk /dev/sdb1

Command (m for help): p # 打印分区表
Command (m for help): d
Partition number (1-2): 1 # 删除对应的分区
Command (m for help): w # 保存

参考资料

a. Linux添加新磁盘.

b. Linux磁盘挂载、分区、扩容操作.