আমার রুট ভলিউম চালু আছে এমন ভলিউম গ্রুপটির নাম পরিবর্তন করতে চাই। কিভাবে আমি এটি করতে পারব?
আমার রুট ভলিউম চালু আছে এমন ভলিউম গ্রুপটির নাম পরিবর্তন করতে চাই। কিভাবে আমি এটি করতে পারব?
উত্তর:
দ্রষ্টব্য: আপনার ডিস্ট্রো /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
পতাকা সরান ।
vgrename
তখনই বোঝাতে চেয়েছিলেন lvrename
এবং যেহেতু /boot/grub/grub.cfg
এন্ট্রি থেকে উত্পন্ন হয়েছে তাই সরাসরি সম্পাদনা করার পরিবর্তে আপনাকে নাম পরিবর্তন /etc/grub.d
করে চালানো দরকার update-grub
।
update-grub
রিবুটের আগে সঠিকভাবে চলতে পারে না - এটি /usr/sbin/grub-probe: error: failed to get canonical path of '/dev/mapper/ubuntu--vg-root'
আমার জন্য একটি ত্রুটির সাথে ব্যর্থ হয় । /boot/grub/grub.cfg
স্বয়ংক্রিয়ভাবে উত্পাদিত সিস্টেমগুলির জন্য , সম্ভবত সবচেয়ে নিরাপদ বিকল্পটি এই স্ক্রিপ্টের মতো ম্যানুয়ালি আপডেট করা হবে, তারপরে পুনরায় বুট করুন, তারপরে চালনা করুন update-grub
, আবার পুনরায় বুট করুন।
ফাইল /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
"
এটি আমাকে উবুন্টুতে আটকে দিয়েছে 18.04.1 এলটিএস - ভিজারনেম এবং বুটটি ব্যর্থ হয়েছিল। আমি আরও উল্লেখ করেছি যে শাটডাউন স্থগিত হয়েছে কারণ অদলবদল (পুরানো ভিগির নাম উল্লেখ করে) প্রচুর পরিমাণে ব্যর্থ হয়েছে।
আমি ভিজিটির নাম পরিবর্তন করে এটি কীভাবে initramfs প্রম্পটে lvm ব্যবহার করছে। উপরের নির্দেশাবলী অনুসারে এখনও "সঠিকভাবে" ভিজারনেমটি পুনরায় করা হয়নি।
নতুন নামকরণের পরে আপনাকে অবশ্যই উভয়ই সম্পাদনা করতে হবে /etc/fstab
এবং /boot/grub/grub.cfg
আপনার শিকড়ের কোনও রেফারেন্স এবং সম্ভবত আপনার অদলবদলের অবস্থানের জন্য নামের ব্যবহার আপডেট করতে হবে । /etc/initramfs-tools/conf.d/resume
খুব প্রয়োজন।
সুতরাং, এই কোডটি যুক্ত করুন:
sed -i "s/${vg}/${newvg}/g" /etc/initramfs-tools/conf.d/resume
এখানে একটি সংশোধিত সংস্করণ দেওয়া হয়েছে, ভিজি স্ট্রিং প্রতিস্থাপনের উপর ঠিক করুন এবং আপডেট হওয়া ফাইলগুলি মুদ্রণ করুন।
#!/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 থেকে "শান্ত স্প্ল্যাশ" মুছে ফেলা সহায়ক।
হোস্ট-নেম পরিবর্তন করার জন্য আমি স্ক্রিপ্টে কিছুটা পরিবর্তন করেছি।
#!/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
বুট মেনুতে উবুন্টু 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