说明:申请的服务器均为客户通过模板的方式分配,分配默认分为两个磁盘sda和sdb,sda默认挂接到根目录,sdb未进行挂接。在使用过程中,需要对sdb进行挂接。
linux的磁盘和windows是有所区别的,磁盘必须先分区,挂接到目录后才可用
一、直接挂接到新目录
对于磁盘,可以创建新目录并直接挂接磁盘,对于后续系统生产的数据存储到创建的目录即可。
1、通过命令查看设备信息,这里只是列出几个命令的简单用法,对于命令其他参数可以查看帮助或者网上查询。
查看分区和磁盘,命令:lsblk
查看存储情况,命令:df –kh
查看磁盘情况,命令:fdisk –l
从上面信息可以看出,服务器一共挂接了两个sd磁盘(sda和sdb),sda进行了两个分区,分别为sda1和sda2,sda2挂接到/目录(即根目录)。sdb磁盘未进行分区以及目录挂接,所以没有真正使用。
扩展:
sd,hd表示硬盘, a表示第一块盘,b表示第二块,以此类推, 1表示硬盘上的第一个分区。
sd是Serial ATA Disk ,表示硬盘是scsi,SATA串行接口,本示例的磁盘均为sd类型。另外还有hd等,hd是 hard disk,表示硬盘是IDE(也叫ATA)并行接口,U盘也是属于scsi,所以U盘也是sda
一块硬盘里面最多有四个主分区(Windows和Linux中都是),如果想要更多的分区,一定是将其中一个分区作为扩展分区(拓展分区最多一个),然后在扩展分区的基础上进行分区,称为逻辑分区。 第一个逻辑分区的分区号一定是从5开始,比如说sda5,是第一块SCSI硬盘上的第一个逻辑分区。
在逻辑上所有的目录(包括目录下的子目录)都在最高级别的目录“/”下,根(“/”)目录是linux系统中所有目录的起始点(顶点),根下面的目录及目录的子目录是一个有层次的树状结构很像一颗倒挂着的一颗大树,这和Windows系统按照硬盘分区(C:D:E:)分割的目录结构是不同的(windows系统可以理解为多棵树,每个分区就是一颗独立的小树)linux系统中的这些不同的目录也是很特别的,不同的目录可以分布在不同的硬盘分区以及不同的硬盘设备上。这是windows的系统难以做到的,windows系统的不同分区都是独立存在的。
/usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理解为C:/Windows/System32。
/usr/local:用户级的程序目录,可以理解为C:/Progrem Files/。用户自己编译的软件默认会安装到这个目录下。
/opt:用户级的程序目录,可以理解为D:/Software,opt有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接rm -rf掉即可。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用。
2、磁盘分区,命令:fdisk /dev/sdb,对sdb进行分区。
输入分别是:
n:新建一个分区;
p:建立主分区;
1:指建立第一个分区;
两次回车:以整个磁盘大小创建分区;
当然也可以进行分区删除等操作,具体参数见帮助。
3、分区格式化,命令:mkfs.ext4 /dev/sdb1
格式化新建立的sdb1分区并写入文件系统。
4、挂在磁盘到指定目录(这里挂接到新目录)
mkdir /data
mount /dev/sdb1 /data
创建新的目录/data,并将sdb1分区与/data目录实现挂接。这样就完成了磁盘挂接的工作,后续可以正常使用了。
5、设置开机自动挂载
以上只是临时挂载,建议设置为开机自动挂载,否则需要每次重启后进行手动挂载。
vim /etc/fstab
/dev/sdb1 /data ext4 defaults 0 0
修改后通过cat /etc/fstab命令进行确认。
如果允许的情况下,建议重启服务器查看自动挂载是否生效。
这样整个过程便完成了,下面是挂接之后通过命令查询的相关信息,可以对挂载情况进行确认。
二、扩展现有目录(未测试)
对于已经使用的系统,如果遇到某个目录空间使用率较高,可以使用新磁盘扩展现有目录。
如果你要用来挂载的目录里面并不是空的,那么挂载了文件系统之后,原目录下的东西就会暂时的消失。并不是被覆盖掉,而是暂时的隐藏了起来,等到新分区被卸除之后,则原目录原本的内容就会再次出来。如果要永久挂载已有目录,可以在新硬盘创建文件系统后,先挂载到一个临时目录,然后把要扩展的目录复制到这临时目录,然后删除要扩展的目录,再卸载临时挂载点,重新挂载到要扩展的目录上。
比如要扩充 /var目录:
1.、在创建好文件系统后 新建临时挂载点 /data
mkdir /data
2、将/dev/sdb1挂载到/data下
mount /dev/sdb1 /data
3、拷贝/var下的所有内容到新的硬盘
cp -pdr /var/* /data
或在/var 目录下执行:find . -depth -print | cpio - pldvm /temp
删除当前/var目录下的内容rm -rf /var/*
4、重新挂载硬盘到/var目录
umount /dev/sdb1
mount /dev/sdb1 /var
过程中若提示磁盘忙,使用fuser找出将正在使用磁盘的程序并结束掉;
fuser -m -v /var
fuser -m -v -i -k /var
5、删除临时目录
rm -rf /data
6、设置开机自动挂载,以上只是临时挂载,还需设置为开机自动挂载
vim /etc/fstab
/dev/sdb1 /var ext4 defaults 0 0
对于磁盘扩充补充:
前提要求:扩展的分区之后没有其它分区并且有剩余空间可用。此方式建议谨慎使用。
操作步骤:
1)首先查看硬盘使用情况及文件系统类型:df -h
2)卸载数据盘:umount /dev/sdb1
3)删除sdb上的分区并重新分区
fdisk /dev/sdb
输入d,1表示删除第一个分区
输入n,其余默认即可,创建新分区,默认为使用磁盘上所有空间。
4)通知系统重读分区表:partprobe /dev/sdb
5)重新挂载:mount /dev/sdb1 /data
lsblk可以看到sdb1为450G;df -TH /dev/sdb1看到大小仍为350G,因为前350G的扇区上之前是做过文件系统的,重新分区后新加进来的这100G的扇区上是没有文件系统的,df命令看的是分区的使用情况。
6)根据文件系统类型扩展文件系统:
ext文件系统使用resize2fs /data命令,xfs文件系统使用xfs_growfs命令,都是将文件系统扩展至物理分区大小。也可以使用fsadm命令手动调整文件系统大小(这在缩减分区空间时比较有用)。
7)再次查看验证分区大小,发现目录已经扩容:df -TH /data/
如果一个目录需要同时访问两个分区,则必须挂载到不同的节点上,然后通过其他办法访问到两个,比如你想在/mnt/a 访问两个磁盘的内容(两个磁盘内容不会覆盖)。
可以通过链接的方式实现,分别挂载两个盘到 /mnt/a_1
和/mnt/a_2
,然后把两个目录中的所有内容软连接到/mnt/a
下
mkdir -p /mnt/a mkdir -p /mnt/a_1 mkdir -p /mnt/a_2 mount -t auto /dev/sdXX1 /mnt/a_1 mount -t auto /dev/sdXX2 /mnt/a_2 cd /mnt/a ln -s ../a_1/* ./ ln -s ../a_2/* ./
对于直接挂接的方式,设置较为简单,只需要几步即可完成操作,但是在后续空间动态扩展以及一个目录挂接到多个磁盘分区的方式较为困难,我们可以通过LVM管理的方式来实现,请参考《CentOS7磁盘挂接 二(LVM逻辑卷管理)》
因为刚接触linux不久,暂时只了解到以上的一些方法,后续会根据不断的学习进行补充完善!如果文中有表述不对的地方,还望大家指正。