银河麒麟系统磁盘管理
一、系统环境
- Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso
二、磁盘管理
1.添加物理磁盘
-
系统识别磁盘,不重启系统重新扫描 SCSI 主机适配器识别到新连接的 SCSI 或 SATA 存储设备
echo '- - -' > /sys/class/scsi_host/host32/scan
或
for i in /sys/class/scsi_host/host*/scan;do echo '- - -' > $i;done
-
查询磁盘状态
[root@elerejazgnbgskbhotwpgnga-virt ~]# lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
vda
├─vda1 xfs cef7c1f3-78dc-4b61-8357-f688061b1eef 802M 21% /boot
└─vda2 LVM2_member LVM2 001 3ZUHlu-LeW4-n5gi-FVH8-1LoC-rhUg-P1XP8b
├─klas-root xfs ae96ac90-5cbc-4367-9d04-054aa5aea0f6 19.2G 29% /
└─klas-swap swap 1 d402647f-4944-4e73-95f4-ddfc8691de7c [SWAP]
vdb iso9660 Joliet Extension cidata 2025-09-04-11-59-08-00
vdc
vdd
2.磁盘格式管理
-
设置磁盘 为 MBR
fdisk /dev/vdc # 替换为实际磁盘,如 /dev/sda
输入 o 指令,确认后会清除磁盘原有分区并创建 MBR 格式:
Command (m for help): o # 清除并创建 DOS(MBR)分区表
Created a new DOS disklabel with disk identifier 0xbd33cb8f.
输入 w 写入分区表并退出:
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
查询格式配置
[root@elerejazgnbgskbhotwpgnga-virt ~]# fdisk -l /dev/vdc
Disk /dev/vdc: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xbd33cb8f
-
设置磁盘 为 gpt
gdisk /dev/vdd # 替换为目标磁盘
输入 o 指令,确认后会清除原有分区并创建 GPT 格式:
Command (? for help): o # 清除并创建 GPT 分区表
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y
输入 w 写入分区表并退出:
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/vdd.
The operation has completed successfully.
查询格式设置
[root@elerejazgnbgskbhotwpgnga-virt ~]# fdisk -l /dev/vdd
Disk /dev/vdd: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: CDF240A4-A8B0-404D-BEBE-9D889A0DA28E
3.磁盘分区管理
-
MBR格式分区
[root@elerejazgnbgskbhotwpgnga-virt ~]# fdisk /dev/vdc
Welcome to fdisk (util-linux 2.35.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n #新建分区
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p # 主分区
Partition number (1-4, default 1): 1 # 分区编号
First sector (2048-20971519, default 2048): # 起始扇区(默认即可)
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-20971519, default 20971519): +4G
# 分区大小
Created a new partition 1 of type 'Linux' and of size 4 GiB.
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): e # 扩展分区
Partition number (2-4, default 2): 2
First sector (8390656-20971519, default 8390656):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (8390656-20971519, default 20971519):
Created a new partition 2 of type 'Extended' and of size 6 GiB.
Command (m for help): n
All space for primary partitions is in use.
Adding logical partition 5 # 默认逻辑分区
First sector (8392704-20971519, default 8392704):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (8392704-20971519, default 20971519):
Created a new partition 5 of type 'Linux' and of size 6 GiB.
Command (m for help): p #查看分区信息
Disk /dev/vdc: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xbd33cb8f
Device Boot Start End Sectors Size Id Type
/dev/vdc1 2048 8390655 8388608 4G 83 Linux
/dev/vdc2 8390656 20971519 12580864 6G 5 Extended
/dev/vdc5 8392704 20971519 12578816 6G 83 Linux
Command (m for help): w #w 保存并退出
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
(可选)输入 t 更改分区类型(如 swap 分区为 82,默认 83 为 Linux 分区,8e为Linux LVM):
plaintext
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 83
-
GPT格式分区
[root@elerejazgnbgskbhotwpgnga-virt ~]# gdisk /dev/vdd
GPT fdisk (gdisk) version 1.0.5.1
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): n #新建分区
Partition number (1-128, default 1): 1 # 分区编号
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}: # 起始扇区(默认即可)
Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +11G # 分区大小
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): # 分区类型(默认即可)
...
Command (? for help): p #查看分区信息
Disk /dev/vdd: 41943040 sectors, 20.0 GiB
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): CDF240A4-A8B0-404D-BEBE-9D889A0DA28E
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 2048 23070719 11.0 GiB 8E00 Linux LVM
2 23070720 41943006 9.0 GiB 8E00 Linux LVM
输入 w 保存并退出:
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/vdd.
The operation has completed successfully.
(可选)输入 t 更改分区类型(默认 8300 为 Linux 分区,8e00为Linux LVM):
Command (? for help): t
Partition number (1-2): 2
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): 8e00
Changed type of partition to 'Linux LVM'
partprobe 的作用就是强制内核重新检测磁盘分区表,使新的分区配置生效。
4.格式化文件系统
# 格式化为 ext4(最常用)
sudo mkfs.ext4 /dev/sdb1 # /dev/sdb1 为分区设备名
# 格式化为 xfs(适合大文件)
sudo mkfs.xfs /dev/sdb1
# 格式化为 swap(交换分区)
sudo mkswap /dev/sdb1
sudo swapon /dev/sdb1 # 启用 swap 分区
swapoff -a #禁用交换分区
如果需要调整该值,可以使用以下命令(临时生效):
sudo sysctl vm.swappiness=10 # 例如改为10,减少swap使用
若要永久生效,需编辑 /etc/sysctl.conf 文件,添加或修改:
vm.swappiness=10
5.挂载文件系统
#获取分区 UUID(唯一标识,避免设备名变动
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="4c419c89-d1d0-41e6-b249-fb291d7a82b4" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="45ec82ae-01"
编辑 /etc/fstab,添加如下行:
echo 'UUID=4c419c89-d1d0-41e6-b249-fb291d7a82b4 /data ext4 defaults 0 0' | sudo tee -a /etc/fstab
#更新挂载信息
systemctl daemon-reload
[root@localhost ~]# mount -a
[root@localhost ~]# mount -o remount /data
6.逻辑卷管理
-
创建物理卷(将磁盘或分区初始化为 LVM 物理卷(PV)
#确认目标设备
[root@elerejazgnbgskbhotwpgnga-virt ~]# lsblk /dev/vdc /dev/vdd
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vdc 252:32 0 10G 0 disk
├─vdc1 252:33 0 4G 0 part
├─vdc2 252:34 0 1K 0 part
└─vdc5 252:37 0 6G 0 part
vdd 252:48 0 20G 0 disk
├─vdd1 252:49 0 11G 0 part
└─vdd2 252:50 0 9G 0 part
#创建PV
[root@elerejazgnbgskbhotwpgnga-virt ~]# pvcreate /dev/vdc1 /dev/vdc5
Physical volume "/dev/vdc1" successfully created.
Physical volume "/dev/vdc5" successfully created.
[root@elerejazgnbgskbhotwpgnga-virt ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vda2 klas lvm2 a-- <29.00g 0
/dev/vdc1 lvm2 --- 4.00g 4.00g
/dev/vdc5 lvm2 --- <6.00g <6.00g
查看 PV 信息:
sudo pvdisplay # 详细信息
sudo pvs # 简洁信息
# 删除指定 PV(逐个删除)
sudo pvremove /dev/sdb /dev/sdc
# 输出示例(表示成功删除)
Labels on physical volume "/dev/sdb" successfully wiped.
Labels on physical volume "/dev/sdc" successfully wiped.
-
创建卷组
将多个 PV 组合成卷组(VG),作为逻辑卷的 “存储池”:
创建 VG(命名为 my_vg,包含 /dev/sdb 和 /dev/sdc):
[root@elerejazgnbgskbhotwpgnga-virt ~]# vgcreate my_vg /dev/vdc1 /dev/vdc5
Volume group "my_vg" successfully created
或者
可指定 PE(物理扩展块)大小(默认 4MB):
sudo vgcreate -s 16M my_vg /dev/sdb /dev/sdc # PE 设为 16MB
[root@elerejazgnbgskbhotwpgnga-virt ~]# vgs my_vg
VG #PV #LV #SN Attr VSize VFree
my_vg 2 0 0 wz--n- 9.99g 9.99g
#使用 vgextend 命令将新 PV 加入目标卷组(以卷组 my_vg 为例)
[root@elerejazgnbgskbhotwpgnga-virt ~]# vgextend my_vg /dev/vdd1
查看 VG 信息:
sudo vgdisplay my_vg # 详细信息(含总大小、空闲空间)
sudo vgs my_vg # 简洁信息
# 删除指定卷组
sudo vgremove my_vg
# 确认删除
Do you really want to remove volume group "my_vg" containing 0 logical volumes? [y/n]: y
Volume group "my_vg" successfully removed
-
创建逻辑卷
从 VG 中划分空间创建逻辑卷(LV),可直接作为 “分区” 使用:
创建 LV(命名为 my_lv,从 my_vg 中分配 7GB 空间):
[root@elerejazgnbgskbhotwpgnga-virt ~]# lvcreate -L 7G -n my_lv my_vg
Logical volume "my_lv" created.
其他常用选项:
按 PE 数量分配,分配全部空闲空间:
sudo lvcreate -l +100%FREE -n my_lv my_vg
[root@elerejazgnbgskbhotwpgnga-virt ~]# lvs /dev/my_vg/my_lv
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
my_lv my_vg -wi-a----- 7.00g
查看 LV 信息:
sudo lvdisplay /dev/my_vg/my_lv # 详细信息
sudo lvs /dev/my_vg/my_lv # 简洁信息
# 删除指定 LV(需提供完整路径)
sudo lvremove /dev/my_vg/my_lv
# 系统会提示确认,输入 y 执行删除
Do you really want to remove and DISCARD active logical volume my_vg/my_lv? [y/n]: y
----------------------------------------------------------------------------------
LV 扩容(扩展逻辑卷大小)
# 增加指定大小(如增加 50GB)
sudo lvextend -L +50G /dev/my_vg/my_lv
# 使用 VG 中全部空闲空间
sudo lvextend -l -r +100%free /dev/my_vg/my_lv
-L:指定绝对大小或增减量(带 + 号)
-l:按物理扩展块(PE)数量操作(+100%FREE 表示全部空闲 PE)
LV 扩容后,需同步扩展文件系统才能识别新增空间,不同文件系统命令不同
ext4/xfs 格式(最常用):
# ext4 格式(无需卸载,在线扩容)
sudo resize2fs /dev/my_vg/my_lv
# xfs 格式(需先挂载,且只能扩容不能缩容)
sudo xfs_growfs /mnt/my_lv # 需指定挂载点而非设备路径
-----------------------------------------------------------------------------------
LV 缩容(减小逻辑卷大小)
缩容风险较高,需严格按步骤操作(xfs 格式不支持缩容,仅 ext4/ext3 等支持):
1. 卸载 LV(必须卸载)
[root@elerejazgnbgskbhotwpgnga-virt ~]# umount /opt
2. 检查文件系统完整性(关键,避免数据损坏)
# ext4/ext3 格式
[root@elerejazgnbgskbhotwpgnga-virt ~]# e2fsck -f /dev/my_vg/my_lv #-f:强制检查(即使系统认为文件系统正常)
e2fsck 1.45.6 (20-Mar-2020)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/my_vg/my_lv: 11/468640 files (0.0% non-contiguous), 53896/1891328 blocks
3. 缩小文件系统(先于 LV 缩容,顺序不能反
# 缩小文件系统到目标大小(如 6GB)
[root@elerejazgnbgskbhotwpgnga-virt ~]# resize2fs /dev/my_vg/my_lv 6G
resize2fs 1.45.6 (20-Mar-2020)
Resizing the filesystem on /dev/my_vg/my_lv to 1572864 (4k) blocks.
The filesystem on /dev/my_vg/my_lv is now 1572864 (4k) blocks long.
#目标大小必须 小于当前 LV 大小,且大于实际数据占用空间
4. 缩小 LV 大小
# 缩小到目标大小(需与文件系统大小一致,如 6GB)
[root@elerejazgnbgskbhotwpgnga-virt ~]# lvreduce -L 6G /dev/my_vg/my_lv
WARNING: Reducing active logical volume to 6.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce my_vg/my_lv? [y/n]: y #若提示确认,输入 y 继续(确保已备份数据)
Size of logical volume my_vg/my_lv changed from 7.21 GiB (1847 extents) to 6.00 GiB (1536 extents).
Logical volume my_vg/my_lv successfully resized.
5. 重新挂载 LV
[root@elerejazgnbgskbhotwpgnga-virt ~]# mount /dev/my_vg/my_lv /opt
7.LV快照管理
#查看原 LV 和 VG 信息
#查看原 LV 信息(确认路径和大小)
sudo lvs /dev/my_vg/my_lv
# 查看 VG 空闲空间(确保有足够空间创建快照)
sudo vgs my_vg
sudo lvcreate -s -L 10G -n my_lv_snap -p r/dev/my_vg/my_lv
参数说明:
-s:指定创建快照(snapshot)。
-L 10G:设置快照大小(根据原 LV 数据变化量预估,不足会导致快照失效)。
-n my_lv_snap:快照名称。
挂载快照(像使用普通 LV 一样):
sudo mkdir /mnt/snap
sudo mount /dev/my_vg/my_lv_snap /mnt/snap
挂载后可查看或复制快照创建时刻的文件数据。
备份数据(例如打包快照内容):
sudo tar -czvf /backup/my_lv_snap_backup.tar.gz -C /mnt/snap .
#挂载快照,xfs注意要使用-0 ro实现只读,防止快照被修改
mkdir -p /mnt/snap
mount -o ro,nouuid /dev/vg0/data-snapshot /mnt/snap
#恢复快照
umount /dev/vg0/data-snapshot
umount /dev/vg0/data
[root@elerejazgnbgskbhotwpgnga-virt ~]# lvconvert --merge /dev/my_vg/my_lv_snap
Merging of volume my_vg/my_lv_snap started.
my_vg/my_lv: Merged: 100.00%
# 先卸载快照(若已挂载)
sudo umount /mnt/snap
# 删除快照
sudo lvremove /dev/my_vg/my_lv_snap
# 提示确认时输入 y
8.迁移磁盘PV
将 /dev/sdc5 上的所有数据迁移到卷组中其他可用 PV:
[root@elerejazgnbgskbhotwpgnga-virt ~]# pvmove /dev/vdc5
/dev/vdc5: Moved: 0.07%
/dev/vdc5: Moved: 15.96%
/dev/vdc5: Moved: 33.81%
/dev/vdc5: Moved: 51.92%
/dev/vdc5: Moved: 69.77%
/dev/vdc5: Moved: 88.27%
/dev/vdc5: Moved: 100.00%
或者
将 /dev/sdb 的数据迁移到 /dev/sdc(需确保 /dev/sdc 已加入同一 VG):
sudo pvmove /dev/sdb /dev/sdc
#使用 vgreduce 从卷组中移除指定 PV
[root@elerejazgnbgskbhotwpgnga-virt ~]# vgreduce my_vg /dev/vdc5
Removed "/dev/vdc5" from volume group "my_vg"
#清除其 PV 标识
[root@elerejazgnbgskbhotwpgnga-virt ~]# pvremove /dev/vdc5
Labels on physical volume "/dev/vdc5" successfully wiped.
来源:https://www.cnblogs.com/JianZuo/p/19110116 |