# linux 磁盘管理
# 1、磁盘命令
# 1.1 df 命令
disk free 列出文件系统的整体磁盘使用量
df [-ahikHTm] [目录或文件名]
选项与参数:
-a:列出所有的文件系统,包括系统特有的 /proc 等文件系统;-k:以 KBytes 的容量显示各文件系统;-m:以 MBytes 的容量显示各文件系统;-h:以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;-H:以 M=1000K 取代 M=1024K 的进位方式;-T:显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;-i:不用硬盘容量,而以 inode 的数量来显示
示例:
$ df
$ df -h
$ df -h -T
 2
3
4
5
# 1.2 du 命令
disk used 检查磁盘空间使用量,包括隐藏文件夹
du [-ahskm] 文件或目录名称
选项与参数:
-a:列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。-h:以人们较易读的容量格式 (G/M) 显示;-s:列出总量而已,而不列出每个各别的目录占用容量;-S:不包括子目录下的总计,与 -s 有点差别。-k:以 KBytes 列出容量显示;-m:以 MBytes 列出容量显示;
# 列出根目录下所有文件夹磁盘占用大小
du -sh /*
# 列出指定目录
du -sh /home/*
du -sh /usr/*
 2
3
4
5
6
# 1.3 fdisk 命令
用于磁盘分区
fdisk [-l] 装置名称
选项与参数:
-l:输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。
# 1.4 其他指令
# mount | column -t      # 查看挂接的分区状态
# fdisk -l               # 查看所有分区
# swapon -s              # 查看所有交换分区
# hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE       # 查看启动时IDE设备检测状况
 2
3
4
5
https://zhuanlan.zhihu.com/p/234986013
# 2、磁盘挂载
# 临时挂载
mount -t ext4 /dev/sda /raid_backup/
# 开机自动挂载,在最后一行加上挂载的相关信息
sudo vim /etc/fstab
/dev/sdc       /raid_backup  ext4 defaults 0 0
# 挂载设备      挂载位置        文件系统 默认
# 挂载 swap 虚拟内存
/swap/swapfile swap swap defaults 0 0
# 验证挂载,也可以重启后查看挂载情况
mount -a
 2
3
4
5
6
7
8
9
10
11
12
13
14
# 3、lsblk 查询
lsblk 命令的英文是“list block”,即用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出 RAM 盘的信息。块设备有硬盘,闪存盘,CD-ROM 等等。lsblk 命令包含 util-linux 中。
参数说明:
-a, --all打印所有设备-b, --bytes以字节格式打印大小-d, --nodeps不打印从属或持有者-D, --discard打印遗弃功能列表-e, --exclude <list>按主要编号排除设备-I, --include <list>仅显示具有指定主要编号的设备-f, --fs输出有关文件系统的信息-i, --ascii仅使用 ascii 字符-m, --perms输出有关权限的信息-l, --list使用列表格式输出-n, --noheadings不打印标题-o, --output输出信息列-p, --paths打印平面设备路径-P, --pairs使用key="value"输出格式-r, --raw使用原始输出格式-s, --inverse反向依赖-t, --topology输出有关拓扑的信息-S, --scsi输出有关 scsi 设备的信息-h, --help显示帮助信息-V, --version显示版本信息
输出信息列:
| 列名称 | 列说明 | 
|---|---|
| NAME | 设备名称 | 
| KNAME | 内部内核设备名称 | 
| MAJ:MIN | 主要和次要设备数量 | 
| FSTYPE | 文件系统类型 | 
| MOUNTPOINT | 设备挂载点 | 
| LABEL | 文件系统标签 | 
| UUID | UUID | 
| PARTLABEL | 分区标签 | 
| PARTUUID | 分区的 UUID | 
| RA | 预读设备 | 
| RO | 只读设备 | 
| RM | 可移动设备 | 
| MODEL | 设备标识符 | 
| SERIAL | 磁盘序列号 | 
| SIZE | 设备大小 | 
| OWNER | 所有者用户名 | 
| GROUP | 组名 | 
| MODE | 设备节点权限 | 
| MIN-IO | 最小 I/O 大小 | 
| OPT-IO | 最佳 I/O 大小 | 
| PHY-SEC | 物理扇区大小 | 
| LOG-SEC | 逻辑扇区大小 | 
| ROTA | 旋转装置 | 
| SCHED | I/O 计划程序名称 | 
| RQ-SIZE | 请求队列大小 | 
| TYPE | 设备类型 | 
| DISC-ALN | 废弃的校准偏移盘 | 
| DISC-GRAN | 废弃的颗粒度 | 
| DISC-MAX | 废弃的最大字节数 | 
| DISC-ZERO | 废弃的零数据 | 
| WSAME | 写入相同的最大字节数 | 
| WWN | 唯一存储标识 | 
| RAND | 添加了随机性 | 
| PKNAME | 内部父内核设备名称 | 
| HCTL | SCSI 编号 | 
| TRAN | 设备传输类型 | 
| REV | 设备版本 | 
| VENDOR | 设备供应商 | 
sudo lsblk -h
# 列出所有设备
sudo lsblk -a
# 查看指定块设备信息
sudo lsblk /dev/sda1
# 查看块设备的文件系统类型及UUID
sudo lsblk -f
# 查看块设备的完整路径
sudo lsblk -p
# 列出所有设备指定列信息
sudo lsblk -J -p -M -b -o "NAME,SIZE,PTTYPE,PARTLABEL,FSTYPE,MOUNTPOINT"
 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 4、parted 分区
sudo parted -h
parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]
OPTIONs:
  -h, --help                      # 显示帮助消息
  -l, --list                      # 列出所有块设备上的分区布局
  -m, --machine                   # 显示机器可解析的输出
  -s, --script                    # 不给用户输出提示信息(非交互式,脚本)
  -v, --version                   # 版本信息
  -a, --align=[none|cyl|min|opt]  # 新分区的对齐
COMMANDs:
  align-check TYPE N                       # check partition N for TYPE(min|opt)
        alignment
  help [COMMAND]                           # print general help, or help on
        COMMAND
  mklabel,mktable LABEL-TYPE               # 创建一个新的磁盘标签(分区表)
  mkpart PART-TYPE [FS-TYPE] START END     # 创建分区
  name NUMBER NAME                         # name partition NUMBER as NAME
  print [devices|free|list,all|NUMBER]     # 显示分区表、可用设备、可用空间、所有找到的分区或特定分区
  quit                                     # exit program
  rescue START END                         # rescue a lost partition near START
        and END
  resizepart NUMBER END                    # 调整分区大小
  rm NUMBER                                # 删除分区
  select DEVICE                            # choose the device to edit
  disk_set FLAG STATE                      # change the FLAG on selected device
  disk_toggle [FLAG]                       # toggle the state of FLAG on selected
        device
  set NUMBER FLAG STATE                    # change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG]]                   # toggle the state of FLAG on partition
        NUMBER
  unit UNIT                                # set the default unit to UNIT
  version                                  # display the version number and
 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
操作示例:
# 设置磁盘格式
sudo parted -s /dev/sda mklabel gpt
# 创建分区
sudo parted -s /dev/sda mkpart primary ${start} ${end} # 需要设置单位,例如 1024B
# 格式化分区
sudo mkfs -t ext4 /dev/sda1
# 创建挂载目录
sudo mdkir /data/sda1
# 挂载分区(临时挂载)
sudo mount /dav/sda1 /data/sda1
# 挂载分区(永久挂载)
sudo echo "UUID=${uuid} /data/sda1 ext4 defaults 0 0" >> /etc/fstab
sudo mount -a
# 取消挂载
sudo sed -i /${uuid}/d /etc/fstab
sudo umount /dav/sda1
# 删除分区(前提需要取消挂载)
sudo parted -s /dav/sda rm 1
 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 5、mkfs 磁盘格式化
磁盘分区完毕后要进行文件系统的格式化,也就是创建文件系统
mkts -t [格式化名] [设备名称]
# 或
mkts.[格式化名] [设备名称]
 2
3
格式列表:ext4、ntfs、fat、vfat、xfs
相关参数:
-b后面接的是区块容量,范围是 512B-64K。不过 Linux 最大为 4K-d后面接的是 data section(数据区)的相关参数值-f如果设备内已经有了文件系统,则需要使用-f强制格式化-i与 inode 有较相关的设置-L后面接这个文件系统的标头名称 Label name-r指定 realtime section(实时运行区)的相关设置值
# 6、mdadm 软 RAID 管理
mdadm 是 linux 下用于创建和管理软件 RAID 的命令,是一个模式化命令。但由于现在服务器一般都带有 RAID 阵列卡,并且 RAID 阵列卡也很廉价,且由于软件 RAID 的自身缺陷(不能用作启动分区、使用 CPU 实现,降低 CPU 利用率),因此在生产环境下并不适用。
# 6.1 创建模式
选项:-C
专用选项:
-l级别-n设备个数-a{yes|no} 自动为其创建设备文件-c指定数据块大小(chunk)-x指定空闲盘(热备磁盘)个数,空闲盘(热备磁盘)能在工作盘损坏后自动顶替
注意:创建阵列时,阵列所需磁盘数为 -n 参数和 -x 参数的个数和
创建 RAID:
# 创建 RAID 0
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2}
# 创建 RAID 1
mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb{1,2}
# 创建 RAID 5
mdadm -C /dev/md5 -a yes -l 5 -n 3 /dev/sdb{1,2,3}
# 创建 RAID 10
mdadm -C /dev/md10 -a yes -l 10 -n 2 /dev/sdb{1,2} -x 2 /dev/sdb{3,4}
# 保存 RAID
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
# 更新存储设备
sudo update-initramfs -u
 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
创建 raid 之后,使用磁盘格式化及挂载即可使用
# 6.2 管理模式
选项:-a(--add),-d(--del),-r(--remove),-f(--fail)
# 模拟损坏
mdadm /dev/md1 -f /dev/sdb5
# 移除损坏的磁盘
mdadm /dev/md1 -r /dev/sdb5
# 添加新的硬盘到已有阵列
mdadm /dev/md1 -a /dev/sdb7
# 停止阵列
mdadm -S /dev/md1
 2
3
4
5
6
7
8
9
10
11
- 新增加的硬盘需要与原硬盘大小一致
 - 如果原有阵列缺少工作磁盘(如raid1只有一块在工作,raid5只有2块在工作),这时新增加的磁盘直接变为工作磁盘,如果原有阵列工作正常,则新增加的磁盘为热备磁盘。
 
# 6.3 监控模式
# 6.4 增长模式,用于增加磁盘,为阵列扩容
选项:-G
# 将上述raid5的热备磁盘增加到阵列工作磁盘中
mdadm -G /dev/md2  -n 4 # -n 4 表示使用四块工作磁盘
# 查看信息
mdadm -D /dev/md2
 2
3
4
5
# 6.5 装配模式
选项:-A
# 将上述已经停止的阵列重新装配
mdadm -A /dev/md1 /dev/sdb5 /dev/sdb6
# 自动装配
mdadm -Ds >/etc/mdadm.conf
 2
3
4
5
https://www.cnblogs.com/lpfuture/p/6385657.html
https://www.cnblogs.com/37yan/p/7489597.html
https://www.cnblogs.com/asker009/p/10278536.html
https://cloud.tencent.com/developer/article/1346533
← linux查看时间 linux获取系统架构 →