Làm cách nào để thay đổi hệ thống phân vùng vật lý thành LVM?


10

Tôi có một máy chủ với Debian có 3 phân vùng vật lý bao gồm tất cả các đĩa: boot, root y exchange. Bây giờ tôi muốn thay thế các phân vùng đó bằng các phân vùng LVM. Tôi biết cách cài đặt Debian với LVM lúc đầu, nhưng trong trường hợp này tôi không thể cài đặt hệ thống lúc đầu vì nhà cung cấp cho tôi một máy chủ có quyền truy cập từ xa và hệ thống được cài đặt theo cách này.

Làm cách nào tôi có thể thay đổi các phân vùng đó chỉ bằng kết nối ssh và có thể là máy chủ từ xa khác để đặt một số dữ liệu tạm thời?


2
Lưu ý đối với những người bỏ phiếu gần gũi: Đây không phải là một bản sao của câu hỏi được tham chiếu bởi vì có một nút thắt ở đây: hoàn toàn từ xa.
sysadmin1138

Câu trả lời:


-1

Bạn không thể thay thế chúng trên một máy chủ đang chạy chỉ với các phân vùng /, / boot và <exchange>. Cách duy nhất để làm điều đó là ngắt kết nối / phân vùng, thu nhỏ nó và tạo phân vùng LVM mới ở cuối, nhưng khi bạn chỉ có quyền truy cập ssh từ xa, bạn có thể thu nhỏ phân vùng được gắn trực tiếp mà không bị hỏng dữ liệu.


3
Có thể thay đổi kích thước một hệ thống tập tin ext3 trong khi nó được gắn kết: linux.die.net/man/8/ext2online .
200_success

6
Đừng bao giờ nói không bao giờ ...
the-wợi

21

Một bản cập nhật nhanh từ phía tôi. Bối cảnh: hôm nay tôi đã trực tuyến một máy chủ chuyên dụng được cài đặt với sơ đồ phân vùng vật lý thay vì LVM. Có 3 phân vùng:

/ boot (ext4) - 512M / (ext4) - Trao đổi 730G - 8G

Do bản chất của việc không có quyền truy cập bàn điều khiển, mục tiêu cuối cùng là chuyển đổi phân vùng gốc hiện có sang LVM.

Xem xét ext4 không thể thu nhỏ, cách duy nhất là sử dụng lại phân vùng trao đổi dưới dạng root tạm thời. Tôi cũng quyết định thiết lập root tạm thời với LVM để đảm bảo quá trình có thể hoạt động đúng cách.

Đầu tiên bật ra hoán đổi:

swapoff -a

Sau đó thay đổi kích thước phân vùng thông qua parted (ban đầu nó được bắt đầu từ 742 đến 750):

parted
resize 3 742 744

và tạo một phân vùng cho LVM:

mkpart primary ext2 744 750
set 4 lvm on

Tạo PV / VG / LV / hệ thống tập tin cho root temp:

pvcreate /dev/sda4
vgcreate VolGroup00 /dev/sda4
lvcreate -L 5.73G -n tmproot VolGroup00
mkfs.ext4 /dev/VolGroup00/tmproot

Bước tiếp theo là sao chép root vào vị trí tạm thời:

mount /dev/VolGroup00/tmproot /media
rsync -ravzxq / /media/

Khi mọi thứ đã ở đó thì mục nhập cho hệ thống tập tin gốc trong / media / etc / fstab cũng phải được thay đổi:

/dev/VolGroup00/tmproot /                       ext4    defaults        1 1

Gần như ở đó, phần cuối cùng và giả sử phần không mong muốn nhất mà không có quyền truy cập bảng điều khiển là sửa đổi /boot/grub/grub.conf:

Mục gốc:

title CentOS (2.6.32-279.22.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-279.22.1.el6.x86_64 ro root=UUID=e769af21-d9e1-455f-a6a7-7a9c84d8cbea rd_NO_LUKS LANG=en_US.UTF-8  KEYBOARDTYPE=pc KEYTABLE=hu rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-279.22.1.el6.x86_64.img

mục sửa đổi:

title CentOS (2.6.32-279.22.1.el6.x86_64) LVM
insmod lvm
kernel /vmlinuz-2.6.32-279.22.1.el6.x86_64 ro LANG=en_US.UTF-8  KEYBOARDTYPE=pc KEYTABLE=hu SYSFONT=latarcyrheb-sun16 crashkernel=auto dolvm root=/dev/mapper/VolGroup00-tmproot panic=10 
#rd_NO_DM rd_NO_MD rd_NO_LUKS
initrd /initramfs-2.6.32-279.22.1.el6.x86_64.img

Để đảm bảo an toàn: insmod lvm đã được thêm vào cùng với tham số dolvm cho kernel và đường dẫn gốc cũng được thay đổi thành root = / dev / mapper / Volgroup00-tmproot. Quan trọng để sử dụng / dev / mapper / path tại thời điểm này. Để gửi tiền an toàn, tôi cũng đã thêm tham số panic = 10 và không thay đổi mục khởi động mặc định trong tiêu đề. Thay vào đó, tôi đã thử dùng cách bảo grub khởi động với cài đặt mới chỉ một lần và trong trường hợp thất bại, mục nhập ban đầu có thể hoạt động:

grub
savedefault --default=1 --once

Và cuối cùng:

reboot

Lần đầu tiên tôi thấy ổn vì vậy tôi đã lặp lại toàn bộ quy trình với việc tạo một nhóm âm lượng mới trên đầu phân vùng gốc và cuối cùng tôi đã lấy được root ở đúng nơi bằng LVM.

Hi vọng điêu nay co ich.


1
Điều này hoạt động rất tốt đối với tôi khi chuyển đổi 2 thiết lập đột kích 1 đĩa thành LVM trên đột kích 1 từ xa hoàn toàn (có một số đĩa dự phòng được cài đặt sẵn). Trong grub2 mặc dù cách mới để khởi động lại một mục menu chỉ một lần đầu tiên là chỉnh sửa tệp / etc / default / grub của bạn để đảm bảo GRUB_DEFAULT = được lưu. Sau đó update-grub. Sau đó, bạn chạy grub-reboot #để thiết lập mục menu để sử dụng cho lần khởi động lại tiếp theo. Sau đó, bạn có thể khởi động lại.
casey

Ubuntu (và debian) có hệ thống riêng để sửa đổi cấu hình grub. Cập nhật phân vùng gốc trong đó có thể được thực hiện sạch hơn theo cách được chỉ định ở đây: unix.stackexchange.com/a/5318/192211
EFraim

3

Không có gì là không thể trong Linux, nhưng bạn sẽ phải quyết tâm và điên rồ để thử những gì bạn mô tả. Hãy nhớ rằng nếu bạn chỉ có quyền truy cập SSH, rất có thể bạn sẽ mất quyền truy cập vào máy chủ nếu bạn mắc lỗi. Nếu bạn có bàn điều khiển "nối tiếp" từ xa và công tắc nguồn ảo, điều đó có thể giúp ích một chút. Điều đó nói rằng, nếu bạn có một cài đặt hoàn toàn mới mà không có dữ liệu để mất, tại sao không thử nó? Tôi tìm thấy một hướng dẫn để chuyển đổi từ xa một hệ thống Linux sang RAID1 ; các bước bạn sẽ cố gắng cho LVM sẽ tương tự nhau.

Trước tiên, hãy xem xét sự cần thiết của không gian lưu trữ tạm thời. Giả sử bạn không có đĩa thứ hai trên máy chủ, bạn có thể thu nhỏ các phân vùng hiện có bằng cách sử dụngparted . Tất nhiên, điều này đòi hỏi các phân vùng khởi động và gốc của bạn sử dụng ít hơn một nửa đĩa và chúng phải sử dụng hệ thống tệp có thể thu nhỏ. (Ví dụ, XFS và JFS không thể thu nhỏ.)

Sau khi thu nhỏ các phân vùng hiện có của bạn, bạn có thể tạo một khối vật lý LVM trong không gian được giải phóng, một nhóm âm lượng và các khối logic bên trong nó. Nhân rộng hệ thống tập tin của bạn. (Khi sao chép hệ thống tập tin gốc của bạn, bạn nên hủy mọi thứ trừ sshd, và lý tưởng nhất là ở chế độ một người dùng. Bạn có thể sẽ phải sử dụng rsyncthay ddvì bạn đang sao chép hệ thống tệp được gắn kết.)

Sau đó, bạn sẽ chuẩn bị một initrd với sự hỗ trợ LVM và bảo GRUB khởi động vào hệ thống mới, như được mô tả trong hướng dẫn của Warren Togami. Khi bạn làm điều đó, việc xóa các hệ thống tệp cũ bằng cách sử dụng partedvà tăng âm lượng LVM là một vấn đề đơn giản .

Chúc may mắn! Cho chúng tôi biết nếu nó làm việc!


3

Trước đây tôi đã di chuyển phân vùng gốc "/" đang trỏ đến phân vùng đĩa "/ dev / sda2" với 10G trên centos 6 sang phân vùng LV, các bước được thực hiện như sau:

  • Thêm một đĩa cứng trên VMware của 10G.
  • nhận ra đĩa mà không cần khởi động lại hệ thống.
ls / sys / lớp / scsi_host / | trong khi đọc x; làm tiếng vang "- - -"> / sys / class / scsi_host / $ {x} / scan; làm xong
  • Tạo một phân vùng trên đĩa mới, giả sử đĩa mới của tôi là / dev / sdb
  • Làm việc với :
fdisk / dev / sdb
  • Ở trong giao diện "fdisk" cho phép tạo phân vùng với khóa "n" gán + 9G dung lượng, sau đó thay đổi phân vùng loại bằng khóa "t" gán "8e" (phân vùng lvm) và cuối cùng là phím "w" để áp dụng các thay đổi , nếu bạn muốn xem bảng phân vùng trông như thế nào, bạn có thể nhấn phím "p".
  • một khi phân vùng được tạo, chúng ta có thể xác nhận rằng thiết bị đã được tạo bằng lệnh sau (lệnh này hoạt động khi đĩa không được sử dụng):
partprobe / dev / sdb
  • khi thiết bị thoát ra một cách vật lý, hãy tạo các đối tượng LVM theo thứ tự sau:
PVCreate / dev / sdb1
vgcreate vg_root / dev / sdb1
lvcreate -v -n lv_root vg_root -L 9G
  • một khi các đơn vị LV đã được tạo, hãy gán một FS và gắn nó vào hệ thống hiện tại.
mkfs -t ext4 / dev / vg_root / lv_root
mkdir / mnt / new_root /
gắn kết -t ext4 / dev / vg_root / lv_root / mnt / new_root /
  • nếu bạn không biết FS của phân vùng hiện tại là gì thì có thể tìm ra bằng các lệnh như:
df -lhT
mèo / etc / fstab
blkid
  • khi LV mới được gắn kết, chúng ta có thể tiến hành sao chép tất cả các tệp của hệ thống.
tìm / -xdev | cpio -pmvd / mnt / new_root /
  • một khi các tập tin được sao chép, chúng ta có thể tiến hành thay đổi "chroot" nhưng trước khi cho phép mount một số phân vùng:
cd / mnt / new_root /
gắn kết -t Proc / Proc
gắn kết -t sysfs / sys sys /
gắn kết --rbind / dev dev /
  • bây giờ hãy thay đổi chroot
chroot / mnt / new_root /
  • một khi chúng ta ở trong root mới sửa đổi tập tin:
vi / etc / fstab
  • để lại tệp gần như tương tự:
# UUID = 98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa / ext4 mặc định 1 1
/ dev / mapper / vg_root-lv_root / ext4 mặc định 1 1
  • Khi tệp đã được sửa đổi chính xác, hãy tạo một tệp trong thư mục gốc với tên "./autorelabel" chỉ trong trường hợp ure làm việc với SELINUX "thực thi" hoặc "cho phép".
chạm ./autorelabel
  • Bây giờ hãy rời khỏi môi trường chroot của / mnt / new-root
lối ra
  • Nếu các thay đổi được thực hiện dựa trên kịch bản ur, hãy thực hiện một trong những thay đổi cuối cùng, đó là sửa đổi tệp grub "/boot/grub/grub.conf", thêm một menu mới (không sửa đổi tùy chọn khởi động hiện tại của bạn cho đến khi mới thêm một hoạt động chính xác).
# trước
tiêu đề CentOS 6 (2.6.32-573.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root = UUID = 98dd25ba-feed-4ddb-80be-5e2d1ab2bdaard của bạn nd_NO_DM rhgb yên tĩnh
        initrd /initramfs-2.6.32-573.el6.x86_64.img

# hiện nay
tiêu đề CentOS 6 (2.6.32-573.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root = UUID = 98dd25ba-feed-4ddb-80be-5e2d1ab2bdaard của bạn nd_NO_DM rhgb yên tĩnh
        initrd /initramfs-2.6.32-573.el6.x86_64.img

tiêu đề CentOS 6 (2.6.32-573.el6.x86_64-lvroot)
        root (hd0,0)
        lmm lm
        kernel /vmlinuz-2.6.32-573.el6.x86_64 ro dolvm root = / dev / mapper / vg_root-lv_rootrd.lvm.lv = vg_root / lv_root LANG = en_US.UTF-8 = pc KEYTABLE = chúng tôi rhgb yên tĩnh
        initrd /initramfs-2.6.32-573.el6.x86_64.img

# dòng được thêm vào là 
tiêu đề CentOS 6 (2.6.32-573.el6.x86_64-lvroot)
        root (hd0,0)
        lmm lm
        kernel /vmlinuz-2.6.32-573.el6.x86_64 ro dolvm root = / dev / mapper / vg_root-lv_rootrd.lvm.lv = vg_root / lv_root LANG = en_US.UTF-8 = pc KEYTABLE = chúng tôi rhgb yên tĩnh
        initrd /initramfs-2.6.32-573.el6.x86_64.img
  • Khi các thay đổi trên tệp grub đã được thực hiện, hãy hoàn tất việc tạo lại tệp iso initrd mới:
cd / khởi động
cp -av initramfs - $ (uname -r) .img initramfs - $ (uname -r) .img.old
dracut -f
  • cuối cùng là khởi động lại:
sáng 6
# hoặc là
khởi động lại
  • Khi menu grub xuất hiện, chọn một cái mới được thêm vào "CentOS 6 (2.6.32-573.el6.x86_64-lvroot)" và xác nhận rằng nó đang hoạt động đúng.
  • Nếu hệ thống hoạt động bình thường và không sử dụng "/ dev / sda", nó có thể được gỡ bỏ và tách khỏi máy chủ hoặc máy chủ vật lý của bạn.
dd if = / dev / zero of = / dev / sda bs = 1
  • Độ dốc cuối cùng được đặt làm mục nhập mặc định, mục mới được thêm vào menu grub "/boot/grub/grub.conf":
# mặc định = 0
mặc định = 1

Hy vọng thông tin được cung cấp trước đây sẽ hữu ích cho ai đó.

cảm ơn trước,

Manuel Lazo


1

Anh ta có thể thiết lập một hệ thống cứu hộ trung gian vào phân vùng trao đổi (đã bị vô hiệu hóa trước đó) (công việc phá hủy dây thần kinh phải làm nếu bạn không có RAC trong máy) và làm việc từ đó. Ngoài ra, các công cụ thay đổi kích thước trực tuyến tồn tại cho một số hệ thống tệp nhất định, sau đó thu nhỏ phân vùng sau đó và khởi động lại là trường hợp của KWYD nhưng có thể.


Để mô tả hai ý tưởng thậm chí điên rồ hơn thậm chí sẽ hoạt động với chỉ một phân vùng trên đĩa: a) tạo một tệp trống lớn trên phân vùng gốc, đảm bảo rằng nó được phân bổ một cách liên tục, làm việc trên nó thông qua trình điều khiển loopback ... sau đó munge bảng phân vùng để có phân vùng bắt đầu tại khối vật lý đầu tiên của tệp đó. b) chroot (hoặc thậm chí p Pivot_root nếu vẫn có thể) tự mình vào một ramdisk và thiết lập một cơ sở và sao lưu ở đó ... nuke hệ thống tập tin gốc thực sự bên dưới bạn.
rackandboneman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.