요즘 싱글코어 PC를 사용하시는 분은 없을 겁니다. 개인 개발 목적으로 Ubuntu나 Centos를 설치해서 사용하시는 분들이 많으실 건데요. 대부분 분들이 개발용 linux를 설치 할때 그냥 partitioning을 합니다. 그럼 왜 partitioning을 할까요? partition을 나누어 하드를 사용하면 어떤 이점이 있을까요? 저는 개인적으로 오라클 클라우드에 Centos VM을 가지고 있습니다. 무료 다보니 용량이 간당 간당 합니다. 루트공간이 거의 다차서 언제 멈출지 모릅니다. 제가 처음 이 직업을 선택했을 때가 딱 이랬습니다. 하루에도 몇번씩 서버를 리부팅해야 했습니다. process폭주 때문입니다. 지금은 process가 폭주해도 시스템이 다운되지 않습니다.
그 이유는 첫째로 거의 모든 CPU가 멀티코어에 멀티쓰레드를 지원합니다. 둘째는 그 당시 ISA 방식의 장치들이 PCI방식을 사용함으로 인해서 인터럽터를 덜 발생하게 되었습니다. 즉 OS의 발전이 아니라 하드웨어의 발전으로 인해 지금은 시스템이 멈추지 않습니다.
그런데 process 폭주시는 리눅스 계열 OS는 하드에 자신의 분신을 만든 다음 실행되기 때문에 root공간이 부족하게 되면 더 이상 프로세스를 생성하지 못하는 문제가 생깁니다. 반대의 경우도 발생하게 되죠. root공간이 꽉 차게 되면 신생 프로세스는 생성할 수 없습니다. 이 경우는 쓰레드도 마찬가지로 시스템이 폭주하는게 아닌 아이들한 상태가 발생하게 됩니다.
만약 혼자서 사용하는 개발용 PC라면 오히려 partition을 만드는게 독이 될 수도 있습니다. 그리고 기술의 발전으로 network cloud file system 제품이 많이 등장했습니다 .이 경우는 팀에서 사용하는 서버라고 해도 partition을 만드는게 좋지는 않을 것 같습니다. 예를 들면 VirtualBox에 설치된 linux의 경우 하드디스크가 부족하면 자동으로 extention이 발생합니다. 그렇지만 partitioning을 해 놓은 공간은 확장되지 않습니다.
결국 root공간이 부족하게 되어 시스템이 멈추는 경우가 발생할 수 있는 거죠. 그런것 처럼 요즘은 hypernation OS가 있습니다. OS위의 OS라고 해야 하나요? 여러 OS에서 값비싼 H/W를 공유하는 목적의 OS이죠. 그런 시스템도 partition을 나누는게 좋지는 않습니다.
그래서 결론은 구식 개발 시스템 즉 전형적인 WEB/WAS환경의 서버 개발의 팀 미션이면 /usr와 /var와 root정도는 partition을 나누는게 좋지만 그런 시스템이 아니라면 지금은 partition을 나누는 것은 별로 좋아 보이지 않습니다.
점점 더 하드웨어가 발전하게 되면 시스템을 종료하지 않고도 하드디스크를 (raid 시스템과는 다릅니다.) 늘리는 일이 일상이 될것 같습니다.
지금의 cloude 환경을 한번 생각 해 보시기 바랍니다. 수억명의 유저가 동시에 사용하고 있는 시스템의 하드 디스크를 늘리자고 시스템을 종료하고 하드 디스크를 늘리는 작업을 한다면 그런 cloude 시스템을 사용할까요?
'리눅스' 카테고리의 다른 글
WSL-우분투와 윈도우의 만남 (0) | 2023.01.01 |
---|---|
WSL- 네트워크 범위 (0) | 2022.12.23 |
WSL - WSL의 시작 (0) | 2022.12.23 |