存储设备

设备文件名

系统按照检测到的磁盘顺序来决定设备文件名,与插槽号无关。

USB 磁盘:/dev/sdc

实体磁盘 /dev/sd[a-p]

分区 /dev/sda[1-128]

虚拟机 /dev/vd[a-p]

软 RAID /dev/md[0-128]

LVM /dev/VGNAME/LVNAME

查看设备信息

查看 SCSI 设备信息

~]$ lsscsi     
[0:0:0:0]    disk    VMware,  VMware Virtual S 1.0   /dev/sda
[2:0:0:0]    cd/dvd  NECVMWar VMware IDE CDR10 1.00  /dev/sr0

smartctl

Self-Monitoring,Analysis and Reporting Technology System,SMART

用于监测 ATA 和 SCSI 接口的磁盘,被监测的磁盘必须支持 SMART 协议

smartd 是 SMART 的守护进程,它使用 smartctl 命令来监测磁盘。

查看完整磁盘信息

$ smartctl -a /dev/sda

SCSI 磁盘进行后台检测

$ smartctl -t short /dev/sda

分区

查看分区

查看分区简明信息

# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 465.8G  0 disk
├─sda1   8:1    0     1G  0 part /boot
├─sda2   8:2    0   9.3G  0 part [SWAP]
├─sda3   8:3    0  74.5G  0 part /
├─sda4   8:4    0     1K  0 part
├─sda5   8:5    0 111.8G  0 part /home
└─sda6   8:6    0 269.2G  0 part

查看磁盘和分区详细信息

# fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00023728

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2148351     1073152   83  Linux
/dev/sda2         2148352    21680127     9765888   82  Linux swap / Solaris
/dev/sda3        21680128   177930239    78125056   83  Linux
/dev/sda4       177932286   976771071   399419393    5  Extended/dev/sda5       177932288   412305407   117186560   83  Linux
/dev/sda6       412307456   976771071   282231808   83  Linux

分区管理

分区准备工作

  • 查看磁盘的 设备文件名lsblk
  • 查看 分区表类型parted
  • MBR 分区表使用 fdisk,GPT 分区表使用 gdisk

gdisk

gdisk 分区后不会即时生效,按 q 键,取消所有操作;按 w 键,立即应用操作。

gdisk 要接 磁盘名,而不是分区名。

新增分区
  1. l 查看分区类型对应的 Hex code 并记录
  2. n 新增分区
  3. Partition number,分区号,默认
  4. First sector,起始扇区,默认
  5. Last sector,结束扇区:+1G、+500M、+100K
  6. Hex code or GUID:Linux 8300,Linux LVM 8e00,Windows 0700
  7. p 查看当前计划的所有操作,仔细检查 分区大小文件系统类型
  8. 确认无误后,按 w 确认执行分区操作
  9. 退出 gdisk
更新分区表

刚刚创建完分区,cat /proc/partitions 会看到系统并未立即更新分区表。

手动更新分区表:

$ partprobe -s

/dev/vda: gpt partitions 1 2 3 4 5 6

删除分区

如果要删除正在使用中的分区, 必须先将其卸载。

fdisk

fdiskgdisk 使用的方式几乎一样。

fdiskgdisk 区别:

  • 有时会使用 柱面 作为分区的最小单位
  • 分区是有限制的:主分区、扩展分区、逻辑分区

parted

parted 可以用 一行命令完成分区,无需用户干预,因此特别适合在脚本中使用。

语法:

parted [设备] [命令 [参数]]

parted mkpart [primary|logical|extended] [ext4|vfat|xfs] 开始块 结束块

新增分区
parted mkpart xfs 开始块 结束块
查看分区,起始块、大小、文件系统
parted print
删除分区
parted rm /dev/sda6

查看分区表

lsblk

查看块设备的 文件名、加载点、磁盘大小、文件系统 等信息

lsblk [option] [device]

-d 只查看磁盘,不显示分区

-f 显示 文件系统 类型

-i 用 ASCII 输出,防止乱码

-m 显示设备文件权限

-p 查看完整设备文件名

-t 显示块设备的详细数据,包括磁盘队列机制、预读写的数据量大小等

$ lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda             8:0    0   40G  0 disk
├─sda1          8:1    0    2M  0 part
├─sda2          8:2    0    1G  0 part /boot
└─sda3          8:3    0   30G  0 part
  ├─zion-root 253:0    0   10G  0 lvm  /
  ├─zion-swap 253:1    0    1G  0 lvm  [SWAP]
  └─zion-home 253:2    0    5G  0 lvm  /home
sr0            11:0    1  7.7G  0 rom  

blkid

blkid 命令可以查看所有块设备的 文件名卷标UUID文件系统类型

UUID,Universally Unique IDentifier,全域单一识别码,Linux 将系统内所有设备分配一个独一无二的识别码。

$ sudo blkid
[sudo] password for neo:
/dev/sda1: PARTUUID="aace072a-e421-4c28-b48e-f5507e451bb9"
/dev/sda2: UUID="84f7aabf-238f-4561-808d-8414f522c62b" TYPE="xfs" PARTUUID="ca1bfda4-d121-4895-b2a4-4e77e7de760a"
/dev/sda3: UUID="Cd0hLH-ckdz-hYKc-KFyn-ZCcv-B3ER-JzgijA" TYPE="LVM2_member" PARTUUID="8b19b9cb-2fdc-4b7a-8390-d8eb72015546"
/dev/sr0: UUID="2016-12-05-13-52-39-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/zion-root: UUID="c5be0073-8ee5-45f9-9adb-86c2d6bf7f43" TYPE="xfs"
/dev/mapper/zion-swap: UUID="39404b8c-d2e3-4a1e-97de-945d4434e5ab" TYPE="swap"
/dev/mapper/zion-home: UUID="d44606bf-f1bc-4efa-9d3e-fd6f5e96f604" TYPE="xfs"

parted

parted 是一款功能强大的磁盘分区工具,与 fdisk 不同,它 支持调整分区的大小

也可以用于查看磁盘的 分区表类型分区 信息。

parted device_name print

$ parted /dev/vda print

Model: Virtio Block Device (virtblk)  # 磁盘的模块名称(厂商)
Disk /dev/vda: 42.9GB   # 磁盘的总容量
Sector size (logical/physical): 512B/512B  # 磁盘的单个逻辑/物理扇区容量
Partition Table: gpt    # 分区表的格式 (MBR/GPT)
Disk Flags: pmbr_boot
Number Start End Size File system Name Flags   # 以下三行为分区数据
1 1049kB 3146kB 2097kB bios_grub
2 3146kB 1077MB 1074MB xfs
3 1077MB 33.3GB 32.2GB lvm

LVM

Logical Volume Manager

物理卷

查看当前系统物理卷

pvscan

创建物理卷

pvcreate /dev/vda{5,6,7,8}

查看物理卷详细信息

pvdisplay /dev/vda5

卷组

创建卷组

vgcreate -s 16M matrixvg /dev/vda{5,6,7}

扫描系统现有卷组

vgscan

查看指定卷组详细信息

vgdisplay matrixvg

扩展卷组

vgextend matrixvg /dev/vda8

缩小卷组

vgreduce

修改卷组的属性

vgchange

删除卷组

vgremove

逻辑卷

创建逻辑卷

lvcreate -L 2G -n matrixlv matrixvg

创建存储池

lvcreate -L 1G -T matrixvg/matrixtpool

创建瘦逻辑卷

lvcreate -V 10G -T matrixvg/matrixtpool -n matrixthin1

创建快照

lvcreate -s -l 26 -n matrixsnap1 /dev/matrixvg/matrixlv

扫描系统中的逻辑卷

lvscan

查看指定逻辑卷详细信息

lvdisplay /dev/matrixvg/matrixlv

扩展逻辑卷

lvextend

缩小逻辑卷

lvreduce

删除逻辑卷

lvremove

调整逻辑卷容量

lvresize

查看逻辑卷信息

lvs matrixvg

关闭 LVM 的流程

卸载 LVM 文件系统(快照、逻辑卷)

umount

删除逻辑卷

lvremove

禁用卷组

vgchange -an

删除卷组

vgremove

删除物理卷

pvremove

格式化

gdisk

LVM 命令汇总

任务 PV VG LV XFS EXT4
scan pvscan vgscan lvscan lsblk, blkid lsblk, blkid
create pvcreate vgcreate lvcreate mkfs.xfs mkfs.ext4
display pvdisplay vgdisplay lvdisplay df, mount df, mount
extend   vgextend lvextend (lvresize) xfs_growfs resize2fs
reduce   vgreduce lvreduce (lvresize) N/A resize2fs
remove pvremove vgremove lvremove umount,mkfs umount,mkfs
resize     lvresize xfs_growfs resize2fs
attribute pvchange vgchange lvchange /etc/fstab, remount /etc/fstab, remount