Linux - 系统 - 存储管理

吴宏东 - 记于2018年06月22日 - 博客 https://segmentfault.com/u/wu...node

Linux 存储管理

磁盘分区

硬盘分类

机械硬盘:主要由盘片、磁头、转轴等机械部件组成;
固态硬盘:主要由固态电子存储芯片阵列制成,无机械部件;linux

硬盘接口

SCSI:应用于商业级关键数据大容量存储;
SAS:支持SATA磁盘,性价比最高,业界公承认以取代SCSI;
SATA:应用于非关键数据的大容量存储;docker

磁盘分区

查看当前系统有多少个硬盘以及各有多少个分区。segmentfault

[root@master1 ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sdb  /dev/sdb1

以上输出结果,可知系统有2个硬盘分别是sda和sdb,硬盘sda有3个分区,sda一、sda二、sda3;
使用fdisk分区工具进行磁盘分区centos

[root@master1 ~]# fdisk /dev/sda
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): p

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 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 label type: dos
Disk identifier: 0x000cdd4e

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448    17133567     8258560   82  Linux swap / Solaris
/dev/sda3        17133568   209715199    96290816   83  Linux

以上输出结果,可知硬盘空间有107.4 GB,分区sda1的文件系统类型是Linux,接着能够输入如下各类参数代码:
[n] 建立一个新的分区,p为主分区,e为扩展分区,分区号和起始扇区按默认回车;
[t] 更改分区类型,选择分区号,输入类型代码,Linux=83,Linux LVM=8e,Linux swap/solaris=82;
[d] 删除分区;
[p] 不保存,退出;
[w] 保存退出;
若是更新了分区表,须要通知系统内核从新读取分区表。bash

partprobe /dev/sda;

逻辑卷

基本概念

[PV] 物理卷,能够是磁盘或分区,处于最底层;
[VG] 卷组,一个或多个物理卷组成;
[LV] 逻辑卷,卷组切出来的空间,能够伸缩;
[PE] 物理区域,建立物理卷时指定,默认为4M;
[LE] 逻辑区域,与PE一致;app

管理

# 查看全部物理卷、卷组、逻辑卷列表
pvs;
vgs;
lvs;
# 建立2个物理卷
pvcreate /dev/sdb2 /dev/dsb3;
# 建立一个名为data的卷组,添加2个物理卷
vgcreate data /dev/sdb2 /dev/dsb3;
# 在data卷组建立名为docker大小为100G的逻辑卷
lvcreate -L 100G -n docker data;
# 查看卷信息
pvdisplay /dev/sdb2;
vgdisplay data;
lvdisplay /dev/data/docker;
# 卷组缩减和扩展
vgreduce data /dev/dsb3;
vgextend data /dev/dsb3;
# 扩展、缩减逻辑卷 /dev/vg名/lv名
lvextend -L +50G /dev/data/docker;
lvreduce -L -50G /dev/data/docker;

文件系统

命令 mkfs

# 在第二块硬盘第一个分区建立xfs文件系统
mkfs -t xfs /dev/sdb1;
mkfs.xfs /dev/sdb1;
# 在卷组data上的docker逻辑卷建立xfs文件系统
mkfs -t xfs /dev/data/docker;

命令 mount

在磁盘分区或逻辑卷上建立文件系统后,就能够使用mount挂载逻辑卷到系统的目录;ide

# 查看系统已经挂载的文件系统
mount;
# 将逻辑卷/dev/data/docker挂载到系统目录/opt/docker
mmount /dev/data/docker /opt/docker;
# 编辑/etc/fstab文件,增长挂载点,以便系统启动后可以自动挂载
vi /etc/fstab;
# 使挂载生效
mount -a;

命令 umount

卸载文件系统,格式:umount <设备名或挂载点>工具

# 查看哪些进程在使用挂载点
fuser -cu /opt/docker;
# 杀死这些进程
fuser -ck /opt/docker;
# 卸载
umount /dev/data/docker;
umount /opt/docker;

磁盘限额

方式一:限制用户或组的inode(文件数);
方式二:限制用户或组的磁盘空间;
Linux默认使用的文件系统是xfs,因此使用xfsprogs的xfs_quota软件包提供设置;code

命令 xfs_quota

# 启动文件系统的quota挂载选项
vi /etc/fstab;
# 在defaults后追加uquota,gquota,用逗号隔开,如
# /dev/mapper/centos-root / xfs defaults,uquota,gquota 0 0
# 从新挂载文件系统,不能使用-o remount,由于xfs系统必须在第一次挂载时才启用quota
umount /;
mount /;
# 给用户wuhd设置容量软限制50M,应限制60M,文件数软限制2000,硬限制2500
xfs_quota -x -c 'limit -u bsoft=50M bhard=60M isoft=2000 ihard=2500 wuhd' /;
# 查看容量限额设置
xfs_quota -c 'quota -uv wuhd' /;
# 查看文件数限额设置
xfs_quota -c 'quota -i -uv wuhd' /;