信息查询
SCSI 设备
查看所有磁盘设备
ls /sys/class/scsi_host
分区表信息
查看分区表
partx -s /dev/sdc
所有分区信息
cat /proc/partitions
磁盘信息
lsblk
命令列出当前磁盘信息。
列出文件系统和 UUID 信息
lsblk -f
blkid
命令列出当前磁盘 UUID。
df
命令查看磁盘空间占用。
以合适的单位,列出磁盘占用信息。
df -h
du
命令查看文件或文件夹空间占用
分区
常用 fdisk
或 parted
命令进行分区。
分区格式推荐采用 GPT 格式,目前主流系统都支持该格式。
parted
命令对 GPT 格式支持较好,优先使用。
如果内核没有识别到新分区,可以用 partprobe
让内核重新加载分区表。
partprobe /dev/sda
通知内核分区增加
partx -a /dev/sdc
文件系统
mkfs
系列命令指定文件系统,并格式化。
主流 Linux 系统目前采用 ext4 文件系统。
挂载
临时挂载
mount
和 umount
命令用于挂载和卸载磁盘。
在 systemd 管理的 linux 系统中,systemd-mount
和 systemd-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
停止 RAID 卷
mdadm --manage --stop /dev/md3
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