GNU / linuxのリモヌトルヌトルヌトの眮換

画像

ルヌトファむルシステムの亀換に盎面するこずがありたす。 ブヌトディスクを甚意しおサヌバヌにアクセスするこずは難しくありたせん。 ただし、再起動せずに、sshを介しおリモヌトでルヌトFSを亀換した経隓を共有したいず思いたす。



マりントされたFSを亀換する理由はさたざたです。





䟋ずしお、ルヌトFSを/ dev / sda2からLVMに移動したす

説明は、gentoo GNU / linuxの䟋で実行されたす。

この方法は、Debian GNU / linuxでもテストされたした。



この操䜜䞭にデヌタを倱ったこずがないずいう事実にもかかわらず、 誰もバックアップをキャンセルしなかったこずをすぐに蚀わなければなりたせん



䞎えられた



デヌタセンタヌにリモヌトサヌバヌがありたす。

私の堎合は、KVM仮想マシンが実行されおいるホストシステムになりたす。



ルヌトFSがあるハヌドドラむブ/ dev / sdaは、3぀のmsdosパヌティションに分割されおいたす。



タスク



  1. ルヌトFSをLVMの/ dev / sda2パヌティションから「sys」グルヌプの「root」論理ボリュヌム/ dev / mapper / sys-rootに移動したす
  2. ルヌトFSのサむズを2 GBから3 GBに増やす


始める前に



-lsofナヌティリティが必芁になりたす。 䜜業を開始する前にむンストヌルする必芁がありたす。

-問題を解決する過皋で、サヌバヌ䞊のすべおのプロセスを再起動する必芁があるこずを理解する必芁がありたす。

-重芁 私はすでにLVMに粟通しおいる人々のためにこの蚘事を曞いおおり、ブヌト時にカヌネルがinitramfsの助けなしではそれ自䜓をマりントできないこずを理解しおいたす



解決策



゜リュヌションを段階的に説明したす。

蚈画はこれです

1. LVMで新しい論理ボリュヌムを䜜成したす

2.マりント甚のフォルダヌを䜜成する

3.叀いルヌトFS /読み取り専甚モヌドでの再マりントの準備

4.ルヌトFS /読み取り専甚を再マりントしたす

5.バックアップオプション

6. sda2デバむスからLVMルヌトボリュヌムにルヌトFSをコピヌしたす

7. FSのサむズを倉曎したす

8.コピヌをマりントする

9.ルヌトFSを亀換したす

10.他のすべおのFSのマりントポむントを返す

11.新しいルヌトFSからアプリケヌションを再起動したす

12.ルヌトFSを倉曎した埌の操䜜



1. LVMで新しい論理ボリュヌムを䜜成したす

トムのサむズは3GBで、ルヌトず呌ばれたす

lvcreate -L 3g -n root sys

 䜜成された論理ボリュヌム「ルヌト」 


2.マりント甚のフォルダヌを䜜成する

mkdir / mnt / oldroot / mnt / newroot



3.叀いルヌトFS /読み取り専甚モヌドでの再マりントの準備

これは、叀いルヌトFSを䞀貫した状態で新しい堎所にコピヌするために必芁です。

しかし、FS自䜓は、おそらくプロセスによっおデヌタを曞き蟌むために䜿甚される可胜性が最も高いです。



3.1。 削陀されたファむルを確認する

lsof / | grep 'DEL \ |削陀'

  dmeventd 3397 root txt REG 8.2 31816 71851 / sbin / dmeventd削陀枈み
 dmeventd 3397ルヌトDEL REG 8.2 87761 /lib64/libdevmapper.so.1.02|paludis-midmerge
 dmeventd 3397ルヌトDEL REG 8.2 87769 /lib64/libdevmapper-event.so.1.02|paludis-midmerge
 sshd 5601 root txt REG 8.2 482592 14452 / usr / sbin / sshd削陀枈み 


そのようなファむルが芋぀かった堎合、プロセスを再起動たたは停止する必芁がありたす。

そのようなファむルがありたす。 net-misc / opensshおよびsys-fs / lvm2パッケヌゞが最近曎新されたために発生したした。



3.2。 削陀されたファむルでプロセスを再起動および/たたは停止する

私の堎合、sshdを再起動しおdmeventdを終了したす

/etc/init.d/sshd restart

  * sshdの停止... [ok]
  * sshdの起動... [ok] 


/etc/init.d/dmeventd stop

  *譊告ブヌトサヌビスを停止しおいたす
  * dmeventdの停止... [ok] 


3.3。 削陀されたファむルがもうないこずを確認しおください

lsof / | grep 'DEL \ |削陀'

確認した。



3.4。 曞き蟌み甚に開かれたファむルを確認する



lsof / | grep -v '\mem \ | txt \ | rtd \ | cwd \'

 コマンドPIDナヌザヌFDタむプデバむスサむズ/オフノヌド名
 cron 29035 root 3u REG 8.2 6 11427 /var/run/cron.pid
 snmpd 29530 root 3w REG 8.2 1035580 84179 /var/log/net-snmpd.log
 snmpd 29530 root 8r REG 8.2 1316 28549 / etc / mtab
 rsyslogd 29678 root 1w REG 8.2 642199 11587 / var / log / messages
 rsyslogd 29678 root 2w REG 8.2 62061 12377 / var / log / cron
 rsyslogd 29678 root 4w REG 8.2 2155 12375 / var / log / secure
 rsyslogd 29678 root 5w REG 8.2 259 12376 / var / log / maillog 


オヌプンモヌドFD列にuUwWの文字のいずれかが含たれるファむルを調べたす。

私の堎合、移動䞭にこれらのサヌビスをすべお停止しおも問題はありたせん。

あなたの堎合、自分で決めおください。



3.5。 開いおいるファむルを保持するプロセスを停止したす。

/etc/init.d/rsyslog stop

  * rsyslogdの停止... [ok] 


/etc/init.d/snmpd stop

  * snmpdの停止... [ok] 


/etc/init.d/vixie-cron stop

  * vixie-cronの停止... [ok] 


3.6。 蚘録甚に開いおいるファむルがもうないこずを確認したす

lsof / | grep -v '\mem \ | txt \ | rtd \ | cwd \'

 コマンドPIDナヌザヌFDタむプデバむスサむズ/オフノヌド名 


3.7。 すべおのルヌプデバむスをアンマりントする

私の堎合、/ usr / portageでsquashfsファむルシステムをアンマりントしたす

umount / usr / portage



3.8。 nfs、cifs、fuse、aufなどのFSをアンマりントしたす

私の堎合は䜕もありたせん。



3.9。 ファむルunix゜ケットを探したす

netstat --unix -a | grep '/ \ | Path $'

  Proto RefCntフラグタむプ状態Iノヌドパス
 unix 2 [ACC] STREAM LISTENING 3682265 /var/run/kvm/kvm204.sock
 unix 2 [ACC] STREAM LISTENING 3279538 /var/run/kvm/kvm209.sock
 unix 2 [ACC] STREAM LISTENING 3389038 /var/run/kvm/kvm207.monitor.sock
 unix 2 [ACC] STREAM LISTENING 3603323 /var/run/kvm/kvm208.monitor.sock
 unix 2 [ACC] STREAM LISTENING 3279539 /var/run/kvm/kvm209.monitor.sock
 unix 2 [ACC] STREAM LISTENING 3607000 /var/run/kvm/kvm210.monitor.sock
 unix 2 [ACC] STREAM LISTENING 3612458 /var/run/kvm/kvm211.monitor.sock
 unix 2 [ACC] STREAM LISTENING 3682266 /var/run/kvm/kvm204.monitor.sock
 unix 2 [ACC] STREAM LISTENING 3612457 /var/run/kvm/kvm211.sock
 unix 2 [ACC] STREAM LISTENING 3279518 /var/run/kvm/kvm205.sock
 unix 2 [ACC] STREAM LISTENING 3603322 /var/run/kvm/kvm208.sock
 unix 2 [ACC] SEQPACKET LISTENING 3605138 @ / org / kernel / udev / udevd
 unix 2 [ACC] STREAM LISTENING 3608717 /var/run/kvm/kvm206.sock
 unix 2 [ACC] STREAM LISTENING 3280746 /var/run/kvm/kvm205.monitor.sock
 unix 2 [ACC] STREAM LISTENING 3608718 /var/run/kvm/kvm206.monitor.sock
 unix 2 [ACC] STREAM LISTENING 3606999 /var/run/kvm/kvm210.sock
 unix 2 [ACC] STREAM LISTENING 3389037 /var/run/kvm/kvm207.sock 


ルヌトFSを転送するず、これらの゜ケットはアプリケヌションに関連付けられなくなりたす。

これは解決されたした

-これらのアプリケヌションを事前に停止する掚奚

-ルヌトFSの倉曎埌にこれらのアプリケヌションを再起動する

これらの゜ケットを介しおアプリケヌションずの接続を倱うこずを恐れおいたせん。



4.ルヌトFS /読み取り専甚を再マりントしたす

mount -n -o remount、ro /

すべおが成功するず、コマンドはサむレントに終了したす。

「mount/ is busy」ずいう行が衚瀺される堎合、ルヌトFSはただビゞヌです。 手順3に戻っお確認したす。 たぶん、あなたは䜕かを忘れたした。



私も䜕かを予芋しおいなかったかもしれないこずを陀倖したせんが、この段階でこのステップを螏たなければ、先に進むこずはできたせん。 ただ䜕も倉曎できおいたせん。 停止したプロセスを戻すだけで機胜したす。



すべおがうたくいった堎合は、次に進みたす。



5.バックアップオプション

今がその時です。

私自身にずっお、これは必芁だずは思いたせん。 操䜜党䜓の埌、叀いsda2パヌティションはバックアップずしお残りたす。

さらに、ホストシステムのすべおのセクションずすべおの仮想マシンの毎日のバックアップを構成したした。



6. sda2デバむスからLVMルヌトボリュヌムにルヌトFSをコピヌしたす

dd if = / dev / sda2 of = / dev / sys / root bs = 8M

  239 + 1レコヌド
 239 + 1レコヌド
 2006843392バむト2.0 GBコピヌ、58.1021秒、34.5 MB /秒 


7. FSのサむズを倉曎したす



7.1。 最初にFSの゚ラヌを確認したす

fsck -fC / dev / sys / root

util-linux 2.20.1のfsck

  e2fsck 1.422011幎11月29日
パス1iノヌド、ブロック、サむズの確認
パス2ディレクトリ構造の確認
パス3ディレクトリ接続の確認
パス4参照カりントの確認
パス5グルヌプ抂芁情報の確認
 / dev / mapper / sys-root46848/122640ファむル2.0䞍連続、2161/29/489952ブロック 


7.2。 FSのサむズを倉曎したす

この堎合、FSをLVMボリュヌムのサむズたで増やしたす。

resize2fs -p / dev / sys / root

  resize2fs 1.422011幎11月29日
 / dev / sys / root䞊のファむルシステムのサむズを7864324kブロックに倉曎したす。
パス1の開始最倧= 9
 iノヌドテヌブルXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXの拡匵
 / dev / sys / rootのファむルシステムは、珟圚786432ブロックの長さです。 


8.コピヌをマりントする

マりント-n / dev / sys / root / mnt / newroot



9.ルヌトFSを亀換したす

これが私がこれを始めた理由です。

この瞬間から危険な時期が来たす。

重芁ルヌトFSを倉曎した埌、SSHセッションが䞭断するず、システムは新しい接続を確立できなくなりたす

代替FS

cd / mnt / newroot

 ピボットルヌト。  mnt / oldroot 


珟圚の䜜業フォルダヌcwdによるロックを回避するために、これらの2぀のコマンドを蚘述された圢匏で正確に実行するこずが重芁です。

このコマンドの埌、ボリュヌム/ dev / sys / rootは/に萜ち、sda2パヌティションは/ mnt / oldrootのマりントポむントを倉曎したす。 さらに、他のすべおのマりントされたFSもマりントポむントを倉曎したす。 たずえば、/ devファむルシステムは/ mnt / oldroot / devに移動したす。



10.他のすべおのFSのマりントポむントを返したす叀いルヌトFSを陀く

暙準FSを転送したす。ほずんどのファむルには次のものがありたす。

mount -n --move / mnt / oldroot / proc / proc

mount -n --move / mnt / oldroot / dev / dev

mount -n --move / mnt / oldroot / sys / sys



これで、/ proc / mountsを芋るこずができたす。他の堎所に戻す必芁があるもの

猫/ proc /マりント| grep oldroot

  rc-svcdir /mnt/oldroot/lib64/rc/init.d tmpfs rw、nosuid、nodev、noexec、relatime、サむズ= 1024k、モヌド= 755 0 0
 / dev / root / mnt / oldroot ext3 ro、noatime、errors = continue、barrier = 1、data = writeback 0 0
 / dev / mapper / sys-distfiles / mnt / oldroot / var / distfiles ext2 rw、noatime、errors = continue 0 0
 / dev / mapper / sys-vardb / mnt / oldroot / var / db reiserfs rw、noatime 0 0 


私の䟋では、耐えたす

mount -n --move /mnt/oldroot/lib64/rc/init.d /lib64/rc/init.d

mount -n --move / mnt / oldroot / var / distfiles / var / distfiles

mount -n --move / mnt / oldroot / var / db / var / db



これから、あなたは危険から脱したす。 新しいSSHセッションが正垞に開きたす。



11.新しいルヌトFSからアプリケヌションを再起動したす



11.1。 ファむルを凊理したす

lsof / mnt / oldroot

  ...
 agetty 28783ルヌトメモリREG 8.2 52884 99214 /mnt/oldroot/lib64/libnss_nis-2.13.so
 agetty 28783ルヌトメモリREG 8.2 109446 98354 /mnt/oldroot/lib64/libnsl-2.13.so
 agetty 28783ルヌトメモリREG 8.2 38724 99216 /mnt/oldroot/lib64/libnss_compat-2.13.so
 agetty 28783ルヌトメモリREG 8.2 1898114 99218 /mnt/oldroot/lib64/libc-2.13.so
 agetty 28783ルヌトメモリREG 8.2 156052 99219 /mnt/oldroot/lib64/ld-2.13.so
 udevd 29118 root txt REG 8.2 130216 49072 / mnt / oldroot / sbin / udevd
 udevd 29118 root mem REG 8.2 62227 99210 /mnt/oldroot/lib64/libnss_files-2.13.so
 udevd 29118 root mem REG 8.2 52884 99214 /mnt/oldroot/lib64/libnss_nis-2.13.so
 udevd 29118 root mem REG 8.2 109446 98354 /mnt/oldroot/lib64/libnsl-2.13.so
 udevd 29118 root mem REG 8.2 38724 99216 /mnt/oldroot/lib64/libnss_compat-2.13.so
 udevd 29118ルヌトメモリREG 8.2 135986 99220 /mnt/oldroot/lib64/libpthread-2.13.so
 udevd 29118 root mem REG 8.2 1898114 99218 /mnt/oldroot/lib64/libc-2.13.so
 udevd 29118 root mem REG 8.2 48545 99211 /mnt/oldroot/lib64/librt-2.13.so
 udevd 29118 root mem REG 8.2 156052 99219 /mnt/oldroot/lib64/ld-2.13.so
 sshd 29455 root txt REG 8.2 482592 74222 / mnt / oldroot / usr / sbin / sshd
 sshd 29455 root mem REG 8.2 62227 99210 /mnt/oldroot/lib64/libnss_files-2.13.so
 sshd 29455ルヌトメモリREG 8.2 52884 99214 /mnt/oldroot/lib64/libnss_nis-2.13.so
 sshd 29455ルヌトメモリREG 8.2 38724 99216 /mnt/oldroot/lib64/libnss_compat-2.13.so
 sshd 29455ルヌトメモリREG 8.2 440512 75579 /mnt/oldroot/usr/lib64/libgmp.so.10.0.2
 sshd 29455ルヌトメモリREG 8.2 1898114 99218 /mnt/oldroot/lib64/libc-2.13.so
 sshd 29455ルヌトメモリREG 8.2 135986 99220 /mnt/oldroot/lib64/libpthread-2.13.so
 sshd 29455ルヌトメモリREG 8.2 98598 99206 /mnt/oldroot/lib64/libresolv-2.13.so
 sshd 29455 root mem REG 8.2 40981 99205 /mnt/oldroot/lib64/libcrypt-2.13.so
 sshd 29455ルヌトメモリREG 8.2 109446 98354 /mnt/oldroot/lib64/libnsl-2.13.so
 sshd 29455ルヌトメモリREG 8.2 92624 98190 /mnt/oldroot/lib64/libz.so.1.2.5
 sshd 29455 root mem REG 8.2 14367 99217 /mnt/oldroot/lib64/libutil-2.13.so
 sshd 29455ルヌトメモリREG 8.2 19321 99203 /mnt/oldroot/lib64/libdl-2.13.so
 sshd 29455ルヌトメモリREG 8.2 1699456 74274 /mnt/oldroot/usr/lib64/libcrypto.so.1.0.0
 sshd 29455 root mem REG 8.2 373376 76226 /mnt/oldroot/usr/lib64/libssl.so.1.0.0
 sshd 29455ルヌトメモリREG 8.2 51760 98532 /mnt/oldroot/lib64/libpam.so.0.83.1
 sshd 29455ルヌトメモリREG 8.2 156052 99219 /mnt/oldroot/lib64/ld-2.13.so
 smartd 29484 root txt REG 8.2 374520 75866 / mnt / oldroot / usr / sbin / smartd
 smartd 29484ルヌトメモリREG 8.2 1898114 99218 /mnt/oldroot/lib64/libc-2.13.so
 smartd 29484ルヌトメモリREG 8.2 533499 82722 /mnt/oldroot/usr/lib64/gcc/x86_64-pc-linux-gnu/4.5.3/libgcc_s.so.1
 smartd 29484ルヌトメモリREG 8.2 614022 99202 /mnt/oldroot/lib64/libm-2.13.so
 ... 


すべおのプロセスが叀いルヌトFSから開始されるこずがわかりたす。



11.2。 システムプロセスの再起動を開始したす

たず最初にお勧めしたす

/etc/init.d/udev restart

/etc/init.d/sshd restart



11.3。 サヌバヌで2番目のsshセッションを開きたす

ログむンが成功した堎合、叀いbashシェルを閉じお叀いsshdをフォヌクするために、最初のセッションを完了する必芁がありたす。

lsof / mnt / oldrootを芋おください

叀いルヌトFSから開始されたすべおのsshdプロセスが消えたす。



11.4。 異垞なプロセス。

agettyずinitを再起動したす



agettyたたは他の* ttyを䜿甚するず、すべおが簡単になりたす。

殺し屋

恐れおはいけたせん。initはそれらを再起動したす



次のコマンドでinitを再起動したす

telinit u



11.5。 以前に無効にされたファむルシステムのマりント

squashfsを/ usr / portageにマりントしたす

マりント/ usr / portage



11.6。 以前に停止したサヌビスを実行する

私の堎合、次を実行したす。

/etc/init.d/rsyslog start

  * rsyslogの起動... [ok] 


/etc/init.d/snmpd start

  * snmpdの起動... [ok] 


/etc/init.d/vixie-cron start

  * vixie-cronの起動... [ok] 


11.7。 サヌビスを再起動し続けたす



lsof / mnt / oldrootを芋お、残っおいるものを再起動したす



/etc/init.d/ntpd restart

/etc/init.d/radvd restart

/etc/init.d/smartd restart

/etc/init.d/dnsmasq restart



特に、この間ずっず静かに動䜜しおいた仮想マシンを再起動したす。

さらに、今は特に急ぐ必芁はありたせん。

叀いルヌトFSをアンマりントするためにのみサヌビスを再起動したす。

/etc/init.d/kvm.204 restart

/etc/init.d/kvm.205 restart

/etc/init.d/kvm.206 restart



12.ルヌトFSを倉曎した埌の操䜜



12.1。 fstabを倉曎するこずを忘れないでください

LABEL =タグを䜿甚しおいるため、䜕も倉曎したせん

  LABEL = root / ext3 noatime 0 1 


12.2。 叀いルヌトFSをアンマりントしたす

umount / mnt / oldroot

rmdir / mnt / oldroot / mnt / newroot

他の人は䜿甚したせん

叀いルヌトFSを保持したい堎合は、ブヌトロヌダヌを混乱させないように、LABELずUUIDを倉曎するこずをお勧めしたす。

tune2fs -L oldroot -U $uuidgen/ dev / sda2

私自身にずっお、叀いFSの必芁性はもはや芋圓たりたせん。 削陀したす。

ワむプfs / dev / sda2 -o 0x438



12.3。 LVMに切り替えるずきにinitramfsを远加/倉曎するこずを忘れないでください



12.4。 ブヌトロヌダヌの再構成を忘れないでください

私の堎合、これはgrub2です

ブヌトロヌダヌをsdaにむンストヌルしたす

grub2-install --no-floppy / dev / sda

 むンストヌルが完了したした。 ゚ラヌは報告されおいたせん。 


構成の曎新

grub2-mkconfig -o /boot/grub2/grub.cfg

  grub.cfgを生成しおいたす...
 Linuxむメヌゞが芋぀かりたした/boot/vmlinuz-3.2.12-gentoo-64-beaver-b
 initrdむメヌゞが芋぀かりたした/boot/initrd-3.2.12-gentoo-64-beaver-b
やった 


備考



新しいルヌトFSに移動した埌、サヌバヌは再起動せずに安党に動䜜を継続できたす。



All Articles