差異處
這裏顯示兩個版本的差異處。
兩邊的前次修訂版 前次修改 下次修改 | 前次修改 | ||
tech:lvm [2011/11/11 14:05] – [4 Resize logical volume] jonathan | tech:lvm [2024/03/08 18:40] (目前版本) – [Linux 建立 LVM 磁碟方式] jonathan | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== Linux 建立 LVM 磁碟方式 ====== | ||
+ | * [[tech: | ||
+ | * [[tech/ | ||
+ | |||
+ | |||
+ | ===== 目標 ===== | ||
+ | 要將 /dev/sdb 建立成一個 LVM 磁碟 | ||
+ | < | ||
+ | * 可以使用 fdisk -l 列出目前主機內的所有實體硬碟資料清單 | ||
+ | </ | ||
+ | |||
+ | ==== - fdisk ==== | ||
+ | * fdisk /dev/sdb | ||
+ | < | ||
+ | : | ||
+ | Command (m for help): n | ||
+ | : | ||
+ | | ||
+ | Partition number (1-4): 1 | ||
+ | First cylinder (1-24321, default 1): | ||
+ | Using default value 1 | ||
+ | Last cylinder or +size or +sizeM or +sizeK (1-24321, default 24321): | ||
+ | Using default value 24321 | ||
+ | |||
+ | Command (m for help): t | ||
+ | Selected partition 1 | ||
+ | Hex code (type L to list codes): 8e | ||
+ | Changed system type of partition 1 to 8e (Linux LVM) | ||
+ | Command (m for help): w | ||
+ | The partition table has been altered! | ||
+ | |||
+ | Calling ioctl() to re-read partition table. | ||
+ | Syncing disks. | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ==== - pvcreate/ | ||
+ | * pvcreate /dev/sdb1 | ||
+ | * vgcreate vg-seagate1 /dev/sdb1 | ||
+ | * vgdisplay vg-seagate1 | ||
+ | < | ||
+ | --- Volume group --- | ||
+ | VG Name | ||
+ | System ID | ||
+ | Format | ||
+ | Metadata Areas 1 | ||
+ | Metadata Sequence No 1 | ||
+ | VG Access | ||
+ | VG Status | ||
+ | MAX LV 0 | ||
+ | Cur LV 0 | ||
+ | Open LV 0 | ||
+ | Max PV 0 | ||
+ | Cur PV 1 | ||
+ | Act PV 1 | ||
+ | VG Size | ||
+ | PE Size 4.00 MB | ||
+ | Total PE 76310 | ||
+ | Alloc PE / Size 0 / 0 | ||
+ | Free PE / Size 76310 / 298.09 GB | ||
+ | VG UUID | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ==== - create, format, and mount logical volume ==== | ||
+ | * 將所有空間都給一個 lv | ||
+ | * vgdisplay 看到 Free PE/ | ||
+ | * lvcreate -l 119234 -nsg500 vg-sg500 | ||
+ | * mkfs -t ext3 / | ||
+ | * mount / | ||
+ | * 將所有 VG 空間 LV | ||
+ | * lvcreate -l +100%FREE -ndata01 vg-seagate1 | ||
+ | * mkfs -t ext3 / | ||
+ | * mount / | ||
+ | * 指定特定空間大小 | ||
+ | * lvcreate -L 290G -ndata01 vg-seagate1 | ||
+ | * mkfs -t ext3 / | ||
+ | * mount / | ||
+ | * 由上面 vgdisplay 可以知道 vg-seagate1 的可用大小為 VG Size = 298.09 GB 如果想要擴增到 100% 可透過 lvextend 來加上剩下的 8.08G((8.09G 會出現空間不足的問題)) | ||
+ | * lvextend -L +8.08G / | ||
+ | * ext2online / | ||
+ | * resize2fs / | ||
+ | |||
+ | ++++看執行的內容| | ||
+ | < | ||
+ | [root@ibm-x206 ~]# lvextend -L +8.09G / | ||
+ | Rounding up size to full physical extent 8.09 GB | ||
+ | Extending logical volume data01 to 298.09 GB | ||
+ | Insufficient free space: 2072 extents needed, but only 2070 available | ||
+ | |||
+ | [root@ibm-x206 ~]# lvdisplay | ||
+ | --- Logical volume --- | ||
+ | LV Name / | ||
+ | VG Name vg-seagate1 | ||
+ | LV UUID 1nFltd-kgtz-v8od-k1LK-y717-pOlp-piBcrE | ||
+ | LV Write Access | ||
+ | LV Status | ||
+ | # open 1 | ||
+ | LV Size 290.00 GB | ||
+ | Current LE 74240 | ||
+ | Segments | ||
+ | Allocation | ||
+ | Read ahead sectors | ||
+ | Block device | ||
+ | |||
+ | [root@ibm-x206 ~]# lvextend -L +8.08G / | ||
+ | Rounding up size to full physical extent 8.08 GB | ||
+ | Extending logical volume data01 to 298.08 GB | ||
+ | Logical volume data01 successfully resized | ||
+ | |||
+ | [root@ibm-x206 ~]# lvdisplay | ||
+ | --- Logical volume --- | ||
+ | LV Name / | ||
+ | VG Name vg-seagate1 | ||
+ | LV UUID 1nFltd-kgtz-v8od-k1LK-y717-pOlp-piBcrE | ||
+ | LV Write Access | ||
+ | LV Status | ||
+ | # open 1 | ||
+ | LV Size 298.08 GB | ||
+ | Current LE 76309 | ||
+ | Segments | ||
+ | Allocation | ||
+ | Read ahead sectors | ||
+ | Block device | ||
+ | |||
+ | [root@ibm-x206 backup]# df -k | ||
+ | Filesystem | ||
+ | / | ||
+ | | ||
+ | / | ||
+ | none 517016 | ||
+ | / | ||
+ | | ||
+ | |||
+ | [root@ibm-x206 backup]# ext2online / | ||
+ | ext2online v1.1.18 - 2001/03/18 for EXT2FS 0.5b | ||
+ | [root@ibm-x206 backup]# df -k | ||
+ | Filesystem | ||
+ | / | ||
+ | | ||
+ | / | ||
+ | none 517016 | ||
+ | / | ||
+ | | ||
+ | |||
+ | </ | ||
+ | ++++ | ||
+ | * 如果有安裝 X Window 又在 Console 前面也可使用 system-config-lvm 的圖形介面來建立 | ||
+ | |||
+ | < | ||
+ | 當在 /dev 內看不到 vg-xxx 時,可先透過 lvdisplay 確認 LV Status,如果出現的是 **NOT available** 可以透過 **vgchange** 命令來解決,Exp. <code sh> | ||
+ | vgchange -a y vg-iscsi-01 | ||
+ | </ | ||
+ | 當出現結果是 now active <cli> | ||
+ | [root@vm-mail ~]# vgchange -a y vg-iscsi-01 | ||
+ | 1 logical volume(s) in volume group " | ||
+ | </ | ||
+ | 就表示正確啟動,這問題通常會出現在調整 vg 大小失敗時出現 | ||
+ | </ | ||
+ | |||
+ | ==== - Resize logical volume ==== | ||
+ | * 當某個 lv 有空間要移轉給另外一個 lv 的處理方式如下: | ||
+ | * **被移轉的 lv 資料很可能會全部損毀** | ||
+ | * [實作]範例為將 / | ||
+ | umount /bak500 | ||
+ | lvremove / | ||
+ | vgremove vg-sg500 | ||
+ | vgdisplay <- vg-sg500 已經看不到, | ||
+ | vgextend vg-sg2000 /dev/sdd1 | ||
+ | vgdisplay vg-sg2000 <- 可看到 vg-sg2000 的 VG Size 變成 2.27 TB, Free PE/Size 119234/ | ||
+ | df -h <- 可看到 /data2000 容量 1.8T | ||
+ | lvextend -L +465.75G / | ||
+ | vgdisplay vg-sg2000 <- 可看到 vg-sg2000 的 Free PE/Size 2/8.00 MB | ||
+ | lvextend -L +8M / | ||
+ | vgdisplay vg-sg2000 <- 可看到 vg-sg2000 的 Free PE/Size 0/0 | ||
+ | resize2fs / | ||
+ | df -h <- 可看到 /data2000 容量 2.3T (原本 /data2000 的檔案也可正常存取) | ||
+ | </ | ||
+ | * [實作]範例為將 / | ||
+ | umount /data2000 | ||
+ | e2fsck -f / | ||
+ | resize2fs -p / | ||
+ | lvdisplay / | ||
+ | lvreduce --size 1800G / | ||
+ | lvdisplay / | ||
+ | resize2fs / | ||
+ | vgreduce -a vg-sg2000 <- 會出現移除 /dev/sdd1 的訊息 | ||
+ | mount /data2000 <- 可以看到 /data2000 之前的資料都可正常存取 | ||
+ | </ | ||
+ | ===== 參考網址 ===== | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | {{tag> |