差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

兩邊的前次修訂版 前次修改
下次修改
前次修改
tech:lvm [2011/11/14 16:40] – [參考網址] jonathantech:lvm [2024/03/08 18:40] (目前版本) – [Linux 建立 LVM 磁碟方式] jonathan
行 1: 行 1:
 +====== Linux 建立 LVM 磁碟方式 ======
  
 +  * [[tech:lvm_conecpt]]
 +  * [[tech/lvm/ubuntu20]]
 +
 +
 +===== 目標 =====
 +要將 /dev/sdb 建立成一個 LVM 磁碟
 +<note>
 +  * 可以使用 fdisk -l 列出目前主機內的所有實體硬碟資料清單
 +</note>
 +
 +==== - fdisk ====
 +  * fdisk /dev/sdb
 +<code>
 +:
 +Command (m for help): n
 +:
 +     primary partition (1-4) p
 +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.
 +
 +</code>
 +
 +
 +==== - pvcreate/vgcreate ====
 +  * pvcreate /dev/sdb1
 +  * vgcreate vg-seagate1 /dev/sdb1
 +  * vgdisplay vg-seagate1 
 +<code>
 +  --- Volume group ---
 +  VG Name               vg-seagate1
 +  System ID
 +  Format                lvm2
 +  Metadata Areas        1
 +  Metadata Sequence No  1
 +  VG Access             read/write
 +  VG Status             resizable
 +  MAX LV                0
 +  Cur LV                0
 +  Open LV               0
 +  Max PV                0
 +  Cur PV                1
 +  Act PV                1
 +  VG Size               298.09 GB
 +  PE Size               4.00 MB
 +  Total PE              76310
 +  Alloc PE / Size       0 / 0
 +  Free  PE / Size       76310 / 298.09 GB
 +  VG UUID               XrrB58-E5zC-OFg0-e3Ch-lNsj-wr0n-LiyH33
 +</code>
 +
 +
 +
 +==== - create, format, and mount logical volume ====
 +  * 將所有空間都給一個 lv
 +    * vgdisplay 看到 Free PE/Size  119234 / 465.76 GB
 +    * lvcreate -l 119234 -nsg500 vg-sg500
 +    * mkfs -t ext3 /dev/vg-sg500/sg500
 +    * mount /dev/vg-sg500/sg500 /bak500
 +  * 將所有 VG 空間 LV
 +    * lvcreate -l +100%FREE -ndata01 vg-seagate1
 +    * mkfs -t ext3 /dev/vg-seagate1/data01
 +    * mount /dev/vg-seagate1/data01 /backup
 +  * 指定特定空間大小  290G
 +    * lvcreate -L 290G -ndata01 vg-seagate1
 +    * mkfs -t ext3 /dev/vg-seagate1/data01
 +    * mount /dev/vg-seagate1/data01 /backup
 +  * 由上面 vgdisplay 可以知道 vg-seagate1 的可用大小為 VG Size = 298.09 GB 如果想要擴增到 100% 可透過 lvextend 來加上剩下的 8.08G((8.09G 會出現空間不足的問題))
 +    * lvextend -L +8.08G /dev/vg-seagate1/data01
 +    * ext2online /dev/vg-seagate1/data01 (CentOS 4 使用 ext2online)
 +    * resize2fs /dev/vg-seagate1/data01 (CentOS 5 使用 resize2fs)
 +
 +++++看執行的內容|
 +<code>
 +[root@ibm-x206 ~]# lvextend -L +8.09G /dev/vg-seagate1/data01
 +  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                /dev/vg-seagate1/data01
 +  VG Name                vg-seagate1
 +  LV UUID                1nFltd-kgtz-v8od-k1LK-y717-pOlp-piBcrE
 +  LV Write Access        read/write
 +  LV Status              available
 +  # open                 1
 +  LV Size                290.00 GB
 +  Current LE             74240
 +  Segments               1
 +  Allocation             inherit
 +  Read ahead sectors     0
 +  Block device           253:2
 +
 +[root@ibm-x206 ~]# lvextend -L +8.08G /dev/vg-seagate1/data01
 +  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                /dev/vg-seagate1/data01
 +  VG Name                vg-seagate1
 +  LV UUID                1nFltd-kgtz-v8od-k1LK-y717-pOlp-piBcrE
 +  LV Write Access        read/write
 +  LV Status              available
 +  # open                 1
 +  LV Size                298.08 GB
 +  Current LE             76309
 +  Segments               1
 +  Allocation             inherit
 +  Read ahead sectors     0
 +  Block device           253:2
 +
 +[root@ibm-x206 backup]# df -k
 +Filesystem             1K-區段      已用     可用 已用% 掛載點
 +/dev/mapper/VolGroup00-LogVol00
 +                     305346824   1237084 288599008   1% /
 +/dev/sda1               101086     19636     76231  21% /boot
 +none                    517016            517016   0% /dev/shm
 +/dev/mapper/vg--seagate1-data01
 +                     299315840     98368 284013120   1% /backup
 +
 +[root@ibm-x206 backup]# ext2online /dev/vg-seagate1/data01
 +ext2online v1.1.18 - 2001/03/18 for EXT2FS 0.5b
 +[root@ibm-x206 backup]# df -k
 +Filesystem             1K-區段      已用     可用 已用% 掛載點
 +/dev/mapper/VolGroup00-LogVol00
 +                     305346824   1237084 288599008   1% /
 +/dev/sda1               101086     19636     76231  21% /boot
 +none                    517016            517016   0% /dev/shm
 +/dev/mapper/vg--seagate1-data01
 +                     307656824     98368 291930476   1% /backup
 +
 +</code>
 +++++
 +  * 如果有安裝 X Window 又在 Console 前面也可使用 system-config-lvm 的圖形介面來建立
 +
 +<note>
 +當在 /dev 內看不到 vg-xxx 時,可先透過 lvdisplay 確認 LV Status,如果出現的是 **NOT available** 可以透過 **vgchange** 命令來解決,Exp. <code sh>
 +vgchange -a y vg-iscsi-01
 +</code>
 +當出現結果是 now active <cli>
 +[root@vm-mail ~]# vgchange -a y vg-iscsi-01
 +  1 logical volume(s) in volume group "vg-iscsi-01" now active
 +</cli>
 +就表示正確啟動,這問題通常會出現在調整 vg 大小失敗時出現
 +</note>
 +
 +==== - Resize logical volume ====
 +  * 當某個 lv 有空間要移轉給另外一個 lv 的處理方式如下: 
 +    * **被移轉的 lv 資料很可能會全部損毀**
 +    * [實作]範例為將 /dev/vg-sg500/sg500(/dev/sdd1, /bak500) 刪除該 lv, vg 後, 配置 /dev/sdd1 給 /dev/vg-sg2000/sg2000(/dev/sdb1, /data2000) <code sh>
 +umount /bak500
 +lvremove /dev/vg-sg500/sg500
 +vgremove vg-sg500
 +vgdisplay <- vg-sg500 已經看不到, 可看到 vg-sg2000 的 VG Size 1.82 TB, Free PE/Size 0/0
 +vgextend vg-sg2000 /dev/sdd1
 +vgdisplay vg-sg2000 <- 可看到 vg-sg2000 的 VG Size 變成 2.27 TB, Free PE/Size 119234/465.76 GB
 +df -h <- 可看到 /data2000 容量 1.8T
 +lvextend -L +465.75G /dev/vg-sg2000/sg2000
 +vgdisplay vg-sg2000 <- 可看到 vg-sg2000 的 Free PE/Size 2/8.00 MB
 +lvextend -L +8M /dev/vg-sg2000/sg2000
 +vgdisplay vg-sg2000 <- 可看到 vg-sg2000 的 Free PE/Size 0/0
 +resize2fs /dev/vg-sg2000/sg2000 <- 需要一段時間
 +df -h <- 可看到 /data2000 容量 2.3T (原本 /data2000 的檔案也可正常存取)
 +</code>
 +    * [實作]範例為將 /dev/vg-sg2000/sg2000(/dev/sdb1+/dev/sdd1, /data2000) 內的 /dev/sdd1 移出  <code sh>
 +umount /data2000
 +e2fsck -f /dev/vg-sg2000/sg2000 <- 需要一段時間
 +resize2fs -p /dev/vg-sg2000/sg2000 1500G <- 需要一段時間
 +lvdisplay /dev/vg-sg2000/sg2000 <- LV Size 2.27 TB
 +lvreduce --size 1800G /dev/vg-sg2000/sg2000
 +lvdisplay /dev/vg-sg2000/sg2000 <- LV Size 1.76 TB
 +resize2fs /dev/vg-sg2000/sg2000 <- 需要一段時間
 +vgreduce -a vg-sg2000 <- 會出現移除 /dev/sdd1 的訊息
 +mount /data2000 <- 可以看到 /data2000 之前的資料都可正常存取
 +</code>
 +===== 參考網址 =====
 +  * http://wiki.linuxquestions.org/wiki/Lvreduce
 +  * http://wiki.linuxquestions.org/wiki/LVM
 +  * http://www.linuxsir.org/bbs/thread211828-2.html
 +  * http://blog.yam.com/gwabau/article/14026354
 +  * http://openskill.info/infobox.php?ID=1456
 +  * http://markmail.org/message/jtlnju4dfsr7ijht#query:vg%20status%20NOT%20available+page:1+mid:zw2nxmrtb3sbhi5a+state:results
 +  * http://emidio.planamente.ch/docs/linux/lvm-html/linuxdoc/lvm-5.html
 +
 +{{tag>lvm linux disk 儲存}}