存储设备
设备文件名
系统按照检测到的磁盘顺序来决定设备文件名,与插槽号无关。
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 要接 磁盘名,而不是分区名。
新增分区
- 按
l查看分区类型对应的 Hex code 并记录 - 按
n新增分区 - Partition number,分区号,默认
- First sector,起始扇区,默认
- Last sector,结束扇区:+1G、+500M、+100K
- Hex code or GUID:Linux 8300,Linux LVM 8e00,Windows 0700
- 按
p查看当前计划的所有操作,仔细检查 分区大小 及 文件系统类型 - 确认无误后,按
w确认执行分区操作 - 退出 gdisk
更新分区表
刚刚创建完分区,cat /proc/partitions 会看到系统并未立即更新分区表。
手动更新分区表:
$ partprobe -s
/dev/vda: gpt partitions 1 2 3 4 5 6
删除分区
如果要删除正在使用中的分区, 必须先将其卸载。
fdisk
fdisk 跟 gdisk 使用的方式几乎一样。
fdisk 与 gdisk 区别:
- 有时会使用 柱面 作为分区的最小单位
- 分区是有限制的:主分区、扩展分区、逻辑分区
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 |