信息查询

SCSI 设备

查看所有磁盘设备

ls /sys/class/scsi_host

分区表信息

查看分区表

partx -s /dev/sdc

所有分区信息

cat /proc/partitions

磁盘信息

lsblk 命令列出当前磁盘信息。

列出文件系统和 UUID 信息

lsblk -f

blkid 命令列出当前磁盘 UUID。

df 命令查看磁盘空间占用。

以合适的单位,列出磁盘占用信息。

df -h

du 命令查看文件或文件夹空间占用

分区

常用 fdiskparted 命令进行分区。

分区格式推荐采用 GPT 格式,目前主流系统都支持该格式。

parted 命令对 GPT 格式支持较好,优先使用。

如果内核没有识别到新分区,可以用 partprobe 让内核重新加载分区表。

partprobe /dev/sda

通知内核分区增加

partx -a /dev/sdc

文件系统

mkfs 系列命令指定文件系统,并格式化。

主流 Linux 系统目前采用 ext4 文件系统。

挂载

临时挂载

mountumount 命令用于挂载和卸载磁盘。

在 systemd 管理的 linux 系统中,systemd-mountsystemd-umount 被用于代替上述命令。这样可以将临时挂载的磁盘归入 systemd 单元统一管理。

自动挂载

linux 使用 /etc/fstab 文件管理自动挂载的磁盘。

在 systemd 管理的 linux 系统中,也可以使用 .mount 单元进行管理。

systemd 会在启动时自动将 /etc/fstab 文件中列出的配置转换为 .mount 单元进行管理。编辑改文件后可以使用 systemctl daemon-reload 命令是配置立即生效。

也可以在 /etc/systemd/system 文件夹下自行创建挂载单元。

[Unit]
Description=Mount extent space
#BindsTo=systemd-cryptsetup@ps1.service
#After=systemd-cryptsetup@ps1.service

[Mount]
What=UUID=b387f7de-d1f6-4f9e-903e-af5d0cf9387d
Where=/mnt/ps1
Type=ext4
Options=defaults

[Install]
WantedBy=local-fs.target

加密

Linux 下通用加密方式是使用 Dm-crypt。

命令行

命令行使用 cryptsetup 命令管理加密磁盘。

创建密钥文件

使用 /dev/urandom 做密钥生成器。

dd if=/dev/urandom of=disk1.key bs=1k count=4

创建加密卷

cryptsetup luksFormat /dev/sda1 --key-file=disk1.key

打开加密卷

cryptsetup open /dev/sda1 ps1 -d disk1.key

自动解密

而自动挂载使用 /etc/crypttab 文件管理要自动解密的磁盘。

对于 systemd 而言,它会将 /etc/crypttab 文件转化为 systemd-cryptsetup@.service 服务进行管理。通用使用 systemctl daemon-reload 可以手动促进此过程。

软 RAID

需要内核 md 模块(multiple devices)。

修改分区类型

RAID 需要修改分区类型为 Linux RAID

创建 RAID

使用mdadm创建 raid

mdadm --create --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1

查看 RAID 状态

cat /proc/mdstat

查看 raid 信息

mdadm -D /dev/md1

移除和替换

标记一个分区有问题

mdadm -f /dev/md0 /dev/sda1

移除分区

mdadm -r /dev/md0 /dev/sda1

清除磁盘 RAID 块标记

mdadm --zero-superblock /dev/sda1

扩容

RAID 扩容

mdadm -G /dev/md0 --size=max

文件系统扩容

resize2fs /dev/md0

配置文件

/etc/mdadm.conf

LVM

物理卷

创建物理卷

pvcreate /dev/sda1

显示物理卷信息

pvdisplay

卷组

创建卷组

vgcreate vg1 /dev/mapper/ps6

查看

vgdisplay

扩展卷组

vgextend vg1 /dev/sda1

逻辑卷

创建一个占满 vg 的逻辑卷

lvcreate -l 100%VG -n lv1 vg1

扩展逻辑卷

lvextend -l 100%VG /dev/vg2/lv2

jbd2 磁盘占用问题

开启 jdb2 和 ext4 日志

echo 1 > /sys/kernel/debug/tracing/events/jbd2/jbd2_commit_flushing/enable
echo 1 > /sys/kernel/debug/tracing/events/ext4/ext4_sync_file_enter/enable

查看日志输出

cat /sys/kernel/debug/tracing/trace_pipe

关闭 jbd2 日志

tune2fs -o journal_data_writeback /dev/md3
tune2fs -O "^has_journal" /dev/md3