linux服务器新添加一块硬盘,可以直接将盘格式化挂载就能用,比如挂载在/usr/local目录,但是这样有一个弊端,就是如果这一块磁盘满了,后续想要扩容的话,不能继续挂载这个/usr/local挂载点上,对扩容造成一定的麻烦,为此我们建议采用lvm的方式,这样可以支持动态扩容磁盘。下面介绍详细的操作方式:
1、查看当前分区信息
[franky@www.frank.com ~]$ sudo fdisk -l #注意需要root权限
Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 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 label type: dos
Disk identifier: 0x0001598a
Device Boot Start End Blocks Id System
/dev/vda1 2048 8390655 4194304 82 Linux swap / Solaris
/dev/vda2 * 8390656 83879935 37744640 83 Linux
# 下面这段信息为新加的500G磁盘
Disk /dev/vdb: 536.9 GB, 536870912000 bytes, 1048576000 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 label type: dos
Disk identifier: 0x9eec985f
2、对该磁盘进行分区
[franky@www.frank.com ~]$ sudo fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Partition number (1-4, default 1):
First sector (2048-1048575999, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-1048575999, default 1048575999):
Using default value 1048575999
Partition 1 of type Linux and of size 500 GiB is set
Command (m for help): w
上面操作步骤解释如下:
- 输入:n【表示创建一个新的分区(new的意思)】
询问我们是要创建主分区还是扩展分区,主分区最多只能创建4个,如果创建了扩展分区那么扩展分区需要占用一个主分区。
注意: 扩展分区从5开始,无论主分区有没有达到4个。 - 输入:p【表示创建一个基本分区(p是基本分区,e是扩展分区)】
- 选择分区编号,1~4,默认使用1,直接按回车即可。
- 选择分区起始点,使用默认即可,直接按回车。
- 选择分区终点,使用默认即可,直接按回车
- 分区完成,输入w保存退出。
- 输入m查看帮助,帮助信息如下:
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 :特殊功能 ```
3、更改分区编号
[franky@www.frank.com ~]$ sudo fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
...
我们需要将分区类型改成linux lvm卷才能创建lvm,通过下面4步完成:
- Command (m for help): t #更改分区编号
Selected partition 1 - Hex code (type L to list all codes): L #查看所有编号
- Hex code (type L to list all codes): 8e #将分区类型改成LinuxLVM
Changed type of partition ‘Linux LVM’ to ‘Linux LVM’ - Command (m for help): w #写入磁盘(write)
操作如下图:
4 、pv、vg和lv的关系:
- 一个硬盘分区组成一个pv(物理卷)
- 一个或者多个pv组成一个vg(卷组)
- 一个vg可以划分出多个lv(逻辑卷)
5、创建pv
[franky@www.frank.com ~]$ sudo pvcreate /dev/vdb1
注意:这里是为磁盘分区vdb1创建pv,千万别写成vdb了。
6、创建vg
[franky@www.frank.com ~]$ sudo vgcreate vg01 /dev/vdb1 #vg01为逻辑卷组名称
7、创建lv
[franky@www.frank.com ~]$ sudo lvcreate -L 200G -n lv_data vg01
- -L:后面是要分给lv的大小,注意lv会耗费不到100MB,因此要-L后面跟的要小于1TB。
- -n:新建一个名字为lv_data 的lv
8、格式化lv
[franky@www.frank.com ~]$ sudo mkfs.ext4 /dev/vg01/lv_data
9、磁盘挂载
9.1、开机自动挂载磁盘
在/etc/fstab文件最后,加入一行如下代码:
[franky@www.frank.com ~]$ sudo echo '/dev/vg01/lv_data /data ext4 defaults 0 0' >> /etc/fstab
这段代码解释如下:
第一列:要挂载的磁盘
第二列:挂载点
第三列:文件类型
第四列:挂载选项,详细参考man mount. 下面列出一些常用的选项:
auto: 系统自动挂载,fstab默认就是这个选项
ro: read-only
rw: read-write
defaults: rw, suid, dev, exec, auto, nouser, and async.
第五列:为dump选项,设置是否让备份程序dump备份文件系统,0为忽略,1为备份。
第六列:为fsck选项,告诉fsck程序以什么顺序检查文件系统,0为忽略。
9.2、重新挂载
[franky@www.frank.com ~]$ sudo mkdir /data
[franky@www.frank.com ~]$ sudo mount -a
10、检查是否挂载成功
[franky@www.frank.com ~]$ sudo df -h
11、扩容
- 添加新磁盘,参考新磁盘建LVM
- 用原磁盘剩余容量扩容
聪明的你可能已经发现,我们刚刚新添加了一个500G的磁盘,但是我们只用了200G,我们可以通过下面这几步扩容:[franky@www.frank.com ~]$ sudo lvextend -L +100G /dev/vg01/lv_data [franky@www.frank.com ~]$ sudo resize2fs /dev/vg01/lv_data [franky@www.frank.com ~]$ df -h
12、删除pv
如果前面你创建的pv您不满意,还可以删除,但是/data目录下的所有数据将会丢失。
- 卸载LV
[franky@www.frank.com ~]$ sudo umount /data
- 删除pv
[franky@www.frank.com ~]$ sudo pvremove /dev/sdb1
- 确认pv是否成功删除
[franky@www.frank.com ~]$ sudo pvdisplay