আপনি কীভাবে এলভিএম এর মূল ভলিউম যুক্ত ভলিউম গোষ্ঠীর নাম পরিবর্তন করবেন?


20

আমার রুট ভলিউম চালু আছে এমন ভলিউম গ্রুপটির নাম পরিবর্তন করতে চাই। কিভাবে আমি এটি করতে পারব?


শুধু কৌতূহলী: আমি কেন এটি করতে চাই?
গুনবার্ট

2
আমার ব্যবহারের কেসটি হ'ল আমার কাছে একটি ভিএমওয়্যার টেম্পলেট রয়েছে যা আমি হোস্টনাম "টেম্পলেট" দিয়ে ইনস্টল করেছি। আমি একবার এই টেমপ্লেটটি স্থাপন করি, আমি বরং এই সমস্ত মেশিনের জন্য ভ্যাগনামটি "টেম্পলেট-ভিজি" না হয়ে থাকি। সাধারণ ধারণাটি ধরে রেখে যে ভগ্ন নামটি হোস্টনামের সাথে সম্পর্কিত, আমার কাছে টেমপ্লেটের নামটি হোস্টনামের সাথে ভিগির নতুন নামকরণের জন্য আমার সেটআপ স্ক্রিপ্ট রয়েছে। এটি আমাকে সহজেই আশ্বাস দেওয়ার অনুমতি দেয় যে আমি সঠিক ভিজিভিতে কাজ করছি এবং কোনওভাবে ভুল ssh অধিবেশনে নয়।
ফ্লিকফ্লিফলি

উত্তর:


25

দ্রষ্টব্য: আপনার ডিস্ট্রো /boot/grub/grub.cfg সম্পাদনা নিরুৎসাহিত করতে পারে। যদি এটি হয় তবে এই স্ক্রিপ্টটি একটি খারাপ ধারণা হতে পারে। পর্যায়ক্রমে, আপনি এটি ঠিক করতে গ্রাব-এমকনফিগ চালাতে সক্ষম হতে পারেন। আমি সেই ডিস্ট্রোগুলিতে পরীক্ষা করিনি, সুতরাং আপনার পরিস্থিতি পরীক্ষা করে দেখুন।

প্রথমত, আপনাকে ভলিউম গোষ্ঠীর নামের এটিতে ড্যাশ থাকতে পারে তা জানতে হবে। যদি এটি হয় তবে / ডি / ম্যাপার / রেফারেন্সের যে কোনও ব্যবহারের চেয়ে দুটি ড্যাশ থাকা দরকার। ১.0.০৪-তে, এটি "-vg" নামের সাথে যুক্ত হওয়ার চেয়ে ডিফল্ট হয় তাই এটি ধরে নেওয়া উচিত।

দ্বিতীয়ত, আপনার জানা উচিত যে এটির সাথে জড়িত হওয়ার ফলে আপনার সিস্টেমটি চালনাযোগ্য হতে পারে এবং রেসকিউ ডিস্ক থেকে বুট করতে এবং ডাউনটাইমের ফলে স্টাফগুলি ঠিক করতে পারে। (ওরফে: উত্পাদনে এটি করবেন না ))

প্রকৃত নাম ব্যবহার করতে lvrename oldname newname

নতুন নামকরণের পরে আপনাকে অবশ্যই উভয়ই সম্পাদনা করতে হবে /etc/fstabএবং /boot/grub/grub.cfgআপনার শিকড়ের কোনও রেফারেন্স এবং সম্ভবত আপনার অদলবদলের অবস্থানের জন্য নামের ব্যবহার আপডেট করতে হবে ।

অধিকন্তু, সমস্ত কার্নেলের জন্য initramfs আপডেট করতে আপনাকে এই কমান্ডটি চালাতে হবে।

update-initramfs -c -k all

কোনও নতুন টেম্পলেট স্থাপন করার সময় আমি এটি হ্যান্ডেল করতে নিম্নলিখিত স্ক্রিপ্টটি ব্যবহার করি। আবার, আপনার ডাউনটাইমের জন্য উচ্চ সহনশীলতা না থাকলে উত্পাদনে এটি করবেন না।

#!/bin/bash

# Must be run with root permissions 
# sudo will be sufficient

if [ "$(id -u)" != "0" ]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

#Ask for new hostname $newhost
read -p "Enter new hostname: "
newhostname=$REPLY
oldhostname=$(cat /etc/hostname)

echo "Changing LVM names"
# ${var//-} syntax removes all dashes from the name simplifying the 
# requirement to use a double-dash in some places to escape the dash
newvg=${newhostname//-}

# Find the volume group that root is in 
vg=`lvdisplay -C|awk '$1=="root" {print $2}'`
if [[ ${vg} == *"-"* ]]; then
    #has dashes in current name
    vgrename ${vg} ${newhostname//-}
    vg=`echo $vg|sed "s/-/--/g"`
    sed -i "s/${vg}/${newvg}/g" /etc/fstab
    sed -i "s/${vg}/${newvg}/g" /boot/grub/grub.cfg
  else
    #no dashes in current name
    vgrename ${vg} ${newvg}
    sed -i "s/${vg}/${newvg}/g" /etc/fstab
    sed -i "s/${vg}/${newvg}/g" /boot/grub/grub.cfg
fi

update-initramfs -c -k all

এই স্ক্রিপ্টের আপনার যদি কোনও উন্নতি হয় তবে দয়া করে ভাগ করুন। আমি সর্বদা উন্নত করার উপায় এবং বিভিন্ন প্রান্তের ক্ষেত্রে অ্যাকাউন্ট দেওয়ার জন্য সন্ধান করি।


আপনি যদি sed -iকোনও ইনপুট ফাইল ছাড়াই চালনা করেন তবে এটির ত্রুটি sed: no input files-iপতাকা সরান ।
wjandrea

আহ ঠিক আছে. এটা বোধগম্য. ভাবছি যদি আমার সংস্করণের সংস্করণটি এটিকে অন্যভাবে পরিচালনা করে। এছাড়াও, দেখে মনে হচ্ছে @ ডিগো সোজা পুরোপুরি অন্য কোনও মন্তব্যে সেড না করে এটিকে টেনে নামিয়েছে।
ফ্লিকফল্লি

2
আমার বিশ্বাস আপনি vgrenameতখনই বোঝাতে চেয়েছিলেন lvrenameএবং যেহেতু /boot/grub/grub.cfgএন্ট্রি থেকে উত্পন্ন হয়েছে তাই সরাসরি সম্পাদনা করার পরিবর্তে আপনাকে নাম পরিবর্তন /etc/grub.dকরে চালানো দরকার update-grub
এরিক স্ট্রিপার

না, আমি ভলিউম গ্রুপ বোঝাতে চাইছি। এছাড়াও, সম্ভবত আপনার ডিস্ট্রো গ্রাব কনফিগারেশনে খনি থেকে আলাদা।
ফ্লিকফার্লি

3
দেখে মনে হচ্ছে update-grubরিবুটের আগে সঠিকভাবে চলতে পারে না - এটি /usr/sbin/grub-probe: error: failed to get canonical path of '/dev/mapper/ubuntu--vg-root'আমার জন্য একটি ত্রুটির সাথে ব্যর্থ হয় । /boot/grub/grub.cfgস্বয়ংক্রিয়ভাবে উত্পাদিত সিস্টেমগুলির জন্য , সম্ভবত সবচেয়ে নিরাপদ বিকল্পটি এই স্ক্রিপ্টের মতো ম্যানুয়ালি আপডেট করা হবে, তারপরে পুনরায় বুট করুন, তারপরে চালনা করুন update-grub, আবার পুনরায় বুট করুন।
মাইকেল ফারথ

1

ফাইল /boot/grub/grub.cfgম্যানুয়ালি সম্পাদনা করা উচিত নয়।

নীচে ফাইল শিরোনাম রয়েছে:

"
 DO NOT EDIT THIS FILE

 It is automatically generated by grub-mkconfig using templates
 from /etc/grub.d and settings from /etc/default/grub

BEGIN /etc/grub.d/00_header
"

হ্যাঁ, আমার উত্তরটি কিছুটা পুরনো হয়ে যাচ্ছে এবং এর জন্য আমার ব্যবহারের ক্ষেত্রে এখন কিছুই আসবে না। আপনি এটি আপ টু ডেট আনতে শিখেন এমন কোনও অবদানের জন্য আপনাকে উত্সাহিত করব। আপনি এটিতে কোন বিতরণ এবং সংস্করণটি দেখছেন?
ফ্লিকফার্লি

1

এটি আমাকে উবুন্টুতে আটকে দিয়েছে 18.04.1 এলটিএস - ভিজারনেম এবং বুটটি ব্যর্থ হয়েছিল। আমি আরও উল্লেখ করেছি যে শাটডাউন স্থগিত হয়েছে কারণ অদলবদল (পুরানো ভিগির নাম উল্লেখ করে) প্রচুর পরিমাণে ব্যর্থ হয়েছে।

আমি ভিজিটির নাম পরিবর্তন করে এটি কীভাবে initramfs প্রম্পটে lvm ব্যবহার করছে। উপরের নির্দেশাবলী অনুসারে এখনও "সঠিকভাবে" ভিজারনেমটি পুনরায় করা হয়নি।


0

নতুন নামকরণের পরে আপনাকে অবশ্যই উভয়ই সম্পাদনা করতে হবে /etc/fstabএবং /boot/grub/grub.cfgআপনার শিকড়ের কোনও রেফারেন্স এবং সম্ভবত আপনার অদলবদলের অবস্থানের জন্য নামের ব্যবহার আপডেট করতে হবে । /etc/initramfs-tools/conf.d/resumeখুব প্রয়োজন।

সুতরাং, এই কোডটি যুক্ত করুন:

sed -i "s/${vg}/${newvg}/g" /etc/initramfs-tools/conf.d/resume

উবুন্টুতে আমার এটি করার দরকার ছিল না। 'update-initramfs -c -k all' যথেষ্ট ছিল। আপনি কোন ডিসট্রো ব্যবহার করছেন যা এই প্রয়োজনটি দেখিয়েছে? এটির কি আপডেট-থ্রোরামস সরঞ্জাম নেই? আমি স্ক্রিপ্টটি চালানোর সাথে সাথেই একটি রিবুট করি যা এতে অন্তর্ভুক্ত থাকে যাতে এটি আমার বিভিন্ন ফলাফলের একটি কারণও হতে পারে।
ফ্লিকফ্লিফ্লি

0

এখানে একটি সংশোধিত সংস্করণ দেওয়া হয়েছে, ভিজি স্ট্রিং প্রতিস্থাপনের উপর ঠিক করুন এবং আপডেট হওয়া ফাইলগুলি মুদ্রণ করুন।

#!/bin/bash

# Must be run with root permissions
# sudo will be sufficient
if [ "$(id -u)" -ne 0 ]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

# Ask for new hostname $newhost
read newhostname -p "Enter new hostname: "
#oldhostname=$(cat /etc/hostname)

echo "Changing LVM names"
# ${var//-} syntax removes all dashes from the name simplifying the
# requirement to use a double-dash in some places to escape the dash
newvg=${newhostname//-}

# Find the volume group that root is in
vg=$(lvdisplay -C | awk '$1=="root" {print $2}')
echo "old vg name: " $vg
echo "new vg name: " $newvg
if [[ ${vg} == *"-"* ]]; then
    # has dashes in current name
    vgrename ${vg} ${newhostname//-}
    vg=${vg//-/--}
    sed -i "s/${vg}/${newvg}/g" /etc/fstab
    sed -i "s/${vg}/${newvg}/g" /boot/grub/grub.cfg
    sed -i "s/${vg}/${newvg}/g" /etc/initramfs-tools/conf.d/resume
else
    # no dashes in current name
    vgrename ${vg} ${newvg}
    sed -i "s/${vg}/${newvg}/g" /etc/fstab
    sed -i "s/${vg}/${newvg}/g" /boot/grub/grub.cfg
    sed -i "s/${vg}/${newvg}/g" /etc/initramfs-tools/conf.d/resume
fi

#check files
echo fstab update:
grep ${newvg} /etc/fstab

echo grub.cfg update:
grep ${newvg} /boot/grub/grub.cfg

echo resume update:
grep ${newvg} /etc/initramfs-tools/conf.d/resume

update-initramfs -c -k all

এই স্ক্রিপ্টটি ব্যবহার করার সময়, ম্যাপিংগুলি "থামাতে" চেষ্টা করার কারণে মেশিনটি সঠিকভাবে বন্ধ হতে পারে না। আপনার কনফিগারেশনের উপর নির্ভর করে এটি এমনকি মনে হতে পারে যেমন মেশিনটি বুট অবস্থায় রয়েছে যদিও বাস্তবে এটি প্রথমে বন্ধও নয়।

আপনি বার্তাটি দেখতে পাওয়ায় GRUB_CMDLINE_LINUX_DEFAULT থেকে "শান্ত স্প্ল্যাশ" মুছে ফেলা সহায়ক।


0

হোস্ট-নেম পরিবর্তন করার জন্য আমি স্ক্রিপ্টে কিছুটা পরিবর্তন করেছি।

#!/bin/bash

# Must be run with root permissions
# sudo will be sufficient

if [ "$(id -u)" != "0" ]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

#Ask for new hostname $newhost
read -p "Enter new hostname: "
newhostname=$REPLY
oldhostname=`cat /etc/hostname`

# ${var//-} syntax removes all dashes from the name simplifying the
# requirement to use a double-dash in some places to escape the dash
newvg=${newhostname//-}

# Find the volume group that root is in
vg=`lvdisplay -C|awk '$1=="root" {print $2}'`
echo
echo "old hostname          : " $oldhostname
echo "old vg name           : " $vg
echo "new hostname / vg name: " $newvg

echo
echo "Changing LVM names..."
vgrename ${vg} ${newvg}
if [[ ${vg} == *"-"* ]]; then
    #has dashes in current name
    vg=`echo $vg|sed "s/-/--/g"`
fi
sed -i "s/${vg}/${newvg}/g" /etc/fstab
sed -i "s/${vg}/${newvg}/g" /boot/grub/grub.cfg
sed -i "s/${vg}/${newvg}/g" /etc/initramfs-tools/conf.d/resume

echo
echo "Changing Hostname..."
sed -i "s/${oldhostname}/${newvg}/g" /etc/hostname
sed -i "s/${oldhostname}/${newvg}/g" /etc/hosts

#check files
echo
echo fstab update:
grep ${newvg} /etc/fstab

echo grub.cfg update:
grep ${newvg} /boot/grub/grub.cfg

echo resume update:
grep ${newvg} /etc/initramfs-tools/conf.d/resume

echo hostname update:
grep ${newvg} /etc/hostname

echo hosts update:
grep ${newvg} /etc/hosts

update-initramfs -c -k all

0

বুট মেনুতে উবুন্টু 18 (এবং সম্ভবত অন্যরা) তে সম্পাদনা প্রয়োজন। সুতরাং - কেবলমাত্র একটি ভিজি নাম পরিবর্তন করতে এবং নামটিতে কোনও ড্যাশ ব্যবহার সংরক্ষণের জন্য সরলীকৃত:

#!/bin/bash

oldvg="ubu16svr-vg"
oldvgdash="ubu16svr--vg"
newvg="ubusvr-vg"
newvgdash="ubusvr--vg"

if [ "$(id -u)" != "0" ]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

vgrename ${oldvg} ${newvg}
sed -i "s/${oldvg}/${newvg}/g" /etc/fstab
sed -i "s/${oldvgdash}/${newvgdash}/g" /etc/fstab
sed -i "s/${oldvg}/${newvg}/g" /boot/grub/grub.cfg
sed -i "s/${oldvgdash}/${newvgdash}/g" /boot/grub/grub.cfg
sed -i "s/${oldvg}/${newvg}/g" /boot/grub/menu.lst
sed -i "s/${oldvgdash}/${newvgdash}/g" /boot/grub/menu.lst
sed -i "s/${oldvg}/${newvg}/g" /etc/initramfs-tools/conf.d/resume
sed -i "s/${oldvgdash}/${newvgdash}/g" /etc/initramfs-tools/conf.d/resume
update-initramfs -c -k all
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.